使用本頁,可在創建、上架或索引代幣之前,先了解這條鏈上的代幣是甚麼。RPL 是 Rand 的代幣標準,於 chain 14 新推出。代幣是一種屏蔽式原生資產:它是賬本登記表中的一個條目,餘額以普通票據的形式存放於 RAND 所用的同一棵承諾樹中。它不是合約。如需逐步創建代幣,請參閱部署 RPL 代幣。
原因在於結構。Call 只寫入收據,因此 ERC-20 式的合約無處存放餘額;而公開的餘額表會令代幣成為屏蔽式鏈上唯一的透明資產。RPL 改為把代幣設為賬本中的一等對象。Chain 20 新增了 RPL-2(v0.6.8):程式可以保存公開的狀態單元和公開金庫,也可以成為自身代幣的鑄造授權方(見下文);由個人持有的餘額仍然是票據。Chain 21(fullnode v0.8.0,自 2026-10-12 起上線)在金庫之外再增加兩類公開的代幣持有方:RPL-3 perps,一個永續期貨引擎,其唯一市場 BTC-PERP 以 zUSD 作抵押;以及多重簽名賬戶,即 M-of-N Dilithium2 賬戶,按資產持有公開餘額(交易)。
代幣是一個登記表條目
TokenRegistry(crates/randprotocol-core/src/ledger/tokens.rs)是所有代幣共用的一張表,不論是原生代幣還是橋接代幣。橋正是通過這張登記表解析資產的索引。每個條目如下:
| 欄位 | 規則 |
|---|---|
id | 資產 id,32 字節,內容定址 |
index | u32,票據的 asset 字所攜帶的值;密集排列,按登記順序由 1 起分配。索引 0 是 RAND,從不登記 |
name | 1 至 32 字節的 UTF-8,允許空格,不可變 |
symbol | 1 至 12 個 ASCII 可見字節(0x21..=0x7e,不含空白),不可變 |
decimals | 0 至 9,不可變 |
authority | 鑄造授權方,見下文 |
mint_nonce | Key 授權方的重放計數器 |
total_supply | u64,採用檢查式算術;溢出時拒絕鑄造。自 chain 15 起,其值保持在 2^63 以下(見下文) |
registered_at | 登記時的區塊高度 |
小數位數止於 9,是因為金額為 u64:在 18 位小數下,u64 只能容納 18.4 個完整代幣,而 9 正是 RAND 本身的精度。橋接代幣一律以 8 位小數登記,不論其來源幣種使用多少位。
登記表由創世文件中的 tokens 部分啟用,一如 bridge 和 aggregation 各由自己的部分啟用。若無此部分,所有代幣操作都會在任何其他檢查之前被拒絕(TokenError::Disabled)。Chain 21 的創世文件設有此部分,並列出一個代幣 zUSD 及其七個後盾,自 chain 14 起歷次切換均予沿用;鏈上其餘代幣一概通過交易產生,且都不會跨切換延續:chain 20 在創世後登記的十一個代幣(durian.market 的 DUR 及其 LP 份額、示例程式代幣、RUSD)因均非橋接支持,已連同其票據在 chain 21 切換時被丟棄。(Chain 14 的創世文件未列出任何代幣。)啟用此閘門後,tokens_root(按索引順序,由 blake3("rand-token-leaf-1", bincode(TokenInfo)) 葉節點構成的默克爾根)會折入狀態根。在沒有啟用任何後續功能的鏈上,該根的域為 rand-state-4;chain 20 的根還包含水龍頭與債券隊列狀態、現行 gas 價格以及程式狀態根,以 rand-state-8 哈希,並再由獲准驗證者集合包裹一層;chain 21 的則加入 perps 狀態(rand-state-9)和多重簽名登記冊(rand-state-multisig-1)(共識)。
設有 tokens 部分的鏈還要求每一個創世 alloc 票據附帶其開啟資料(pk、time、r),節點會重新計算承諾,並拒絕不匹配的文件。除非開啟資料指明同一創世文件所列代幣的索引,否則承諾屬於資產 0——chain 21 有三個此類票據,分別為索引 1 的 10、89.002999 和 0.999 zUSD(chain 20 有兩個,10 和 89)——並且對於每個所列代幣,創世票據之和必須等於其後盾起始的 locked。一旦票據的 asset 字可以指明某個代幣,未開啟的創世承諾便會成為唯一的途徑,可讓任何資產的無後盾票據不經檢查地進入資金池。
資產 id、索引與 rpl1…
一個代幣有兩個名稱,RPC 兩者都會給出。
- 資產 id 為 32 字節,與程式 id 一樣採用內容定址。原生代幣的 id 是
blake3("rand-rpl-asset", bincode(name, symbol, decimals, authority, initial, salt)),其中salt是創建者選定的 32 字節,initial是整筆初始鑄造(如有)。橋接代幣的 id 是blake3("rand-rpl-asset", bincode(name, symbol, 8, salt))。登記已存在的 id 會被拒絕(TokenError::AlreadyRegistered)。 - 索引是票據實際攜帶的值,因為 32 字節的 id 無法放入一個字。它是一個簡寫,只在這條鏈上有意義。
- 文本形式
rpl1…是 bech32m(BIP-350),人類可讀部分為rpl,涵蓋 32 個 id 字節:52 個數據字符加 6 個字符的校驗碼,合共 62 個字符。凡提及代幣之處,它都會與 64 位十六進制 id 並列顯示,並且在查詢代幣之處均可接受;十六進制同樣仍被接受。解析十分嚴格:校驗碼錯誤、前綴有誤、有效載荷不足或超過 32 字節,或大小寫混用,一律被拒絕,因此輸入錯誤不會解析為另一個代幣。
**符號並非唯一。**與 ERC-20 和 SPL 一樣,代幣的身份是其資產 id,絕不是其名稱或代號。
rand_bridgeAssetId 計算並由 rand_getAssets 按每個後盾行列印的舊式 (chain, token) 值,是橋接線路格式所用的較窄標識符,並非代幣本身的 id。
鑄造授權方
| 授權方 | 誰可發行單位 | 備註 |
|---|---|---|
None | 登記之後無人可發行 | 固定供應:必須有初始鑄造,且這就是日後的全部供應量 |
Key(PublicKey) | 一把 Dilithium2 密鑰的持有人 | 日後可憑簽名再次鑄造;可將授權移交給另一把密鑰或予以放棄 |
Bridge { backings } | 僅限橋的鎖定與釋放 | 絕不直接鑄造;僅通過橋的治理操作存在 |
Program(ProgramId) | 僅限該程式的 Invoke(RPL-2) | 在設有 program_state 部分的鏈上(chain 20 和 21):登記時不設初始鑄造,因此供應量從零開始,且只能由程式的證明所擔保的轉換進行鑄造或銷毀(rand token create --program <id>)。在沒有該部分的鏈上,登記時被拒絕 |
指明 Bridge 的 RegisterToken 會被拒絕(TokenError::AuthorityNotAllowed),指明 Program 但附帶初始鑄造,或在沒有 program_state 的鏈上指明 Program,亦然。Key 授權方恰好是一把 Dilithium2 公鑰:任何其他字節長度的密鑰都會被拒絕(TokenError::BadAuthorityKey),鑄造中收款方的 ML-KEM 密鑰同樣受長度限制。兩者都屬於共識狀態,或是以固定費用購買的區塊空間,因此都不可任意增大。
創建代幣
創建無需許可。Action::RegisterToken { name, symbol, decimals, authority, initial, salt, index } 附於普通的 RAND 費用捆綁包上,支付 BUNDLE_BASE 加上登記表的 registration_fee。登記費是創世參數,限定在 1 RAND 至 10,000 RAND 之間,因此垃圾代幣總要付出代價。在 chain 20 上為 1 RAND,所以一次登記需 1.001 RAND,並且 chain 20 會將其銷毀,一如自 chain 15 起的每條鏈:提議者只保留捆綁包基本費用(見下文)。
index 指明創建者為初始票據所封裝的登記表索引。若另一筆登記先佔用了該索引,交易會被拒絕(TokenError::IndexMismatch),而不會令票據滯留;創建者在下一個索引處重新證明。
所鑄造的票據由鏈計算,而非由提交者選定:note_commitment(recipient.pk, MINT_FROM, amount, index, time, r)。金額和收款方的 pk 在線路上是公開的,因此即使封裝的信封是亂碼,收款方也能根據交易自身的欄位重建該票據。橋接存款有同樣的防護。
為何 id 綁定整筆初始鑄造
RegisterToken 不帶簽名。交易綁定可防止已證明的副本被改動,但並不約束新副本可指明甚麼。倘若 id 只涵蓋初始金額,待處理登記的觀察者便可提交一份收款方不同的副本,以相同 id 登記,並藉搶先提交而奪走固定供應量代幣的全部供應。由於 id 涵蓋整筆初始鑄造(金額、收款方、r、time 和信封),被改向的副本會哈希成另一個資產 id:一個符號相同的不同代幣,而這是非唯一符號本來就允許的。原本的登記仍會在下一個索引落地,代價只是一次重新證明。
轉賬與 RAND 使用同一種捆綁包
自第 14 條鏈起,每宗轉移價值的交易都恰好帶有一個 bundle,即固定的 4 入 4 出隱藏資產形態(交易與 action)。槽位 0–1 承載一種私密資產,可以是 RAND 或任何 RPL 代幣,而電路從不知道是哪一種。槽位 2–3 一律承載 RAND。任何資產的轉移都是 Action::None,即普通 RAND 支付所用的 action。沒有代幣轉移 action,也沒有任何公開欄位指明是哪種代幣。
旁觀者在一宗代幣轉移中所見,與一宗 RAND 支付所公開的完全相同:一個錨點(anchor)、四個 nullifier、四個承諾(commitment)、以 RAND 支付的 fee、burn_a = burn_r = burn_asset = 0、一個 time、四個信封密文,以及 bundle 證明。自第 17 條鏈(拆分授權)起,每個 bundle 還帶有一個 auth_commit 和第二個較小的授權證明,同樣對每種資產都一樣。在第 20 條鏈上,每個信封恰好為 1,860 字節,並留有加密備忘的空間(rand send --memo),不論是否附上備忘。旁觀者看不到發送者、接收者、金額、移動的是哪種資產、哪些槽位是虛設的,也看不到找零。
錢包在槽位 0–1 最多花費兩張該代幣的 note,並在槽位 2–3 最多花費兩張 RAND note 以支付費用。費用一律以 RAND 支付,因此持有代幣但沒有 RAND 的持有人,會在生成證明之前被拒絕。成本與 RAND 支付相同(費用)。自第 17 條鏈起,這是在發送者自己的機器上生成的兩個 STARK 證明;於第 20 條鏈上的實測為:支出授權(tier 10,約 7 秒,約 1.37 MB)及 bundle(tier 14,約 100 秒,約 1.5 MB),兩者合共約 2.85 MB 經網絡傳送,每個證明均在該鏈對單一證明的 4 MiB 上限之內。第 21 條鏈的證明屬約束集 9,上限為 6 MiB,此處尚未實測。在第 17 條鏈之前,一宗轉移只帶 bundle 證明,當時實測約為 1.42 MB。
鑄造與授權方
TokenMint { asset, amount, recipient, r, time, envelope, nonce, signature } 鑄造更多由 Key 授權的代幣。SetAuthority { asset, new, nonce, signature } 把授權方移交予另一個密鑰;若 new 缺省,則放棄授權權限;放棄之後,再沒有任何密鑰能鑄造該代幣。對授權方並非 Key 的代幣執行上述任何一項 action,均會被拒絕(TokenError::NotKeyAuthority)。
授權方簽署 blake3("rand-rpl-mint-1" | "rand-rpl-authority-1", chain_id ‖ asset_id ‖ nonce ‖ body)。nonce 必須等於該代幣的 mint_nonce,其後會遞增,因此已簽署的鑄造不能在這條鏈上重放,也不能帶到另一條鏈。鑄造的 body 包含信封的摘要:僅憑承諾並不涵蓋信封,若沒有該摘要,第三方便可把已廣播的鑄造交易改用一個無意義的信封重新包裝,並耗用該 nonce。
兩項 action 均附在一個支付 BUNDLE_BASE 的 RAND 費用 bundle 上。支付費用的錢包與授權鑄造的密鑰是各自獨立的,可以屬於不同的人。
銷毀
Action::TokenBurn { asset, amount } 附在同一個 bundle 上:該 bundle 的 burn_asset 必須等於 asset,burn_a 必須等於 amount,burn_r 為 0。代幣經資產槽位離開資金池,而 RAND 費用則經同一證明的槽位 2–3 支付。total_supply 恰好減少 amount。Bridge 授權的代幣在此會被拒絕(TokenError::BridgedToken);它須經橋接銷毀離開。
費用
每項 RPL action 均以 RAND 支付。
| action | 費用下限 | 第 21 條鏈(與第 20 條鏈相同) |
|---|---|---|
任何資產的轉移(Action::None) | BUNDLE_BASE | 0.001 RAND |
RegisterToken | BUNDLE_BASE + registration_fee | 1.001 RAND,其中 1 RAND 被銷毀 |
TokenMint | BUNDLE_BASE | 0.001 RAND |
SetAuthority | BUNDLE_BASE | 0.001 RAND |
TokenBurn | BUNDLE_BASE | 0.001 RAND |
第 21 條鏈的創世區塊設有 gas 部分,與第 20 條鏈相同,只為程式調用(call)與 invoke 定價。這些下限是固定的:任何 RPL action 都不按 gas 或字節數計費。在第 21 條鏈上,每項下限均被銷毀,提議者保留小費(費用);註冊費中的 1 RAND 早已被銷毀。
哪些公開、哪些隱藏
| 公開 | 隱藏 | |
|---|---|---|
| 註冊 | 名稱、符號、小數位數、授權方、資產 id、首次鑄造的金額及接收者 | 無;代幣的供應量因此自第一個區塊起即可審計 |
| 其後的鑄造 | 金額、接收者的 shielded 地址、新 note 的各欄位 | 誰支付了 RAND 費用 |
| 轉移 | 完全沒有任何內容顯示有代幣移動 | 發送者、接收者、金額、哪種資產 |
| 銷毀 | 資產及金額 | 誰持有被銷毀的 note |
| 授權變更 | 新密鑰,或已放棄授權 | — |
因此 total_supply 始終可供審計:它等於註冊及每次鑄造所增加的數量,減去每次銷毀。持有人之間的轉移不會洩露任何資訊,包括易手的是代幣而非 RAND 這一點。
披露的運作方式與 RAND 相同。note 明文載有資產,因此單筆交易密鑰(rand tx-key <hash>)或查看密鑰(viewing key)開啟代幣 note 的方式,與開啟 RAND note 完全一樣,而 rand_checkTransaction 與 rand_getViewingNotes 會在其披露的 note 中返回 asset。取得此類密鑰後,randscan 會對照登記冊解析索引,並把該轉移顯示為具名代幣;同一宗交易的公開頁面則完全不顯示這些內容。
橋接代幣
Bridge 授權的代幣仍然是 RPL 代幣:同樣的登記冊條目、同樣的隱藏轉移、同樣的銷毀機制。其供應量只會因來源鏈上的鎖定(BridgeAttest)或釋放(BridgeBurn)而變動。一個橋接代幣可以有多個支持資產(backing),每個均為 (chain, token) 配對,各有其來源小數位數、鎖定金額及鑄造上限,而 total_supply 始終等於各支持資產所鎖定金額之和。橋接代幣的註冊及新增支持資產,均須經橋的後量子守護者(guardian)法定人數批准。
在第 21 條鏈上,登記冊的第一個代幣是 zUSD(「Shielded USD」),索引 1,8 位小數,在創世文件中列有七個支持資產(Ethereum、Binance Smart Chain 及 Solana 上的 USDT 與 USDC,以及 Tron 上的 USDT)。它沿用在第 14 條鏈上的資產 id,當時它在高度 256 經交易註冊:第 15 至 21 條鏈均在創世文件中以相同的名稱、符號及 salt 列出它。第 21 條鏈開始時,它在三個創世 note(10、89.002999 及 0.999)中共有 100.001999 zUSD,由鎖定在 Ethereum 的 22 USDT、Binance Smart Chain 的 23.001999、Tron 的 30 及 Solana 的 25 支持,這些數字承接自第 20 條鏈在高度 814,702 的橋狀態。第 20 條鏈開始時有 99 zUSD,分屬兩個 note(10 及 89),承接自第 19 條鏈。第 19 條鏈開始時有 10 zUSD,由 Solana 上的 10 USDT 支持;第 18 條鏈則由鎖定在 Tron 的 9 USDT 及 Solana 上的 1 USDT 支持。其總供應量等於各支持資產所鎖定的金額,並隨每次存入及贖回而變動。其 id 為 rpl1xtj6k2x8strx8c2d5fjs50ltztck5ykms4ve7nmzmstf6fhn0v0spelqtx。橋接說明支持資產、釋放單位、鑄造上限、暫停機制及共同簽署。
zUSD 是一籃子資產,而不是七份獨立的債權。 其各支持資產按面值匯集,因此持有人承擔的是每一個已列出支持資產的風險,而非自己存入的那種幣的風險:已失去錨定的支持資產仍可按面值存入,並把 zUSD 銷毀以換取穩健的支持資產,直至穩健者被提盡。損失的界限由滾動鑄造窗口(在第 21 條鏈上與第 20 條鏈相同,所有支持資產合計每 24 小時 4,000 zUSD,另加每個支持資產 100,000)及實際鎖定的託管資產所決定。該窗口限制速率,並為暫停鑄造爭取時間,但並不為總額設限。支持資產須經後量子守護者法定人數批准方可列入,且在暫停鑄造期間不得列入。
橋接費用,以 zUSD 計(自 chain 20 起)。 Chain 20 的創世區塊設定了 bridge.fees,chain 21 原封不動沿用:存款收取 10 bps,銷毀亦收取 10 bps,各自向下取整至抵押資產的整數釋放單位(6 位小數的 USDT 為 100 個基本單位),並以 zUSD note 的形式支付予創世區塊指定的國庫地址(v0.6.8,fullnode docs/bridge.md §25)。一筆金額為 g 的存款會附加兩個 note:存款人的 g − fee 與國庫的 fee;存入 1 USDT,存款人得到 0.999 zUSD。一筆金額為 amount 的銷毀會將 fee 以國庫 note 的形式保留,並在來源鏈上釋放 amount − fee;守護者簽署的是該釋放金額,而 rand_getBridgeBurn 會返回 amount、release_amount 及 fee。費用 note 屬已發行且有抵押支持,因此 total_supply 仍等於各抵押資產 locked 之和:一筆存款令兩者同時增加 g,一筆銷毀令兩者同時減少 amount − fee。費用 note 不附帶信封。它的每一個字段都是公開的(金額來自交易及創世區塊訂明的費率,資產與 time,由證明摘要或銷毀交易 id 推導的盲化因子,以及來自創世區塊的擁有者),因此國庫的錢包可由公開字段重建該 note(Notes)。BRIDGE_BURN_FEE,即一筆銷毀支付予提議者的 0.01 RAND,維持不變。Chain 14 至 19 在 Rand 上沒有橋接費用。
自 chain 15 起的登記冊
自 chain 15 起,創世區塊啟用了三項 chain 14 所沒有的登記冊規則,而 chain 21 的創世區塊與 chain 20 一樣,設定了相同的三個數值。每一項均已寫入創世區塊哈希及代幣根。
| 創世區塊字段 | chain 21(與 chain 20 相同) | 效果 |
|---|---|---|
tokens.max_tokens | 4096 | 登記冊容量不會超過此數;達到上限時,RegisterToken 與 RegisterBridgedToken 會被以 RegistryFull 拒絕。ListBacking 不新增代幣,不受影響 |
tokens.burn_registration_fee | true | 登記的 registration_fee 會被銷毀,而非支付予提議者;提議者保留 fee − registration_fee。rand_getSupply 將其計入 burned 及 registration_fees_burned(Supply) |
tokens.bound_note_value | true | 數額達 2^63 或以上的 TokenMint、初始鑄造或橋接存款會被以 AmountTooLarge 拒絕;令代幣 total_supply 達到或超過 2^63 的,則以 SupplyTooLarge 拒絕 |
設定 note 數值上限,是因為 bundle 電路會將每個數額範圍檢查至 63 位元:價值達 2^63 或以上的 note 可以被承諾,卻永遠無法花費,同時仍會計入代幣的供應量。無論創世區塊如何設定,每個節點在所有鏈上的准入階段也都會拒絕此類數額。
RPC 與 CLI
| 方法 | 參數 | 結果 |
|---|---|---|
rand_getTokens | [from_index, limit],可選,預設為 0 及 1000,上限鉗制為 1000 | { enabled, registration_fee, next_index, max_tokens, burn_registration_fee, bound_note_value, tokens },按索引升序排列,自 from_index 起按範圍讀取 |
rand_getToken | [token]:索引、64 位十六進制 id 或 rpl1… | 單一代幣的行,或 null;格式有誤的 id 返回 -32602 |
rand_getTokenSupply | [token],形式相同 | { total_supply, backings };原生代幣的 backings 為空 |
這些結果中的每個數額(total_supply、registration_fee、抵押資產的 locked、mint_cap_per_day 及 minted_today)均為十進制字串,因為 JSON 數字在 2⁵³ 以上並不精確。index、next_index、mint_day 及 max_tokens 為普通整數(在沒有上限的鏈上,max_tokens 為 null);burn_registration_fee 與 bound_note_value 為布林值。一行的 authority 為 {"kind":"none"}、{"kind":"key","key","address"}、{"kind":"bridge","backings":[…]} 或 {"kind":"program","program"}。詳情見 JSON-RPC。
私隱。 無論調用者心中所想的是哪個代幣,rand_getTokens 的開銷都相同。rand_getToken 與 rand_getTokenSupply 會讓節點得知調用者關注哪個代幣:用於瀏覽器尚可,用於即將發送的錢包則不妥。因此錢包會從完整列表解析每個 --asset,數字索引完全不會送達節點。
| 命令 | 作用 |
|---|---|
rand token create | 在登記冊的下一個索引登記一個代幣,固定供應量或由 Key 授權 |
rand token mint | 增發由 Key 授權的代幣,由其授權密鑰簽署 |
rand token set-authority | 將授權移交另一個密鑰(--new-key),或放棄授權(--renounce) |
rand token burn <ASSET> <AMOUNT> | 銷毀此錢包持有的單位 |
rand token info <ASSET> | 單一代幣的完整行 |
rand token list | 登記冊的一頁 |
rand send <TO> <AMOUNT> --asset <INDEX|rpl1…|hex> | 以單一 bundle 發送代幣;不帶 --asset 則發送 RAND。它會在證明前打印接收者的指紋及金額,並詢問 send? [y/N](--yes 可略過此問題) |
rand asset-balance [INDEX] | 此錢包持有某一資產的數量,或逐資產列出一行 |
rand token register-bridged、rand token list-backing | 橋接的兩項上架操作;各自需要一份 PQ 守護者法定人數檔案 |
自 v0.5.10 起,rand send --asset、rand token mint 及 rand token burn 的數額以代幣的顯示單位計,按其登記冊行自身的 decimals 讀取:6 位小數代幣的 1.5 即其最小單位的 1,500,000,小數位數多於代幣所有者將被拒絕。send 的確認訊息會同時打印兩者(1.500000 USDX (1500000 units))。rand token create 的 --fixed-supply 與 --initial 仍以完整最小單位計,rand bridge-burn 亦然,而 rand asset-balance 則打印最小單位。在鏈上,數額一律為最小單位的整數。旗標與預設值見命令列。
與 ERC-20 及 SPL 的差異
| ERC-20 / SPL | RPL | |
|---|---|---|
| 餘額 | 公開的映射或賬戶 | shielded note;只有密鑰持有者看得見 |
| 轉賬事件 | 公開,附帶發送者、接收者及金額 | 無;轉賬不會公開任何可區分的資訊 |
| 每個代幣的代碼 | 可行:稅項、rebase、鈎子、凍結 | 無;每個代幣遵循相同的固定規則 |
| 由程式持有 | 是 | 自 chain 20 起(RPL-2):程式的公開保險庫,由 invoke 的銷毀字段注入,並以鏈上計算的 note 支付 |
| 由多重簽名賬戶或永續合約引擎持有 | 是 | 於 chain 21(v0.8.0):多重簽名賬戶按資產計的餘額(與保險庫一樣公開),以及永續合約引擎的 zUSD 抵押品;永續合約的支付是由鏈計算的 note,與保險庫相同 |
| 數額 | 最多 256 位元(ERC-20)、64 位元(SPL) | u64,最多 9 位小數 |
| 接收 | ERC-20 無需設定;SPL 需要關聯代幣賬戶 | 無需設定;shielded 地址可接收任何代幣 |
| 轉賬成本 | 普通的 EVM 或 SVM 執行 | 由發送者證明:共用的隱藏資產 bundle,自 chain 17 起旁邊另有一個小型授權證明 |
| 授權 | approve / transferFrom | 尚未支援 |
| 元數據 | 部分實現可變 | 存於鏈上且不可變 |
| 凍結、黑名單 | 部分代幣可行 | 設計上不在範圍內 |
已知限制
- 沒有授權額度。
approve與transferFrom在 RPL 規範中設計為專款授權額度賬戶,但尚未構建。 - 程式的持倉是公開的。 自 chain 20 起,程式可在其保險庫持有代幣並鑄造自己的代幣(RPL-2),但保險庫餘額是公開的,與代幣的供應量一樣;只有 note 是私密的。Chain 20 之前完全沒有程式狀態,而 chain 21 的多重簽名賬戶與永續合約引擎以同樣的公開方式持有代幣。
- 費用只能以 RAND 支付。 代幣不能支付自身的費用;只持有代幣的錢包無法轉賬。
u64數額,最多 9 位小數。 18 位小數的來源幣種會以較低精度表示;橋接以 8 位小數及每項抵押資產一個釋放單位來處理此問題。- 每筆轉賬都需要證明。 在發送者的機器上約需 100 秒及數 GB 記憶體;代幣的轉賬並沒有比 RAND 更廉價的途徑。
- 原生代幣沒有凍結、黑名單或暫停,這是既定決策。橋接的鑄造暫停只適用於橋接鑄造。
- 逐代幣查詢會洩露關注點。
rand_getToken、rand_getTokenSupply及瀏覽器的/tokens/:id會讓伺服器得知查詢的是哪個代幣。