Rand Protocol
Dokumentasi
Mulai

Pengantar

Apa itu Rand Protocol, apa yang berjalan di testnet publik saat ini, dan cara memperoleh RAND untuk membangun di atasnya.

Baca halaman ini untuk menentukan apa yang akan dibangun dan dari mana memulai: model rantai dalam beberapa paragraf, parameter testnet yang aktif, cara memperoleh RAND uji, dan peta bagian dokumentasi lainnya.

Apa itu Rand Protocol

Rand adalah rantai terlindung pasca-kuantum. Koin native-nya adalah RAND, dan RAND berada dalam kolam terlindung sepenuhnya: tidak ada akun dan tidak ada saldo di rantai, hanya komitmen catatan dan nullifier, dan sebuah transfer adalah bukti zero-knowledge bahwa empat catatan menjadi empat catatan lain (catatan dummy mengisi slot yang tidak terpakai), tanpa menunjukkan aset mana yang berpindah. RAND dan setiap token dari standar milik rantai ini, RPL, berbagi satu kolam yang sama. Koin yang sama membayar program rahasia: program RISC-V yang berjalan di luar rantai di dalam mesin virtual zero-knowledge dan diselesaikan di rantai dengan sebuah bukti, bukan dengan inputnya.

Setiap primitif dipilih agar tahan terhadap lawan kuantum:

lapisanyang berjalan
Tanda tanganDilithium2 (berbasis lattice). Validator menandatangani blok dan suara dengannya; faucet, aksi staking, dan registrasi bridge ditandatangani dengannya. Dompet tidak pernah menandatangani transaksi: sebuah bundel mengotorisasi dirinya sendiri melalui buktinya.
Enkripsi catatanEnkapsulasi kunci ML-KEM-768 ditambah ChaCha20-Poly1305. Setiap catatan di rantai disertai amplop yang hanya dapat dibuka oleh pemiliknya (dan pengirimnya).
HashingBLAKE3 dengan pemisahan domain untuk alamat, id transaksi, akar state, dan segala hal lain di luar sistem bukti; Poseidon2 atas field Goldilocks untuk catatan, nullifier, pohon komitmen, dan segala hal di dalam bukti.
BuktiBatch STARK Plonky3 dengan FRI hiding (80 query, blowup 8, 20 bit proof-of-work). Transparan: tanpa trusted setup, tanpa kurva pairing, dan asumsinya adalah fungsi hash yang tahan tabrakan.
Komputasi rahasiaRand zkVM, mesin RV32IM yang dibuktikan di bawah STARK tersebut. Sebuah program diidentifikasi oleh digest di dalam sirkuit, dan verifier tidak pernah melihat satu pun kata instruksi.
KonsensusChained HotStuff BFT: kuorum berbobot stake lebih dari dua pertiga, pemimpin bergilir (round-robin), aturan commit tiga view berturut-turut.
Penyimpanan dan jaringanSatu RocksDB per node dengan commit yang di-fsync dan pemeriksaan integritas saat startup; libp2p (TCP, Noise, Yamux, gossipsub, Kademlia, mDNS pada LAN).

Implementasi referensinya adalah randprotocol/fullnode, dalam Rust: binary rand-node adalah node, binary rand adalah dompet, dan metode JSON-RPC berawalan rand_. Penjelajahnya adalah randscan.org.

Testnet: chain 20

Fleet publik menjalankan chain 20, aktif sejak 2026-10-01 06:17 UTC pada fullnode v0.6.8. Chain 15 hingga 19 telah dipensiunkan. Empat chain dipotong dalam empat hari, masing-masing untuk perubahan yang mengubah setiap bukti atau format transaksi:

  • Chain 16 (2026-09-28, fullnode v0.6.1) memindahkan zkVM ke constraint set 7, yang menyamarkan apa yang dahulu diungkapkan sebuah bukti tentang input privat yang kecil, dan mengaktifkan aturan hardening_v6.
  • Chain 17 (2026-09-29, v0.6.3) memisahkan otorisasi transfer dari buktinya: setiap bundel membawa bukti kedua yang kecil yang dibuat dengan spend key, sehingga bukti yang besar dapat dibuat oleh mesin yang hanya memegang viewing key.
  • Chain 18 (2026-09-29, v0.6.7) mengukur panggilan rahasia dalam gas (constraint set 8) dan mengaktifkan memo terenkripsi di setiap amplop catatan.
  • Chain 20 (2026-10-01, v0.6.8) mengikat setiap bukti dan setiap pesan bertanda tangan pada hash genesis, menambahkan state program (RPL-2), memungut biaya atas mint dan burn bridge zUSD, dan mengaktifkan aturan audit-v6 yang tercantum pada tabel di bawah.

Chain 19 (2026-10-01 03:43 UTC, v0.6.7) adalah re-genesis dari chain 18 pada build yang sama dan tidak mengubah aturan apa pun. Chain 18 dihentikan pada ketinggian 143.776, dan chain 19 dipotong dari snapshot pada ketinggian 141.935. Genesis-nya berbeda dari chain 18 hanya pada id chain, stempel waktu, catatan yang dibawa, dan bagian bridge: emitter baru untuk endpoint Ethereum, Binance Smart Chain, dan Tron, dengan penghitung urutan yang dibawa.

Chain 20 adalah hard fork dari chain 19: genesis-nya dipotong dari snapshot chain 19 pada ketinggian 7.258, chain 19 dihentikan pada ketinggian 7.700, dan seluruh 26 validator dimulai ulang bersama-sama pada chain 20, dengan kunci, peer id, dan node bootstrap yang sama. Chain 19 dan chain 18 telah dipensiunkan. Dompet memerlukan v0.6.8 untuk mengirim di chain 20: bukti dan tanda tangan dompet yang lebih lama tidak membawa pengikatan genesis, dan chain menolaknya.

Masing-masing adalah chain baru. Saldo RAND di dompet operator dan zUSD yang beredar dibawa ke genesis berikutnya, dan tidak ada yang lain: program yang di-deploy pada satu chain tidak ada pada chain berikutnya. Ini adalah perangkat lunak eksperimental: belum diaudit, dan RAND di dalamnya tidak bernilai.

Program pada chain 20 dapat menyimpan state: sel program, vault program, dan aksi Invoke milik RPL-2 sudah aktif.

chain id20 (rand_chainId)
genesis hash6210cf071a390d7ac61d8cbea5dd9d139d1a493a862b54a45a498f36af2d5135
genesis filedeploy/genesis-chain20.json di repositori fullnode
buildfullnode v0.6.8 (tag c9c9bd3c); sebuah node melaporkan build-nya sendiri di rand_getVersion. Build ini menolak chain 14 sampai 17, dan wallet yang lebih lama dari v0.6.8 tidak dapat mengirim di chain 20
genesis bindingbinding_domain 1: setiap proof binding bundle dan setiap pesan aksi yang ditandatangani menyertakan genesis hash, sehingga apa pun yang dibuktikan atau ditandatangani untuk satu chain tidak terverifikasi di chain lain
testnet markertestnet true: genesis menyatakan dirinya jaringan uji, yang memungkinkan faucet berjalan berdampingan dengan bridge
validators26, masing-masing mempertaruhkan stake 1.000 RAND, batas minimum staking
quorum18 dari 26: sepenuhnya lebih dari dua pertiga stake
block intervalbawaan --block-interval-ms 1000; sekitar satu blok per detik
block timetimestamp yang lebih dari 60 s melampaui induknya tidak valid, dan validator tidak memberikan suara untuk blok yang lebih dari 15 s di depan jamnya sendiri, sehingga validator menjalankan NTP
proof windowproof_window_blocks 1.024: anchor sebuah bundle harus salah satu dari 1.024 root akhir blok terakhir, dan time-nya tidak lebih lama dari itu (256 blok pada chain 18 dan 19)
epochs1.000 blok; bond baru menunggu dua epoch tambahan sebelum dihitung (bond_activation_epochs 2, aktif pada epoch e + 3), stake yang di-unbond dilepas dua epoch kemudian
stakingregistrasi berupa v2 (rand-node register --v2), dan kunci baru baru terdaftar setelah validator yang memegang lebih dari dua pertiga bobot memilihnya masuk (admission_by_vote); bobot satu validator dibatasi 33,33 %; stake baru yang masuk pada batas epoch dibatasi 25 % dari bobot aktif (max_stake_entry_bps_per_epoch 2.500); tanpa slashing
zkVMconstraint set 8, profil FRI produksi (80 query)
bundle guesthc_bundle 60af094acfe65d85fdb18fb3d06cf9085dcf28c96e59e87f1ee527226e6e3fce: bundle aset tersembunyi 4-masuk-4-keluar, versi 3, tier 14
auth guesthc_auth 1e4e347f44cf86750b30a9a4bdf9ec9256efe353d4ff8017451eca7d195639c1: otorisasi pembelanjaan yang dibawa setiap bundle, tier 10
gassebuah panggilan menyatakan batas gas yang ditegakkan oleh sirkuit dan membayar gas_price untuknya: 100 unit per gas dan 800 unit per KiB pada batas bawah, keduanya bergerak per blok menuju target 262.144 gas dan 10.485.760 byte, dan tidak pernah melampaui batas atas 10.000 per gas dan 80.000 per KiB. Hanya byte yang dikenai harga byte (proof dan input envelope sebuah panggilan) yang dihitung dalam beban byte (byte_load: "paying"), sehingga blok berisi transfer tidak menaikkannya. Setiap bundle menyatakan batas tetap 20.479 dan membayar biaya tetap 0,001 RAND
program stateRPL-2 aktif: program cell, program vault, dan Invoke (Action 33); sebuah cell yang dibuat berbiaya 0,01 RAND (cell_fee 10,000,000 unit); sebuah invoke membaca paling banyak 8 cell, menulis paling banyak 8, dan melakukan paling banyak 4 pembayaran (rand_getLimits.program_state)
note envelopeenvelope_bytes 1860: envelope setiap note berukuran 1.860 byte dan membawa memo terenkripsi
program capmax_program_words 65.535, tetapi di bawah hardening_v6 deploy yang tidak dapat dimuat oleh panggilan tier 14 mana pun ditolak (ProgramUncallable): 8.180 word untuk program tanpa segmen publik
proof capmax_proof_bytes 4.194.304 (4 MiB); sebelumnya 8 MiB pada chain 13 sampai 16
block capmax_block_bytes 20.971.520 (20 MiB)
call envelope capmax_call_envelope_bytes 65.536
public input per programmax_program_public_words 32.768, ditetapkan saat deploy
faucetaktif, tetapi hanya untuk 16 wallet pada allowlist genesis (staking.faucet_recipients), dan hanya dari 18 validator yang disebut genesis sebagai minter (staking.faucet_minters): hingga 100 RAND per panggilan, 10.000 RAND per epoch secara keseluruhan
confidential computationaktif; proof panggilan dibatasi pada tier 14. Program tidak terbawa melintasi pergantian chain; program contoh menyebutkan chain mana tempat masing-masing di-deploy
tokensregistri RPL aktif: biaya registrasi 1 RAND, dibakar; paling banyak 4.096 token; setiap nilai note di bawah 2⁶³. zUSD tercantum dalam genesis pada indeks 1
bridgeaktif: guardian set 1 dengan delapan guardian, delapan guardian PQ Dilithium2, sebuah kunci jeda, emitter untuk empat chain sumber, batas mint harian 100.000 zUSD per backing, dan batas global 4.000 zUSD per 24 jam bergulir untuk semua backing. zUSD memiliki tujuh backing; pasokannya adalah seluruh yang terkunci, dibaca langsung dari rand_getTokenSupply. Sejak chain 20, biaya 10 bps dipungut pada setiap mint dan setiap burn, dalam zUSD, sebagai note ke alamat treasury (bridge.fees): sebuah deposit dikreditkan sebesar jumlah bruto dikurangi biaya, dan sebuah burn melepas amount − fee di chain sumber. Rotasi guardian PQ atau kunci jeda membawa tanda tangan masing-masing kunci barunya sendiri dan berlaku 86.400 s setelah diterima (bridge.rotation)
history24 validator menyimpan blok selama 24 jam (--prune-history 24h) dan menjawab -32010 untuk yang lebih lama; dua node arsip menyimpan setiap blok, dan RPC publik https://rpc.randprotocol.org meneruskan ke sebuah arsip
block aggregationnonaktif (tidak ada bagian aggregation dalam genesis; build menolak berjalan pada genesis yang memilikinya)
genesis value26.000 RAND yang di-stake dalam register validator ditambah tujuh note deposit senilai total 5.184,243719258 RAND, dibawa dari wallet operator di chain 19: 31.184,243719258 RAND, sebelum mint faucet (rand_getSupply melaporkan genesis_staked dan genesis_deposited); ditambah dua note genesis senilai total 99 zUSD, sesuai dengan 99 zUSD yang terkunci pada backing-nya

Node 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

Chain 20 berjalan pada kunci validator yang digunakan chain 14 sampai 19, sehingga peer id ini tidak berubah sejak rotasi kunci chain 14.

Explorer di randscan.org mengindeks chain 20 dan menyediakan REST API di https://randscan.org/api/v1 (Explorer API). JSON-RPC full node secara bawaan terikat pada 127.0.0.1:8545; jalankan sebuah node (Menjalankan node), gunakan node yang Anda percaya, atau gunakan endpoint publik https://rpc.randprotocol.org (rand --rpc https://rpc.randprotocol.org …). Endpoint publik melayani semua yang dibutuhkan sebuah wallet, termasuk sinkronisasi pertamanya dan pengiriman transaksi, dengan batas 1.200 pembacaan dan 6 pengiriman per menit per alamat. Endpoint ini tidak melayani faucet.

Mendapatkan RAND dari faucet

Faucet adalah sebuah jenis transaksi: validator melakukan mint satu note dengan jumlah publik ke sebuah alamat shielded, dan note itu hanya dapat dibuka oleh pemegang alamat. Di chain 20, faucet hanya membayar 16 alamat pada allowlist genesis: mint ke alamat lain ditolak dengan the faucet may not mint to this recipient (not in staking.faucet_recipients), sehingga wallet yang tidak ada di dalamnya memperoleh RAND uji dengan cara dikirimi. Ketiga jalur di bawah ini meminta mint kepada sebuah node validator; observer menjawab faucet mints are signed by validators; ask a validator node, dan endpoint RPC publik sama sekali tidak meneruskan rand_mint.

Dengan wallet rand, diarahkan ke RPC sebuah 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> melakukan mint ke alamat lain atau dengan jumlah yang lebih kecil; 100 RAND adalah nilai bawaan sekaligus batas per panggilan. Melalui JSON-RPC, permintaan yang sama adalah 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 adalah hash transaksi mint; lakukan polling rand_getTransaction sampai ia mengembalikan sebuah blok. Jumlah berupa string unit, dan 1 RAND adalah 10⁹ unit. Aplikasi wallet memiliki faucet yang sama dengan satu ketukan; kirim dari aplikasi tersebut dengan Rand Wallet v0.6.8 atau lebih baru, rilis pertama untuk chain 20. Halaman faucet di situs ini menerima permintaan daftar tunggu untuk hibah devnet.

Jumlah sebuah mint bersifat publik di chain: visibilitas satu lompatan yang dimiliki setiap deposit dari transparan ke shielded. Berapa nilai note itu dan bagi siapa setelahnya tetap tersembunyi seperti setiap note lainnya.

Langkah berikutnya

Direktori docs/ pada repositori fullnode adalah sumber yang menjadi acuan pemeriksaan halaman-halaman ini, dan makalah memuat latar belakang kriptografisnya.

Terakhir diverifikasi terhadap commit fullnode c0878c3f (chain 21) pada 2026-10-12.