Rand Protocol
文檔
開始

簡介

Rand Protocol 是甚麼、公開 testnet 目前運行的內容,以及如何取得 RAND 以便在其上進行開發。

閱讀本頁,以決定該針對甚麼進行建構及從何入手:鏈模型的數段概述、運行中 testnet 的參數、如何取得測試用 RAND,以及其餘文件的導覽。

Rand Protocol 是甚麼

Rand 是一條後量子屏蔽鏈。其原生幣為 RAND,而 RAND 存在於完全屏蔽的池中:鏈上沒有帳戶,也沒有餘額,只有 note 承諾和 nullifier;一筆轉帳是一個零知識證明,證明四個 note 變成另外四個 note(未使用的位置以虛設 note 填充),而不會顯示移動的是哪一種資產。RAND 與本鏈自有標準 RPL 的每一種代幣共用這一個池。同一種幣亦用於支付機密程式:這些 RISC-V 程式在零知識虛擬機內於鏈下運行,並以證明而非其輸入在鏈上結算。

每一項基本組件均選用能抵禦量子對手者:

layerwhat runs
SignaturesDilithium2(基於格)。驗證者以其簽署區塊和投票;水龍頭、質押操作和橋接登記均以其簽署。錢包從不簽署交易:一個 bundle 由其證明自行授權。
Note encryptionML-KEM-768 密鑰封裝加 ChaCha20-Poly1305。鏈上每一個 note 均附有一個信封,只有其擁有者(及其發送者)能夠開啟。
HashingBLAKE3,配合域分隔,用於地址、交易 id、狀態根及證明系統以外的一切;Goldilocks 域上的 Poseidon2,用於 note、nullifier、承諾樹及證明內的一切。
Proofs採用具隱藏性 FRI 的 Plonky3 批次 STARK(80 次查詢、blowup 8、20 個工作量證明位元)。透明:無需可信設置,不使用配對曲線,其假設為抗碰撞雜湊。
Confidential computationRand zkVM,一台在該 STARK 下證明的 RV32IM 機器。程式由電路內摘要識別,而驗證者從不會看到任何一個指令字。
Consensus鏈式 HotStuff BFT:按權益加權、超過三分之二的法定人數,輪流出任的領導者,以及連續三個視圖的提交規則。
Storage and networking每個節點一個 RocksDB,提交時 fsync,並於啟動時進行完整性檢查;libp2p(TCP、Noise、Yamux、gossipsub、Kademlia,局域網上使用 mDNS)。

參考實現為 randprotocol/fullnode,以 Rust 編寫:rand-node 二進位檔是節點,rand 二進位檔是錢包,而 JSON-RPC 方法均以 rand_ 為前綴。瀏覽器為 randscan.org。

測試網:chain 21

公開節點群運行 chain 21,自 2026-10-12 10:31 UTC 起於 fullnode v0.8.0 上運行。Chain 15 至 20 已退役。兩星期內共切出五條鏈,每一條均因某項改動會變更每一個證明或交易格式:

  • Chain 16(2026-09-28,fullnode v0.6.1)將 zkVM 移至約束集 7,該約束集遮蔽了證明過往對小型私密輸入所洩露的資訊,並啟用 hardening_v6 規則。
  • Chain 17(2026-09-29,v0.6.3)將轉帳的授權與其證明分離:每個 bundle 均附帶第二個以支出密鑰生成的小型證明,因此大型證明可由僅持有查看密鑰的機器生成。
  • Chain 18(2026-09-29,v0.6.7)以 gas 計量機密調用(約束集 8),並在每個 note 信封中啟用加密備註。
  • Chain 20(2026-10-01,v0.6.8)將每個證明及每條已簽署訊息綁定至創世雜湊,加入程式狀態(RPL-2),對 zUSD 橋接鑄造與銷毀收取費用,並啟用 audit-v6 規則。
  • Chain 21(2026-10-12,v0.8.0)將 zkVM 移至約束集 9(遞歸驗證者中的 Merkle 跨度,以及用於 Dilithium2 算術的晶片),這變更了每一個驗證密鑰及證明編碼;銷毀每筆交易的費用下限,而非支付予提議者;加入 RPL-3 永續期貨、M-of-N 多重簽署帳戶及第二種私密多重簽署授權;並將證明上限提高至 6 MiB。其規則見下表。

Chain 19(2026-10-01 03:43 UTC,v0.6.7)是 chain 18 在同一構建上的重新創世,沒有更改任何規則。Chain 18 於高度 143,776 停止,而 chain 19 由高度 141,935 的快照切出。其創世與 chain 18 的差別僅在於鏈 id、時間戳、承接的 note 及橋接部分:Ethereum、Binance Smart Chain 和 Tron 端點的新發射者,以及沿用的序號計數器。

Chain 20 是 chain 19 的硬分叉(於 2026-10-01 由其高度 7,258 的狀態切出),而 chain 21 是 chain 20 的硬分叉:其創世承載了 chain 20 於高度 814,702 的快照中的橋接狀態以及營運方錢包的餘額,而全部 26 個驗證者於 2026-10-12 10:31 UTC 以相同的密鑰、對等節點 id 和引導節點一同在 chain 21 上重新啟動。錢包需要 v0.8.0 才能在 chain 21 上發送:約束集 9 變更了每一個驗證密鑰及證明編碼,因此舊版錢包的證明甚至無法解碼,而創世綁定會拒絕任何為其他鏈而證明或簽署的內容。

每一條都是全新的鏈。營運方錢包中的 RAND 餘額及流通中的 zUSD 被承接至下一個創世,除此以外一概沒有:部署於某條鏈上的程式在下一條鏈上並不存在,而 chain 20 上登記的十一種代幣亦沒有承接。Chain 21 亦向基金會庫房發行了 100,000 RAND,該庫房是一個須 3 把密鑰中 2 把簽署的多重簽署帳戶。這是實驗性軟件:未經審計,其上的 RAND 沒有價值。

chain 21 上的程式沿用 chain 20 的方式保存狀態:RPL-2 的程式 cell、程式金庫及 Invoke 操作均已啟用,而 chain 21 加入了 RPL-3 永續期貨及多重簽署帳戶。四個示例程式部署於 chain 20,尚未在 chain 21 上重新部署。

鏈 ID21(rand_chainId)
創世哈希ca76c2766ed6090ac6ba5dad86b724dd5d2b80c0edfaed287cd8b129e663ca9a
創世檔案fullnode 儲存庫中的 deploy/genesis-chain21.json
構建版本fullnode v0.8.0(標籤 c0878c3f);節點會在 rand_getVersion 中報告自身的構建版本。此構建拒絕鏈 18 至 20,而低於 v0.8.0 的錢包無法在鏈 21 上發送交易
創世綁定binding_domain 1:每個交易包的證明綁定及每條已簽署的操作訊息均包含創世哈希,因此為某一條鏈生成的證明或簽名,在另一條鏈上無法通過驗證
testnet 標記testnet 為 true:創世檔案自行聲明為測試網絡,水龍頭因而可以與橋並行運作
驗證節點26 個,各質押 1,000 RAND,即質押下限
法定人數26 個中的 18 個:嚴格多於質押量的三分之二
區塊間隔預設的 --block-interval-ms 1000;約每秒一個區塊
區塊時間時間戳比其父區塊晚超過 60 秒即屬無效;驗證節點不會為時間戳比自身時鐘超前超過 15 秒的區塊投票,因此驗證節點須運行 NTP
證明窗口proof_window_blocks 1,024:交易包的錨點必須是最近 1,024 個區塊末根之一,其 time 亦不得早於該範圍(鏈 18 和 19 為 256 個區塊)
紀元1,000 個區塊;新的質押須再等待兩個紀元才計入(bond_activation_epochs 2,於紀元 e + 3 生效),解除質押的資金在兩個紀元後釋出
質押註冊為 v2(rand-node register --v2),新密鑰須在持有超過三分之二權重的驗證節點投票接納後方可註冊(admission_by_vote);單一驗證節點的權重上限為 33.33 %;於紀元邊界進入的新質押上限為活躍權重的 25 %(max_stake_entry_bps_per_epoch 2,500);無罰沒
zkVM約束集 9(即約束集 8,加上遞歸驗證者中的 Merkle 跨度,以及用於 Dilithium2 算術的 MODQ 芯片;鏈 18 至 20 使用集 8),生產環境 FRI 配置(80 次查詢)
交易包客體程式hc_bundle 60af094acfe65d85fdb18fb3d06cf9085dcf28c96e59e87f1ee527226e6e3fce:4 入 4 出的隱藏資產交易包,版本 3,層級 14
授權客體程式hc_auth 1e4e347f44cf86750b30a9a4bdf9ec9256efe353d4ff8017451eca7d195639c1:每個交易包均附帶的花費授權,層級 10
多重簽名授權客體程式hc_auth_multisig 9705f8e2f1bc8561848b29cb8efd57c37e3e39788fa58a5f03304d8019668247:M-of-N Dilithium2 政策(最多 16 取 3),作為交易包的授權取代 hc_auth 而被證明,層級 18;鏈只會得知某個多重簽名授權了該筆花費。每個驗證節點均從二進位檔旁載入其固定的驗證密鑰 msauth-vk-production.bin
gas每次調用聲明一個由電路強制執行的 gas 上限,並按 gas_price 支付:下限價格為每 gas 100 單位、每 KiB 800 單位,兩者均逐區塊向 262,144 gas 與 9,961,472 字節(鏈 20 為 10,485,760)的目標移動,且不會超過每 gas 10,000 及每 KiB 80,000 的上限。只有按字節價格計費的字節(調用的證明及輸入封包)才計入字節負載(byte_load: "paying"),因此一個全是轉賬的區塊不會推高該負載。每個交易包均聲明固定的上限 20,479,並支付固定的 0.001 RAND
費用fees.burn_base 與 fees.burn_floor:每筆交易的下限費用(轉賬的 0.001 RAND、部署的每字費用、調用按現行價格計的 gas 與字節、橋銷毀的費用、invoke 的單元費用)均被銷毀,並計入 rand_getSupply.base_fees_burned;提議者只保留超出下限的小費。在鏈 18 至 20 上,全部費用歸提議者所有(費用)
程式狀態RPL-2 已啟用:程式單元、程式金庫及 Invoke(Action 33);創建一個單元需 0.01 RAND(cell_fee 10,000,000 單位);一次 invoke 最多讀取 8 個單元、寫入 8 個,並進行最多 4 次支付(rand_getLimits.program_state)
票據封包envelope_bytes 1860:每張票據的封包為 1,860 字節,並攜帶一則加密備註
程式上限max_program_words 65,535,但在 hardening_v6 下,任何層級 14 的調用均無法容納的部署將被拒絕(ProgramUncallable):沒有公開段的程式上限為 8,180 字
證明上限max_proof_bytes 6,291,456(6 MiB),足以容納多重簽名授權證明;鏈 18 至 20 為 4 MiB,鏈 13 至 16 為 8 MiB
區塊上限max_block_bytes 19,922,944(19 MiB;鏈 18 至 20 為 20 MiB)
調用封包上限max_call_envelope_bytes 65,536
每個程式的公開輸入max_program_public_words 32,768,於部署時固定
水龍頭已啟用,但僅限創世允許清單上的 16 個錢包(staking.faucet_recipients),且僅可由創世指定為鑄造者的 18 個驗證節點(staking.faucet_minters)發放:每次調用最多 100 RAND,每個紀元合共 10,000 RAND
保密計算已啟用;調用證明上限為層級 14。程式不會跨越鏈的切換而延續;各鏈部署了哪些程式,見示例程式
代幣RPL 註冊表已啟用:註冊費 1 RAND,予以銷毀;最多 4,096 種代幣;每張票據的數值均小於 2⁶³。zUSD 在創世中列於索引 1,且是鏈 21 切換時唯一的代幣:鏈 20 上註冊的十一種代幣未有延續
永續合約RPL-3 已啟用:一個市場 BTC-PERP,以 zUSD 結算,槓桿 20 倍,維持保證金 250 bps,吃單/掛單費用為 5/2 bps;持倉的證明上限為層級 18,存入金額至少 1 zUSD(rand_getPerps、rand_getLimits.perps)
多重簽名賬戶已啟用:M-of-N Dilithium2 賬戶,餘額公開,創建需 1 RAND,最多 10 名簽署者(rand_getMultisig);基金會庫房是唯一的創世賬戶,持有 100,000 RAND,由 3 把密鑰中的 2 把控制
橋已啟用:守護者集 1,含八名守護者、八名 Dilithium2 PQ 守護者、一把暫停密鑰、四條來源鏈的發送端,每項支持資產每日鑄造上限為 100,000 zUSD,所有支持資產合計每滾動 24 小時全局上限為 4,000 zUSD。zUSD 有七項支持資產;其供應量即被鎖定的數額,可從 rand_getTokenSupply 實時讀取。自鏈 20 起,每次鑄造及每次銷毀均收取 10 bps 的費用,以 zUSD 計,作為一張票據發往庫房地址(bridge.fees):存入按扣除費用後的淨額入賬,銷毀則在來源鏈上釋出 amount − fee。PQ 守護者或暫停密鑰的輪換,須附上每把新密鑰各自的簽名,並於獲接受後 86,400 秒生效(bridge.rotation)
歷史24 個驗證節點保留 24 小時的區塊(--prune-history 24h),早於此範圍則回應 -32010;兩個歸檔節點保留所有區塊,公共 RPC https://rpc.randprotocol.org 轉發至歸檔節點
區塊聚合關閉(創世檔案中沒有 aggregation 段;若創世檔案含有該段,此構建拒絕啟動)
創世數值驗證者註冊表中質押 26,000 RAND,七張存入票據共 3,938.879078887 RAND(承接自運營方在鏈 20 上的錢包),以及向庫房多重簽名發行的 100,000 RAND:水龍頭鑄造前合計 129,938.879078887 RAND(rand_getSupply 報告 genesis_staked、genesis_deposited 及 multisig_issued);另有三張創世票據合共 100.001999 zUSD,與其支持資產上鎖定的 zUSD 相符

引導節點(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

鏈 21 使用鏈 14 至 20 所用的驗證節點密鑰,因此這些對等節點 ID 自鏈 14 密鑰輪換以來並無變動。

區塊瀏覽器 randscan.org 為鏈 21 建立索引,並在 https://randscan.org/api/v1 提供 REST API(Explorer API)。全節點的 JSON-RPC 預設綁定至 127.0.0.1:8545;可自行運行節點(運行節點)、使用你信任的節點,或使用公共端點 https://rpc.randprotocol.org(rand --rpc https://rpc.randprotocol.org …)。公共端點提供錢包所需的一切服務,包括首次同步與發送交易,限制為每個地址每分鐘 1,200 次讀取及 6 次發送。它不提供水龍頭服務。

從水龍頭取得 RAND

水龍頭是一種交易類型:驗證節點向屏蔽地址鑄造一張公開數額的票據,而這張票據只有地址持有者才能打開。在鏈 21 上,一如鏈 20,它只向創世允許清單上的 16 個地址發放:向任何其他地址鑄造會被拒絕,並回應 the faucet may not mint to this recipient (not in staking.faucet_recipients),因此不在清單上的錢包只能由他人轉贈而取得測試 RAND。以下三種途徑均須向驗證節點請求鑄造;觀察節點會回應 faucet mints are signed by validators; ask a validator node,而公共 RPC 端點根本不轉發 rand_mint。

使用 rand 錢包,指向某個驗證節點的 RPC:

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> 可向另一個地址鑄造,或鑄造較小的數額;100 RAND 既是預設值,也是每次調用的上限。透過 JSON-RPC,同一請求即為 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"]}'

結果為 mint 交易的哈希;請輪詢 rand_getTransaction,直至其返回區塊。金額為以單位計的字串,1 RAND 為 10⁹ 單位。錢包應用程式內設有同一水龍頭,一觸即可領取;如要從中發送,請使用 Rand Wallet v0.8.0,即首個適用於 chain 21 的版本(哪款錢包可在 chain 21 上發送)。本站的水龍頭頁面接受 devnet 撥款的候補名單申請。

mint 的金額在鏈上是公開的:任何由透明地址存入屏蔽地址的交易,都有這一跳的可見性。其後該 note 對何人值多少,則與其他 note 一樣被隱藏。

下一步

fullnode 代碼庫自身的 docs/ 目錄是這些頁面所核對的來源,而論文則載有密碼學背景。

最後一次對照 fullnode 提交 c0878c3f(chain 21)核實的日期為 2026-10-12。