使用本頁可在測試鏈上運行水龍頭,了解 Mint 交易在鏈上的格式,並確切看到質押(bond)或跨鏈銷毀(bridge burn)如何把價值移出資金池。每一筆進入和每一筆離開都是公開的,兩者之間的一切則是票據。
水龍頭鑄造
在 chain 21 上,與 chain 20 相同,Mint 是創世之後創造 RAND 的唯一途徑,並且只存在於創世文件寫明 "faucet": true 的鏈上。它是一筆由驗證者簽署、不含捆包的交易:
Action::Mint { cm: Word8, pk: Word8, time: u32, r: Word8, envelope: Envelope, amount: u64,
minter: PublicKey, signature: Signature }
驗證者節點上的 rand_mint(address[, amount]) 會為指定的 rand1… 地址建立一張面額為 amount 的票據,用一次性的發送方密鑰封存其信封,以節點自身的 Dilithium2 密鑰簽署該筆鑄造,再經一般交易池提交,因此鑄造會經過共識,並由每個節點套用。每次調用的上限為 100000000000 單位,即 100 RAND,預設值即為上限。自 chain 14 起,鑄造附帶票據的開啟資料(opening):pk、time 和 r,且簽名涵蓋這些資料:准入檢查會重新計算 (pk, no sender, amount, asset 0, time, r) 的承諾,若 cm 不相符即以 the mint's commitment does not open to its published note and amount 拒絕,並把 time 限制在捆包的時間窗口內。rand_mint 的參數維持不變。在 chain 14 至 19 上,被簽署的訊息為 blake3("rand-mint-2" ‖ bincode(chain_id, cm, pk, time, r, envelope, amount));在創世文件設定 binding_domain: 1 的 chain 20 上,則為 rand-mint-3,後接創世哈希及同樣的欄位,因此為某條鏈簽署的鑄造會被任何其他鏈拒絕,即使該鏈與其共用鏈 id 和驗證者密鑰。觀察節點沒有驗證者密鑰,會回應 faucet mints are signed by validators; ask a validator node;沒有該旗標的鏈則回應 faucet is disabled on this chain。
Chain 21 的水龍頭已開啟,但受其創世文件 staking 部分所限,數值與 chain 20 相同:
| 規則 | chain 21(同 chain 20) | 拒絕訊息 |
|---|---|---|
| 接收者 | 16 個錢包的許可名單(staking.faucet_recipients);鑄造所公開的 pk 必須在名單內 | the faucet may not mint to this recipient (not in staking.faucet_recipients),永久拒絕 |
| 預算 | 每個 1,000 區塊的紀元 10,000 RAND(staking.faucet_budget_per_epoch),所有驗證者合計 | the faucet budget of … for this epoch is exhausted (… minted);下一個紀元會接納 |
| 鑄造者 | 26 個驗證者中的 18 個(staking.faucet_minters,自 chain 16 起列明);鑄造必須由其中之一簽署 | minter … is not a faucet minter on this chain |
因此,rand faucet 在 chain 21 上只對名單內的錢包有效,且須向密鑰屬於名單內鑄造者的驗證者節點提出請求;任何其他地址都必須由持有 RAND 的人支付。
rand faucet # 100 RAND to this wallet's address, waits for the commit
rand faucet rand1… --amount 25 # to another address, less than the cap
→ {"method":"rand_mint","params":["rand1…", "100000000000"]}
← "9ab1c0…4f"
公開的內容包括:新票據的承諾、其信封、明文金額,以及鑄造驗證者的公鑰(以其地址顯示)和簽名。開啟資料同時公開票據的擁有者密鑰 pk,因此水龍頭票據的擁有者是公開的,一如提款的收款方;保持隱藏的是該票據日後何時、在何處被花費。從「鑄造了 100 RAND」到「存在一張價值 100 RAND 的票據」這一步的關聯,與任何地方的透明至屏蔽存款所具有的可見性相同。准入檢查包括:水龍頭已啟用、金額低於上限、該紀元的預算尚有餘額、在創世文件設有許可名單時接收者在名單內、承諾可開啟為所公開的票據、鑄造者是驗證者且(在創世文件設有鑄造者名單時)在該名單內,以及簽名驗證通過;鑄造不收取手續費。
rand_getTransaction 把它呈現為 { "kind": "mint", "cm": "…", "amount": "100000000000", "minter": "<validator base58>" },並帶有 "bundle": null;金額為十進制字串,與自 chain 14 起 RPC 提供的每個 u64 金額一樣。瀏覽器在 kind=mint 下列出這些交易,這是少數帶有公開 amount 的類型之一。
創世存款
價值進入的另一途徑是創世文件:傳給 rand-node genesis 的每個 --alloc rand1<address>=<RAND> 會成為一筆存款票據 { cm, envelope, amount, opening },附帶全新的承諾隨機數,成為樹的最初幾片葉子。Chain 21(fullnode v0.8.0,自 2026-10-12 起上線)有十張創世票據:七張 RAND 票據,合共 3,938.879078887 RAND(genesis_deposited),即透過掃描 chain 20 資金池在區塊高度 822,056 至 822,229 所得的營運方餘額;以及三張 zUSD 票據,面額為 10、89.002999 和 0.999 zUSD,即從 chain 20 在區塊高度 814,702 的狀態承接的 100.001999 zUSD 跨鏈託管(跨鏈橋),它們不是 RAND,也不計入 genesis_deposited。營運方並不持有的錢包在 chain 20 上持有的 RAND,約 36,025 RAND(其中 35,040 為鑄造給許可名單接收者的水龍頭鑄造),以及 2.606 RAND 未提取的驗證者手續費,均未承接。另有一個創世條目根本不是票據:基金會金庫,即 100,000 RAND 的新發行量,存於由 3 名 Dilithium2 簽署者中 2 人控制的多重簽名帳戶,是多重簽名登記冊中的公開餘額(multisig_issued),只能透過 MultisigPay 所建立、由鏈計算的票據進入資金池。歷史:chain 20 有九張,七張 RAND 票據共 5,184.243719258 RAND,以及兩張 10 和 89 的 zUSD 票據,承接自 chain 19;chain 19 有八張,七張 RAND 票據共 5,294.644359629 RAND,另有一張 10 zUSD;chain 18 有六張 RAND 票據,五張為 1,000 RAND,一張為 300 RAND;chain 14 和 15 各有五張 1,000 RAND。金額是公開的,以便任何人都能加總初始供應量;自 chain 14 起,票據同時附帶其開啟資料,因此創世票據的擁有者是依設計公開的。以相同的分配重新生成創世文件,會得到不同的票據和不同的創世哈希,這是刻意的設計。
銷毀
每筆交易帶有一個四槽的隱藏資產捆包,並有兩個銷毀字段:burn_r 是離開資金池進入公開位置的 RAND,burn_a 是 burn_asset 所指代幣的數量。捆包的 guest 程式在同一個證明中對兩組取得平衡,而准入要求這三者皆為零,下列操作除外:
| 銷毀 | 規則 | 價值去向 |
|---|---|---|
Bond 的捆包 | burn_r == amount | 登記冊中驗證者的公開 stake |
BridgeBurn 的捆包 | burn_asset == asset、burn_a == amount、burn_r == 0、asset != 0 | 在 Rand 上銷毀;來源鏈上的合約憑守護者簽署的銷毀訊息釋出所指幣種的 amount。自 chain 20 起,鏈會以 zUSD 票據形式向金庫收取 10 bps 的手續費,釋出額為 amount − fee |
TokenBurn 的捆包 | 與跨鏈銷毀的形式相同 | 銷毀;RPL 代幣的公開 total_supply 恰好減少同一數額 |
Invoke 的捆包(RPL-2,自 chain 20 起) | burn_r 以及 burn_asset 的 burn_a,依程式的狀態轉換所聲明 | RAND 和代幣存入程式的公開保險庫,或銷毀程式自身的代幣;保險庫只會以鏈計算的票據形式再次支付(程式) |
CreateMultisig 或 MultisigDeposit 的捆包(chain 21) | burn_r 為所支付的 RAND | 轉入多重簽名帳戶的公開餘額(multisig_rand_in);只會以 MultisigPay 所建立、由鏈計算的票據形式回到資金池(交易) |
PerpDeposit 的捆包(RPL-3,chain 21) | 市場抵押資產的 burn_a,在 chain 21 上為 zUSD | 記入永續合約引擎中的交易帳戶;提款以鏈計算的票據支付 |
(register_aggregator 的捆包同樣透過 burn_r 銷毀其創世質押;chain 21 上聚合功能已關閉。)
銷毀不是手續費。質押的銷毀是 RAND 從資金池移至登記冊,計入供應審計的 burned(並再次出現在 register_total 中)。自 chain 14 起,跨鏈銷毀為一個捆包(此前為兩個):槽 0–1 銷毀跨鏈資產,槽 2–3 支付手續費,因此它只透過該手續費 BRIDGE_BURN_FEE(0.01 RAND)影響 RAND 供應量。它必須指明支持該資產的幣種,釋出該幣種的整數單位,並且不得超出該支持所鎖定的數額(跨鏈橋)。在 chain 20 上,其創世文件的 bridge.fees 還對每筆跨鏈鑄造和銷毀以 zUSD 收取 10 bps:存款記入扣除手續費後的金額,銷毀釋出 amount − fee,每筆手續費都是記給金庫的屏蔽 zUSD 票據。手續費票據仍屬已發行且有支持,因此 zUSD 的 total_supply == Σ locked 依然成立;它不是 RAND 的移動,也不進入 RAND 供應審計。TokenBurn 支付 0.001 RAND 的捆包基礎費用;跨鏈代幣在此會被拒絕,須經 bridge-burn 離開。
自第 15 條鏈起,每條鏈上還有一項費用同時是銷毀:創世區塊設定了 tokens.burn_registration_fee,因此 RegisterToken 或 RegisterBridgedToken 的 1 RAND registration_fee 會被銷毀,而不是支付給提議者,提議者只保留 bundle 基礎費用。這筆費用計入 burned,並另行計入 registration_fees_burned(RPL tokens)。在第 21 條鏈上,每個 bundle 的費用下限同樣會被銷毀:創世區塊的 fees 部分(burn_base、burn_floor)會銷毀賬本為該 bundle 訂定的下限——0.001 RAND 的基礎費用、部署時按字計算的費用項、調用的 gas 與位元組費用項、跨鏈銷毀的 0.01 RAND——而提議者保留 fee − floor;這筆銷毀計入 burned 及 base_fees_burned(Fees)。
rand bond <validator> 1000 [--registration <hex>] # burns 1000 RAND out of this wallet's notes
rand bridge-burn <ASSET> <AMOUNT> <TO_CHAIN> <TOKEN> <TO> # burns AMOUNT of a bridged asset, released as TOKEN on TO_CHAIN
rand token burn <ASSET> <AMOUNT> # destroys AMOUNT of an RPL token this wallet holds
費用是另一個出口
每個 bundle 的 fee 都會從資金池流入區塊提議者的 rewards(一個公開的登記欄位),只有當驗證者(validator)將其以 note 的形式提取時,才會回到資金池(Staking)。Withdraw 會從提取金額中,將 0.001 RAND 基礎費用支付給應用該交易的區塊的提議者;該基礎費用從不離開登記簿,因此不算作跨越邊界。
供應量如何變動
in: genesis_deposited, faucet_minted, withdraw_deposited, program_rand_out
out: fees_paid, burned
pool_value = in − out
total_supply = pool_value + Σ register (stake + pending + rewards) + program_rand_held
== genesis_deposited + genesis_staked + faucet_minted − slashed − registration_fees_burned
program_rand_held 與 program_rand_out 自第 20 條鏈(RPL-2)起提供:Invoke 透過 burn_r 銷毀並存入程式金庫的 RAND,在資金池一側計入 burned,並由金庫持有;金庫以 note 形式支付出來的部分則回到資金池。rand_getSupply 同時提供兩者以及 invariant_holds。第 21 條鏈為永續合約引擎新增了同樣的一對計數器(perps_rand_held、perps_rand_out,在其唯一市場以 zUSD 作抵押期間均為 0),並新增五個 multisig_* 計數器:multisig_issued(庫房的 100,000 RAND)、multisig_rand_in 與 multisig_rand_out(創建和存款所銷毀存入的數額,以及付款以 note 形式支付出的數額)、multisig_base_out(付款從賬戶中支付給提議者的 0.001 RAND 基礎費用)和 multisig_rand_held(上述各項的淨額)(Supply)。
創世之後,只有水龍頭(faucet)鑄造會增加鏈上已發行的數量(第 21 條鏈的創世本身已發行 26,000 RAND 的質押、3,938.879078887 RAND 的 note 以及庫房的 100,000 RAND);而在第 21 條鏈上,被銷毀的註冊費和每一筆被銷毀的費用下限都會從中扣減:slashed 會計入被罰沒的聚合者保證金,或在創世 staking.slashing 部分之下被罰沒的驗證者質押,而第 21 條鏈兩者皆無(聚合已關閉,且 slashing 為 null)。保證金、提取、金庫存款、多重簽名存款或付款,以及永續合約存款,只是在資金池與公開登記簿之間轉移價值,並不創造任何價值;小費由資金池轉入提議者的記錄行,而其中的費用下限則被銷毀。Supply 載有各計數器及一個演算示例。區塊聚合補貼——每個已封存區塊按減半時間表發行新的 RAND,並以存款 note 的形式支付給聚合者——將會是首個按計劃進行的發行,而它在第 21 條鏈上尚未啟用。