๐ Unit 4 โ Register Miner di Subnet Testnet
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)
- โ 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
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 SDKbtcli 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 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 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
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)โ
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.
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 SDKSama 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
Di testnet, immunity period lebih pendek dan konsekuensi deregistrasi tidak seserius mainnet (tidak ada TAO sungguhan yang dipertaruhkan).
๐ Alur Registrasiโ
๐ Troubleshooting Registrasiโ
| Error | Penyebab | Solusi |
|---|---|---|
Insufficient balance for registration | TAO testnet kurang | Minta lebih dari faucet (Unit 3) |
Hotkey already registered | Hotkey sudah punya UID di subnet ini | Cek dengan btcli wallet overview --network test |
Subnet does not exist | NetUID salah atau subnet belum aktif | Cek btcli subnets list --network test |
hotkey 'miner1' does not exist | Hotkey belum dibuat atau nama salah | Jalankan btcli wallet list untuk cek nama hotkey yang ada, lalu buat: btcli wallet new_hotkey --wallet-name mywallet --hotkey miner1 |
No such option: --wallet.name | Pakai flag lama | Gunakan --wallet-name (dengan tanda hubung) |
Connection refused / Timeout | Testnet subtensor down | Coba lagi 5โ10 menit kemudian |
| UID tidak muncul di metagraph | Chain butuh beberapa block | Tunggu 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โ
- Apa perbedaan flag
--wallet-name(btcli) vs--wallet.name(miner.py)? - Kenapa kita pakai
--network testbukan tanpa flag? - Apa itu immunity period dan kenapa penting?
- Bagaimana cara verifikasi bahwa registrasi berhasil?
๐ก Jawaban
--wallet-nameadalah flag btcli (CLI tool).--wallet.nameadalah flag yang dipakai saat menjalankan script Python sepertineurons/miner.pyโ keduanya berbeda tool dengan konvensi flag berbeda.--network test= pakai testnet Bittensor (sandbox, TAO tidak bernilai uang nyata). Tanpa flag, btcli default kefinney(mainnet) yang pakai TAO sungguhan.- Immunity period = grace period setelah register (~24 jam mainnet), di mana miner tidak bisa dideregister meski skor 0. Penting supaya ada waktu setup miner.
- Di testnet:
python scripts/metagraph.py --netuid 1 --wallet.name mywallet --wallet.hotkey miner1โ baris kamu ditandai<-- you. Ataupython 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! โ๏ธ