Rand Protocol
Dokumentasi
Mula

Pengenalan

Apa itu Rand Protocol, apa yang berjalan pada testnet awam pada hari ini, dan cara mendapatkan RAND untuk membangun di atasnya.

Baca halaman ini untuk memutuskan apa yang hendak dibina dan di mana untuk bermula: model rantaian dalam beberapa perenggan, parameter testnet yang aktif, cara mendapatkan RAND ujian, dan peta bagi bahagian dokumentasi yang lain.

Apakah itu Rand Protocol

Rand ialah rantaian terlindung pasca-kuantum. Syiling asalnya ialah RAND, dan RAND berada dalam kolam yang terlindung sepenuhnya: tiada akaun dan tiada baki pada rantaian, hanya komitmen nota dan nullifier, dan sesuatu pemindahan ialah bukti pengetahuan sifar bahawa empat nota menjadi empat nota lain (nota palsu mengisi slot yang tidak digunakan), tanpa menunjukkan aset yang manakah dipindahkan. RAND dan setiap token yang mengikut piawaian rantaian itu sendiri, RPL, berkongsi satu kolam yang sama. Syiling yang sama membayar program sulit: program RISC-V yang dijalankan di luar rantaian dalam mesin maya pengetahuan sifar dan diselesaikan pada rantaian dengan bukti dan bukannya inputnya.

Setiap primitif dipilih supaya tahan terhadap musuh kuantum:

lapisanapa yang dijalankan
TandatanganDilithium2 (berasaskan kekisi). Validator menandatangani blok dan undi dengannya; faucet, tindakan staking dan pendaftaran jambatan turut ditandatangani dengannya. Dompet tidak pernah menandatangani transaksi: satu bundle mengesahkan dirinya melalui buktinya.
Penyulitan notaPengkapsulan kunci ML-KEM-768 serta ChaCha20-Poly1305. Setiap nota pada rantaian disertai sampul yang hanya pemiliknya (dan penghantarnya) boleh membuka.
PencincanganBLAKE3 dengan pengasingan domain untuk alamat, id transaksi, punca keadaan dan segala yang lain di luar sistem bukti; Poseidon2 ke atas medan Goldilocks untuk nota, nullifier, pokok komitmen dan segala yang berada di dalam bukti.
BuktiSTARK kelompok Plonky3 dengan FRI penyembunyi (80 pertanyaan, blowup 8, 20 bit bukti kerja). Telus: tiada persediaan dipercayai, tiada lengkung berpasangan, dan andaiannya ialah cincangan yang tahan perlanggaran.
Pengiraan sulitzkVM Rand, mesin RV32IM yang dibuktikan di bawah STARK itu. Sesuatu program dikenal pasti melalui digest dalam litar, dan pengesah tidak pernah melihat satu pun perkataan arahan.
KonsensusHotStuff BFT berantai: kuorum berpemberat kepentingan melebihi dua pertiga, pemimpin bergilir, peraturan komit tiga pandangan berturut-turut.
Storan dan rangkaianSatu RocksDB bagi setiap nod dengan komit yang di-fsync dan semakan integriti semasa permulaan; libp2p (TCP, Noise, Yamux, gossipsub, Kademlia, mDNS pada LAN).

Pelaksanaan rujukan ialah randprotocol/fullnode, dalam Rust: binari rand-node ialah nod, binari rand ialah dompet, dan kaedah JSON-RPC diawali rand_. Penjelajahnya ialah randscan.org.

Testnet: rantaian 20

Armada awam menjalankan rantaian 20, aktif sejak 2026-10-01 06:17 UTC pada fullnode v0.6.8. Rantaian 15 hingga 19 telah dihentikan. Empat rantaian dipotong dalam empat hari, masing-masing kerana perubahan yang mengubah setiap bukti atau format transaksi:

  • Rantaian 16 (2026-09-28, fullnode v0.6.1) memindahkan zkVM ke set kekangan 7, yang menyamarkan apa yang dahulunya didedahkan oleh bukti tentang input persendirian yang kecil, dan menghidupkan peraturan hardening_v6.
  • Rantaian 17 (2026-09-29, v0.6.3) memisahkan kebenaran sesuatu pemindahan daripada buktinya: setiap bundle membawa bukti kedua yang kecil yang dibuat dengan kunci perbelanjaan, supaya bukti yang besar boleh dibuat oleh mesin yang hanya memegang kunci tontonan.
  • Rantaian 18 (2026-09-29, v0.6.7) mengukur panggilan sulit dalam gas (set kekangan 8) dan menghidupkan memo tersulit dalam setiap sampul nota.
  • Rantaian 20 (2026-10-01, v0.6.8) mengikat setiap bukti dan setiap mesej bertandatangan kepada cincangan genesis, menambah keadaan program (RPL-2), mengenakan yuran ke atas pencetakan dan pembakaran zUSD melalui jambatan, dan menghidupkan peraturan audit-v6 yang disenaraikan dalam jadual di bawah.

Rantaian 19 (2026-10-01 03:43 UTC, v0.6.7) ialah re-genesis rantaian 18 pada binaan yang sama dan tidak mengubah sebarang peraturan. Rantaian 18 dihentikan pada ketinggian 143,776, dan rantaian 19 dipotong daripada syot kilat pada ketinggian 141,935. Genesisnya berbeza daripada genesis rantaian 18 hanya pada id rantaian, cap masa, nota yang dibawa dan bahagian jambatan: pemancar baharu untuk titik akhir Ethereum, Binance Smart Chain dan Tron, dan pembilang jujukan dibawa ke hadapan.

Rantaian 20 ialah hard fork bagi rantaian 19: genesisnya dipotong daripada syot kilat rantaian 19 pada ketinggian 7,258, rantaian 19 dihentikan pada ketinggian 7,700, dan kesemua 26 validator dimulakan semula pada rantaian 20 bersama-sama, dengan kunci, id peer dan nod bootstrap yang sama. Rantaian 19 dan rantaian 18 telah dihentikan. Dompet memerlukan v0.6.8 untuk menghantar pada rantaian 20: bukti dan tandatangan dompet yang lebih lama tidak membawa ikatan genesis, dan rantaian menolaknya.

Setiap satu ialah rantaian baharu. Baki RAND dalam dompet operator dan zUSD yang sedang beredar dibawa ke dalam genesis berikutnya, dan tiada yang lain: program yang dilancarkan pada satu rantaian tidak wujud pada rantaian seterusnya. Ini ialah perisian eksperimen: belum diaudit, dan RAND padanya tidak mempunyai nilai.

Program pada rantaian 20 boleh menyimpan keadaan: sel program RPL-2, peti simpanan program dan tindakan Invoke sudah aktif.

id rantaian20 (rand_chainId)
hash genesis6210cf071a390d7ac61d8cbea5dd9d139d1a493a862b54a45a498f36af2d5135
fail genesisdeploy/genesis-chain20.json dalam repositori fullnode
binaanfullnode v0.6.8 (tag c9c9bd3c); nod melaporkan binaannya sendiri dalam rand_getVersion. Binaan ini menolak rantaian 14 hingga 17, dan dompet yang lebih lama daripada v0.6.8 tidak dapat menghantar pada rantaian 20
pengikatan genesisbinding_domain 1: pengikatan bukti setiap bundle dan setiap mesej tindakan bertandatangan merangkumi hash genesis, maka apa-apa yang dibuktikan atau ditandatangani untuk satu rantaian tidak sah pada rantaian lain
penanda testnettestnet true: genesis mengisytiharkan dirinya rangkaian ujian, dan inilah yang membolehkan faucet beroperasi di sisi jambatan
validator26, masing-masing dipertaruhkan pada 1,000 RAND, iaitu minimum pertaruhan
kuorum18 daripada 26: tegasnya lebih daripada dua pertiga pertaruhan
sela bloklalai --block-interval-ms 1000; kira-kira satu blok sesaat
masa blokcap masa yang melebihi 60 s daripada induknya tidak sah, dan validator tidak mengundi blok yang mendahului jamnya sendiri lebih daripada 15 s, maka validator menjalankan NTP
tetingkap buktiproof_window_blocks 1,024: sauh bundle mestilah salah satu daripada 1,024 punca hujung blok yang terakhir, dan time-nya tidak lebih lama daripada itu (256 blok pada rantaian 18 dan 19)
epok1,000 blok; ikatan baharu menunggu dua epok tambahan sebelum diambil kira (bond_activation_epochs 2, aktif pada epok e + 3), pertaruhan yang dinyahikat dilepaskan dua epok kemudian
pertaruhanpendaftaran ialah v2 (rand-node register --v2), dan kunci baharu hanya didaftarkan selepas validator yang memegang lebih daripada dua pertiga daripada pemberat mengundinya masuk (admission_by_vote); pemberat satu validator dihadkan pada 33.33 %; pertaruhan baharu yang masuk pada sempadan epok dihadkan pada 25 % daripada pemberat aktif (max_stake_entry_bps_per_epoch 2,500); tiada pemotongan
zkVMset kekangan 8, profil FRI pengeluaran (80 pertanyaan)
guest bundlehc_bundle 60af094acfe65d85fdb18fb3d06cf9085dcf28c96e59e87f1ee527226e6e3fce: bundle aset tersembunyi 4 masuk 4 keluar, versi 3, tier 14
guest pengesahanhc_auth 1e4e347f44cf86750b30a9a4bdf9ec9256efe353d4ff8017451eca7d195639c1: pengesahan perbelanjaan yang dibawa oleh setiap bundle, tier 10
gaspanggilan mengisytiharkan had gas yang dikuatkuasakan litar dan membayar gas_price untuknya: 100 unit setiap gas dan 800 unit setiap KiB pada paras lantai, kedua-duanya bergerak setiap blok ke arah sasaran 262,144 gas dan 10,485,760 bait, dan tidak pernah melebihi siling 10,000 setiap gas dan 80,000 setiap KiB. Hanya bait yang dikenakan harga bait (bukti panggilan dan sampul inputnya) dikira dalam beban bait (byte_load: "paying"), maka blok pemindahan tidak menaikkannya. Setiap bundle mengisytiharkan had tetap 20,479 dan membayar 0.001 RAND secara rata
keadaan programRPL-2 aktif: sel program, peti simpanan program dan Invoke (Action 33); sel yang dicipta berharga 0.01 RAND (cell_fee 10,000,000 unit); satu invoke membaca paling banyak 8 sel, menulis paling banyak 8 dan membuat paling banyak 4 pembayaran (rand_getLimits.program_state)
sampul notaenvelope_bytes 1860: sampul setiap nota ialah 1,860 bait dan membawa memo yang disulitkan
had programmax_program_words 65,535, tetapi di bawah hardening_v6 penerapan yang tidak dapat dimuatkan oleh mana-mana panggilan tier 14 ditolak (ProgramUncallable): 8,180 perkataan bagi program tanpa segmen awam
had buktimax_proof_bytes 4,194,304 (4 MiB); ia 8 MiB pada rantaian 13 hingga 16
had blokmax_block_bytes 20,971,520 (20 MiB)
had sampul panggilanmax_call_envelope_bytes 65,536
input awam bagi setiap programmax_program_public_words 32,768, ditetapkan semasa penerapan
faucetaktif, tetapi hanya untuk 16 dompet dalam senarai dibenarkan genesis (staking.faucet_recipients), dan hanya daripada 18 validator yang dinamakan genesis sebagai pencetak (staking.faucet_minters): sehingga 100 RAND setiap panggilan, 10,000 RAND setiap epok secara keseluruhan
pengiraan sulitaktif; bukti panggilan dihadkan pada tier 14. Program tidak dibawa merentasi pemotongan rantaian; program contoh menyatakan rantaian mana setiap satunya diterapkan
tokendaftar RPL aktif: yuran pendaftaran 1 RAND, dibakar; paling banyak 4,096 token; setiap nilai nota di bawah 2⁶³. zUSD disenaraikan dalam genesis pada indeks 1
jambatanaktif: set pengawal 1 dengan lapan pengawal, lapan pengawal PQ Dilithium2, kunci jeda, pengeluar bagi empat rantaian sumber, had cetakan harian 100,000 zUSD bagi setiap sandaran, dan had global 4,000 zUSD setiap 24 jam bergulir merentasi semua sandaran. zUSD mempunyai tujuh sandaran; bekalannya ialah apa-apa yang dikunci, dibaca secara langsung daripada rand_getTokenSupply. Sejak rantaian 20, yuran 10 bps dikenakan pada setiap cetakan dan setiap pembakaran, dalam zUSD, sebagai nota kepada alamat perbendaharaan (bridge.fees): deposit mengkreditkan jumlah kasar tolak yuran, dan pembakaran melepaskan amount − fee pada rantaian sumber. Putaran pengawal PQ atau kunci jeda membawa tandatangan tersendiri bagi setiap kunci baharu dan berkuat kuasa 86,400 s selepas diterima (bridge.rotation)
sejarah24 validator menyimpan blok selama 24 jam (--prune-history 24h) dan menjawab -32010 bagi apa-apa yang lebih awal; dua nod arkib menyimpan setiap blok, dan RPC awam https://rpc.randprotocol.org memajukan ke sebuah arkib
pengagregatan blokmati (tiada bahagian aggregation dalam genesis; binaan enggan bermula pada genesis yang mempunyainya)
nilai genesis26,000 RAND dipertaruhkan dalam daftar validator serta tujuh nota deposit berjumlah 5,184.243719258 RAND, dibawa daripada dompet pengendali pada rantaian 19: 31,184.243719258 RAND, sebelum cetakan faucet (rand_getSupply melaporkan genesis_staked dan genesis_deposited); serta dua nota genesis berjumlah 99 zUSD, sepadan dengan 99 zUSD yang dikunci pada sandarannya

Nod bootstrap (deploy/nodes.env):

/ip4/164.90.239.200/tcp/30303/p2p/12D3KooWEQEbUwZRgqhDPXhW7vNBmcRcnhUDGUADe81VFdv3ALYe
/ip4/165.245.173.74/tcp/30303/p2p/12D3KooWJyc5oDHggAr89e9QrRFBy9Tg8TxXh18yzrb1SM6KKLYw
/ip4/188.166.235.187/tcp/30303/p2p/12D3KooWSyX84P1DAbWByLHpRBMLRWD53r3Jj4aqVt6tHoF8B2ZQ

Rantaian 20 berjalan pada kunci validator yang digunakan oleh rantaian 14 hingga 19, maka id rakan sebaya ini tidak berubah sejak pusingan kunci rantaian 14.

Penjelajah di randscan.org mengindeks rantaian 20 dan menyediakan API REST di https://randscan.org/api/v1 (API Penjelajah). JSON-RPC nod penuh terikat pada 127.0.0.1:8545 secara lalai; jalankan nod (Menjalankan nod), gunakan nod yang anda percayai, atau gunakan titik akhir awam https://rpc.randprotocol.org (rand --rpc https://rpc.randprotocol.org …). Titik akhir awam menyediakan segala yang diperlukan dompet, termasuk penyegerakan pertamanya dan penghantaran transaksi, di bawah had 1,200 bacaan dan 6 penghantaran seminit bagi setiap alamat. Ia tidak menyediakan faucet.

Mendapatkan RAND daripada faucet

Faucet ialah satu jenis transaksi: validator mencetak satu nota berjumlah awam kepada alamat terlindung, dan nota itu hanya boleh dibuka oleh pemegang alamat. Pada rantaian 20, ia hanya membayar 16 alamat dalam senarai dibenarkan genesis: cetakan kepada alamat lain ditolak dengan the faucet may not mint to this recipient (not in staking.faucet_recipients), maka dompet yang tiada dalam senarai itu memperoleh RAND ujian dengan dihantarkan sebahagian. Mana-mana daripada tiga laluan di bawah meminta cetakan daripada nod validator; pemerhati menjawab faucet mints are signed by validators; ask a validator node, dan titik akhir RPC awam tidak memajukan rand_mint langsung.

Dengan dompet rand, yang diarahkan ke RPC validator:

rand keygen                    # writes wallet.key.json; refuses to overwrite
rand address                   # the rand1… address on stdout (about 1,665 characters), its fingerprint on stderr
rand faucet                    # an allowlisted wallet: 100 RAND into a note only it can open
rand balance                   # scans the tree with this key; prints 100 RAND

rand faucet [ADDRESS] --amount <RAND> mencetak kepada alamat lain atau jumlah yang lebih kecil; 100 RAND ialah lalai sekali gus had bagi setiap panggilan. Melalui JSON-RPC, permintaan yang sama ialah rand_mint:

curl -s http://127.0.0.1:8545 -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"rand_mint","params":["rand1…", "100000000000"]}'

Hasilnya ialah hash transaksi cetakan; buat pengundian pada rand_getTransaction sehingga ia memulangkan blok. Jumlah ialah rentetan unit, dan 1 RAND ialah 10⁹ unit. Aplikasi dompet mempunyai faucet yang sama dengan satu ketikan; hantar daripadanya dengan Rand Wallet v0.6.8 atau lebih baharu, keluaran pertama untuk rantaian 20. Halaman faucet di laman ini menerima permintaan senarai menunggu untuk geran devnet.

Jumlah cetakan bersifat awam pada rantaian: keterlihatan satu lompatan yang ada pada mana-mana deposit telus-ke-terlindung. Nilai nota itu kepada siapa selepas itu tersembunyi seperti setiap nota lain.

Ke mana seterusnya

Direktori docs/ repositori fullnode sendiri ialah sumber yang disemak oleh halaman-halaman ini, dan kertas kerja memuatkan latar belakang kriptografi.

Disahkan kali terakhir terhadap commit fullnode c0878c3f (rantai 21) pada 2026-10-12.