Skip to main content

๐Ÿ“‹ Unit 4 โ€” Register Miner di Subnet Testnet

Goal Unit Ini

Di akhir unit ini kamu akan:

  • Berhasil register hotkey di NetUID 1 testnet menggunakan TAO testnet
  • Punya UID (nomor posisi miner di subnet)
  • Bisa verifikasi status via metagraph (di testnet: scripts/metagraph.py; di mainnet: btcli subnets metagraph)
Prasyarat
  • โœ… Unit 3 selesai โ€” wallet & hotkey siap, TAO testnet ada
  • โœ… venv aktif: source ~/bittensor-env-v10/bin/activate
  • โœ… Koneksi internet stabil

๐ŸŒ Konfigurasi Testnetโ€‹

Sebelum register, set default network ke testnet supaya semua command btcli otomatis pakai testnet:

btcli config set --network test

Verifikasi konfigurasi:

btcli config get
# Output: network: test
Alternatif: Flag Per Command

Kalau tidak mau set global config, tambah --network test di setiap command btcli.


๐Ÿ“Š Step 1 โ€” Lihat Subnet Testnet yang Tersediaโ€‹

btcli subnets list Juga Gagal di Testnet (per Juni 2026) โ€” Pakai Script SDK

btcli subnets list --network test kena error yang sama (Storage function "Swap.AlphaSqrtPrice" not found) karena runtime testnet belum sinkron dengan btcli terbaru โ€” sama seperti register & balance. Untuk melihat daftar subnet testnet, pakai script SDK dari repo fork:

# Clone repo dulu kalau belum (dipakai lagi di Unit 5)
cd ~ && git clone https://github.com/Ethereum-Jakarta/bittensor-subnet-template-v10.git
cd bittensor-subnet-template-v10

# Daftar semua subnet + tingkat keterisian (used/max), urut netuid
python scripts/subnets.py

# Hanya subnet yang MASIH ada slot kosong, paling kosong di atas
python scripts/subnets.py --open

# Cek satu subnet: penuh atau tidak?
python scripts/subnets.py --netuid 1

Script ini bahkan lebih informatif dari btcli subnets list: ia menampilkan used/max UID tiap subnet, jadi kamu langsung tahu mana yang masih punya slot. btcli subnets list tetap normal untuk mainnet.

Untuk mainnet (atau begitu runtime testnet sinkron lagi), btcli tetap berlaku:

btcli subnets list --network test

Output menampilkan tabel semua subnet aktif (per 2026 ada ratusan subnet di testnet).

NetUID 1 Sering Penuh

NetUID 1 adalah subnet learning klasik, tapi sekarang sering penuh (256/256 slot terpakai) โ€” python scripts/subnets.py --netuid 1 akan menunjukkannya. Registrasi masih diizinkan, tapi kamu akan mendepak miner skor terendah dan bersaing slot. Untuk latihan, lebih nyaman pilih subnet testnet lain yang slotnya masih kosong โ€” jalankan python scripts/subnets.py --open, ambil salah satu netuid dengan banyak slot kosong, lalu pakai netuid itu secara konsisten di semua perintah berikutnya (register, miner, metagraph).

Biaya Registrasi

Biaya register di subnet yang sudah ada (recycle TAO) akan ditampilkan otomatis saat kamu jalankan btcli subnet register di Step 2 โ€” btcli akan tanya konfirmasi dengan angka biaya sebelum lanjut.


๐Ÿ”‘ Pre-Check โ€” Verifikasi Wallet & Hotkeyโ€‹

Sebelum register, pastikan wallet dan hotkey kamu benar-benar ada:

btcli wallet list

Output yang diharapkan:

Wallets
โ””โ”€โ”€ mywallet
โ””โ”€โ”€ miner1

Kalau hotkey tidak muncul, buat dulu:

btcli wallet new_hotkey --wallet-name mywallet --hotkey miner1
Sesuaikan Nama Hotkey

Kalau kamu punya hotkey dengan nama berbeda (misal miner_testnet), ganti miner1 di semua command berikutnya dengan nama hotkey kamu yang sebenarnya.


๐Ÿ”‘ Register Miner (TAO Burn)โ€‹

Testnet btcli Sedang Bermasalah (per Juni 2026) โ€” Pakai Script SDK

Chain testnet sekarang menjalankan runtime yang tidak terbaca oleh btcli terbaru. Perintah btcli subnet register --network test (juga wallet balance & metagraph di testnet) gagal dengan:

โŒ An unknown error has occurred: Storage function "Swap.AlphaSqrtPrice" not found

Ini bukan salah instalasimu โ€” btcli tetap normal di mainnet dan untuk operasi wallet lokal (wallet create/list). SDK (bittensor 10.x) tetap jalan di testnet, jadi untuk register di testnet pakai script SDK dari repo fork:

# Clone repo dulu kalau belum (dipakai lagi di Unit 5)
cd ~ && git clone https://github.com/Ethereum-Jakarta/bittensor-subnet-template-v10.git
cd bittensor-subnet-template-v10

# Register via SDK (butuh TAO testnet di coldkey; akan minta password coldkey)
python scripts/register.py --wallet.name mywallet --wallet.hotkey miner1 --netuid 1

Perintah btcli subnet register di bawah tetap valid untuk mainnet, dan akan berfungsi lagi di testnet begitu runtime testnet sinkron dengan btcli.

btcli subnet register \
--netuid 1 \
--wallet-name mywallet \
--hotkey miner1 \
--network test

Prompt konfirmasi akan muncul:

Your balance is ฯ„ 1.000000
The cost to register by recycle is ฯ„ 0.000100
Do you want to continue? [y/n]: y

Ketik y dan tekan Enter. Tunggu beberapa detik hingga konfirmasi muncul.

Output sukses:

โœ… Registered hotkey miner1 on netuid 1
UID: 42 (contoh โ€” angka kamu beda)

Catat UID kamu โ€” angka ini adalah posisi miner kamu di subnet.

Registrasi = Recycle TAO (era dTAO)

Sejak dTAO (Feb 2025), cara standar mendaftarkan hotkey di semua subnet adalah recycle/burn: TAO yang kamu pakai untuk register akan dibakar (recycle), bukan dikunci, dan tidak dikembalikan saat deregister. POW registration (pow_register) sudah bukan jalur umum lagi.

Pastikan kamu sudah punya TAO testnet sebelum lanjut (lihat Unit 3).


โœ… Step 2 โ€” Verifikasi Registrasiโ€‹

Setelah register, verifikasi dengan melihat metagraph.

btcli subnets metagraph Juga Gagal di Testnet โ€” Pakai Script SDK

Sama seperti subnets list, btcli subnets metagraph --network test kena error Swap.AlphaSqrtPrice di testnet. Pakai script SDK metagraph.py (cetak tabel neuron yang sama, plus bisa menandai UID kamu):

# Tandai baris UID kamu di metagraph netuid 1
python scripts/metagraph.py --netuid 1 --wallet.name mywallet --wallet.hotkey miner1

# Atau cek cepat status registrasi saja (UID + balance)
python scripts/status.py --wallet.name mywallet --wallet.hotkey miner1 --netuid 1

Output metagraph.py (baris kamu ditandai <-- you):

Metagraph netuid 1 on test โ€” 256 neurons (block 7399241)
serving axons: 84/256 validator permits: 127/256 your UID: 87

UID STAKE TRUST INCENT DIVID EMISSION VP ACT UPD AXON HOTKEY
------------------------------------------------------------------------------------------
87 0.0000 0.000 0.0000 0.0000 0.000000 ยท Y 19 โ€” 5GNaMz7WkBโ€ฆ <-- you

Penjelasan kolom: UID = posisimu, STAKE = stake alpha, VP = punya validator permit?, ACT = active, UPD = berapa block sejak update terakhir, AXON = โ€” artinya miner belum serving (akan terisi ip:port begitu neurons/miner.py jalan di Unit 5).

Output status.py:

network        : test  (block 7399227)
registered on netuid 1: True
UID : 87
subnet size : 256 neurons

Untuk mainnet (atau begitu runtime testnet sinkron lagi), btcli tetap berlaku:

btcli subnets metagraph --netuid 1 --network test
btcli wallet overview --wallet-name mywallet --network test

โณ Immunity Periodโ€‹

Setelah register, miner kamu masuk immunity period (~24 jam di mainnet, lebih singkat di testnet). Selama periode ini:

  • Miner tidak akan di-deregister meski skor 0
  • Bisa dipakai untuk setup dan tes miner tanpa risiko kehilangan posisi
  • Setelah immunity habis, miner dengan skor terlalu rendah bisa didorong keluar oleh miner baru yang mendaftar
Testnet Lebih Lenient

Di testnet, immunity period lebih pendek dan konsekuensi deregistrasi tidak seserius mainnet (tidak ada TAO sungguhan yang dipertaruhkan).


๐Ÿ”„ Alur Registrasiโ€‹


๐Ÿ› Troubleshooting Registrasiโ€‹

ErrorPenyebabSolusi
Insufficient balance for registrationTAO testnet kurangMinta lebih dari faucet (Unit 3)
Hotkey already registeredHotkey sudah punya UID di subnet iniCek dengan btcli wallet overview --network test
Subnet does not existNetUID salah atau subnet belum aktifCek btcli subnets list --network test
hotkey 'miner1' does not existHotkey belum dibuat atau nama salahJalankan btcli wallet list untuk cek nama hotkey yang ada, lalu buat: btcli wallet new_hotkey --wallet-name mywallet --hotkey miner1
No such option: --wallet.namePakai flag lamaGunakan --wallet-name (dengan tanda hubung)
Connection refused / TimeoutTestnet subtensor downCoba lagi 5โ€“10 menit kemudian
UID tidak muncul di metagraphChain butuh beberapa blockTunggu 2โ€“5 menit, sync belum selesai

๐ŸŽฏ Rangkumanโ€‹

  • NetUID 1 testnet = subnet learning klasik, tapi sering penuh โ€” pilih subnet testnet yang slotnya kosong kalau perlu
  • Registrasi via recycle TAO (era dTAO): btcli subnet register --netuid <N> --wallet-name mywallet --hotkey miner1 --network test
  • TAO yang dipakai register dibakar (recycle) โ€” tidak dikembalikan saat deregister
  • Setelah register โ†’ dapat UID, muncul di metagraph
  • Flag btcli menggunakan tanda hubung: --wallet-name, --hotkey, --network (bukan titik)

โœ… Quick Checkโ€‹

  1. Apa perbedaan flag --wallet-name (btcli) vs --wallet.name (miner.py)?
  2. Kenapa kita pakai --network test bukan tanpa flag?
  3. Apa itu immunity period dan kenapa penting?
  4. Bagaimana cara verifikasi bahwa registrasi berhasil?
๐Ÿ’ก Jawaban
  1. --wallet-name adalah flag btcli (CLI tool). --wallet.name adalah flag yang dipakai saat menjalankan script Python seperti neurons/miner.py โ€” keduanya berbeda tool dengan konvensi flag berbeda.
  2. --network test = pakai testnet Bittensor (sandbox, TAO tidak bernilai uang nyata). Tanpa flag, btcli default ke finney (mainnet) yang pakai TAO sungguhan.
  3. Immunity period = grace period setelah register (~24 jam mainnet), di mana miner tidak bisa dideregister meski skor 0. Penting supaya ada waktu setup miner.
  4. Di testnet: python scripts/metagraph.py --netuid 1 --wallet.name mywallet --wallet.hotkey miner1 โ€” baris kamu ditandai <-- you. Atau python scripts/status.py ... untuk cek UID cepat. (Di mainnet: btcli subnets metagraph --netuid 1.)

Next: Unit 5 โ€” Jalankan Miner Lokal โ†’

UID kamu sudah ada di blockchain. Sekarang waktunya hidupkan miner! โ›๏ธ