cargo build --release で3つのバイナリが生成されます。rand-node(ノードとオペレーター向けコマンド)、rand(シールドウォレット)、rand-prover(委任プローバー)です。すべてのコマンドが -h/--help を受け付けます。このページでは、chain 20 が稼働しているビルドである v0.6.8 リリース(c9c9bd3c)を説明し、v0.6.7 で動作が異なる箇所にはその旨を記します。v0.6.8 より古い rand ウォレットは chain 20 で送金できません。chain 20 のジェネシスは、すべての証明と署名付きメッセージをそのハッシュに結び付けているためです。最初の2つは、異なる種類の鍵を扱います。ノード鍵はブロックに署名する Dilithium2 の鍵ペアであり、ウォレット鍵はオンチェーンでは何にも署名しないシールドされた支払い鍵です。
rand-node
rand-node <COMMAND>
keygen Generate a new Dilithium2 key file (refuses to overwrite an existing one)
address Print the address, public key, and libp2p peer id of a key file
genesis Write a genesis.json: every validator key is staked, each --alloc becomes a deposit note
alloc-note Print one genesis alloc note as JSON, RAND or a listed token, for splicing into a genesis
init Initialise a data directory from a genesis file
run Run the node
verify Verify the chain in a data directory without running the node
db Database maintenance on a stopped node's data directory
safety status | clear-halt | release-lock: a stopped validator's consensus safety state
status Show node status
register Print this node's Registration, for the wallet that bonds it in
admit sign | submit: the validator set's vote to admit a new key (admission by vote)
unbond Move bonded stake into unbonding
withdraw Pay released stake and rewards into a note at the payout address
bridge-gov rotate-pq | rotate-pause | cancel-rotation: the bridge's post-quantum rotations
vesting status | claim | revoke | bond | unbond: genesis vesting (chains with a vesting section)
aggregator register | unbond | withdraw — the aggregator role (aggregation chains only)
aggregate The aggregate daemon (aggregation chains only)
safety、admit、bridge-gov は v0.6.8 で新たに加わりました。balance と transfer はありません。送金にはシールドされた支払い鍵が必要で、それを持つのはウォレットだけだからです。
グローバルフラグが1つあります。--allow-test-fri-profile(または RAND_ALLOW_TEST_FRI_PROFILE=1)を指定すると、init、run、verify は fri_profile が test のジェネシスを受け付けます。このプロファイルの健全性は約17ビットにすぎず、ジェネシスファイルを書く人は誰でもこれを指定できるため、v0.6.8 以降、ノードはフラグなしではそのようなジェネシスを拒否します。テストスイートはこれを設定しますが、それ以外では設定すべきではありません。
keygen、address
| コマンド | 引数 | デフォルト |
|---|---|---|
keygen | --out <OUT> | node.key.json |
address | --key <KEY> | 必須 |
keygen は { "seed": <32-byte hex>, "address": <base58>, "public_key": <hex> } をパーミッション 0600 で書き出します。このファイルがシードの唯一のコピーです。v0.6.8 以降、keygen は既に存在する --out を拒否し(… already exists or cannot be created; refusing to overwrite a key file)、そのファイルには手を付けません。--force はないため、置き換えるには古いファイルを別の場所へ移してください。v0.6.7 以前は、確認なしに上書きしていました。address は address、public_key(16進で 1,312 バイト)、peer_id を表示します。
genesis
| 引数 | デフォルト | 意味 |
|---|---|---|
--chain-id <CHAIN_ID> | 1 | チェーン ID。トランザクションとゴシップのトピックはこれに結び付けられます |
--validator <KEY,STAKE,PAYOUT> | 必須、複数指定可 | レジスタのエントリ1件。鍵ファイルのパスまたは16進の公開鍵、RAND 建てのステーク(1,000 以上)、rand1… の支払先アドレス |
--epoch-blocks <N> | 1000 | 1エポックあたりのブロック数 |
--alloc <ALLOCS> | なし、複数指定可 | デポジットノート: rand1<address>=<amount in RAND> |
--out <OUT> | genesis.json | 出力先のパス |
--faucet | オフ | testnet 専用。Mint を有効にします。bridge セクションと併用する場合は --testnet が必要です |
--testnet | オフ | v0.6.8: "testnet": true を書き込みます。これは、ファウセットを bridge セクションと併存させるためのマーカーです。指定した場合はジェネシスハッシュの一部になります |
--no-confidential | オフ | Deploy と Call を無効にします |
--fri-profile <production|test> | production | test は安全ではなく、テストスイート用です。init、run、verify は --allow-test-fri-profile なしでこのようなファイルを拒否します |
--max-program-words <N> | なし(4096) | デプロイが運べる最大のプログラムサイズ。1..=65535。指定したときだけ書き込まれ、存在する場合は常にジェネシスハッシュの一部になるため、--max-program-words 4096 を指定することと省略することは、別のチェーンになります。このようなファイルに対して init を実行する前に、すべてのノードが v0.4 のバイナリを使用している必要があります |
--max-proof-bytes <N> | なし(2,097,152) | トランザクションが運べる最大の証明サイズ。1048576..=33554432。証明サイズの上限はすべてこれに従います |
--max-block-bytes <N> | なし(4,194,304) | 最大のブロックサイズ、すなわち最大のトランザクションサイズ。4194304..=67108864 で、かつ 2 × max_proof_bytes + 1 MiB 以上。--auth-guest を指定する場合は 3 × max_proof_bytes + 1 MiB 以上で、このとき呼び出しは3つの証明(バンドル、auth、呼び出し)を運びます |
--max-call-envelope-bytes <N> | なし(18,432) | 呼び出し入力エンベロープの最大サイズ。18432..=1048576 |
--max-program-public-words <N> | なし(0) | デプロイが固定できる公開入力の最大サイズ。0..=65535。0 は公開入力を一切認めません |
--tokens <TOKENS.JSON> | なし | RPL の tokens セクション。JSON ファイル {"registration_fee": …, "mint_cap_per_day": …, "tokens": [...]} として指定します。省略した場合、ファイルにこのセクションはなく、従来どおりのハッシュになります。bridge セクションには、0 でない mint_cap_per_day(バッキングごと、UTC の日ごと、トークンの小数点以下8桁の単位)を持つこのファイルが必要です。一覧にあるトークンには bridge セクションが必要です |
--envelope-bytes <N> | なし(従来の 1,348 バイトのエンベロープ) | すべてのノートエンベロープの正確なサイズ。バンドルの出力、ファウセットのミント、出金、ブリッジのデポジット、ジェネシスの alloc が対象です。受け付けるのは 1860 のみで、これは、すべてのエンベロープが暗号化されたメモを運べるようになるサイズです。指定した場合はジェネシスハッシュの一部になり、このコマンド自身の --alloc ノートが封印される前に設定されます |
--vesting <VESTING.JSON> | なし | vesting セクション。タイムロックされた割り当てで、{"entries": [{"id", "class", "beneficiary", "amount", "start_ms", "cliff_ms", "linear_ms", "step_ms"?, …}]} の形式です。v0.6.8 以降、取り消し可能なエントリには revokers(1〜5個の鍵)、threshold、および取り消し時の支払先となる treasury を記載する必要があり、いずれかを欠いたファイルは拒否されます |
--staking <STAKING.JSON> | なし | v0.6.8: JSON ファイルとしての staking セクション(faucet_budget_per_epoch、bond_activation_epochs、max_weight_bps、max_stake_entry_per_epoch または max_stake_entry_bps_per_epoch、registration_v2、faucet_recipients、faucet_minters、admission_by_vote、slashing)。ビルド時に検証されます |
--consensus-domain <0|1> | なし(0) | v0.6.8: 1 を指定すると、すべての投票、new-view、プロポーザルがこのジェネシスに結び付けられます |
--bundle-guest <v1|v2|v3> | v1 | hc_bundle として固定されるバンドルゲスト。v1(chain 14 と 15 が稼働させた隠蔽アセット用ゲスト)、v2(chain 16 の分岐なしゲスト)、v3(分割認可。ゲストは支払い鍵の代わりに nk とソルトを受け取る)。v3 には --auth-guest が必要です |
--auth-guest | オフ | このビルドの auth ゲストを hc_auth として固定します。これにより、すべてのバンドルは、トランザクションに結び付けられた、支払い鍵に対する auth 証明を運び、その出力はバンドルの auth_commit と等しくなります。--bundle-guest v3 では必須で、v1 または v2 とは併用できず、ファイルが書き出される前に拒否されます。指定しない場合、ファイルに hc_auth フィールドはありません |
--hardening-v6 | オフ | v0.6 のルールを有効性ルールにします(hardening_v6)。pc ウィンドウ、呼び出し不可能なデプロイ、正規の証明形式とプルーフ・オブ・ワークのワード、呼び出しバインディング、プログラムテーブルの下限が対象です。指定しない場合でも、ノードはこれらをポリシーとしてプールで拒否します |
--gas-price <UNITS> | なし(gas セクションなし) | チェーン自身が呼び出しに課す、ガスあたりの単位数(10⁻⁹ RAND)。このフラグが gas セクション(metering: "circuit")を書き込みます。以下の3つのフラグは、これがないと拒否されます。ジェネシスハッシュの一部になります |
--byte-price <UNITS> | 800、--gas-price 指定時のみ | 呼び出し証明と入力エンベロープの 1 KiB(またはその端数)あたりの単位数。0 バイト目から課されます |
--bundle-gas-limit <N> | 20479、--gas-price 指定時のみ | すべてのバンドル証明が宣言しなければならない正確な GAS_LIMIT。それ以外の値を宣言したバンドル証明は拒否されます。ジェネシスが受け付けるのは 20479 のみで、これは tier-14 のバンドルゲストにおける gas_max(14, 0, 0) です |
--gas-dynamic <TARGET_BYTES,TARGET_GAS,ADJUST_BPS> | なし(固定価格) | ブロックごとの価格コントローラーを有効にします。下限は、そのセクション自身の開始時の gas_price と byte_price です。--aggregation と併用すると拒否されます |
--max-gas-price <UNITS>、--max-byte-price <UNITS> | なし(上限なし) | v0.6.8: コントローラーが価格を引き上げない上限。それぞれ開始価格以上でなければなりません。--gas-dynamic がないと拒否されます |
--gas-byte-load paying | なし(すべてのトランザクションのバイト) | v0.6.8: 呼び出しの証明と入力エンベロープだけが byte_price を動かすため、送金のみのブロックは byte_price を動かしません。--gas-dynamic がないと拒否されます。指定できる値は paying のみです |
--binding-domain <0|1> | なし(フィールドなし) | v0.6.8: 1 を指定すると、ジェネシスハッシュがすべてのトランザクションバインディングと、署名付きのすべてのアクションメッセージ(ファウセットのミント、アンボンド、出金、RPL トークンメッセージ、アグリゲーターのアクション、ブリッジガバナンスのメッセージ)に結び付けられ、このチェーン用の証明や署名は他のどのチェーンでも検証されなくなります。省略すると、コマンドは警告を出します。v0.6.8 のウォレットは、14〜19 以外のすべてのチェーン ID でジェネシスに結び付けた形式で証明を生成するため、chain 20 以降のすべてのチェーンは 1 で作成されます |
--proof-window-blocks <N> | なし(256) | v0.6.8: バンドルのアンカーとその time がどこまで古くてよいかを決める単一のウィンドウ。256〜4,096 ブロック。rand_getLimits.proof_window_blocks として提供されます |
--program-state-cell-fee <UNITS> | なし(program_state セクションなし) | v0.6.8、RPL-2: プログラムセル、プログラムボールト、Invoke アクションを有効にします。このセル手数料は RAND の単位(最大 1,000 RAND)で指定し、invoke が作成するセルごとに、その invoke の手数料下限へ加算されます。--tokens、--gas-price、--hardening-v6、--auth-guest が必要で、欠けている場合はファイルが書き出される前に、それぞれ名指しで拒否されます |
--aggregation <BOND,MAX_COVERS,SUBSIDY,HALVING,WINDOW>、--admitted-shape <…> | なし | aggregation セクション。v0.6.8 のビルドは、これを含むジェネシスでは起動を拒否します |
--alloc ごとに alloc の行を1行表示し、続いてジェネシスハッシュ、バリデータ数とノート数、エポック長、5つの上限、hc_bundle と hc_auth(--auth-guest がなければ none)を表示します。その後にガスの行が続きます。gas: price P/gas, B/KiB, bundle limit N, dynamic: target … B / … gas, adjust … bps, floor …/…, ceiling …/…, byte load all|paying、または --gas-price がなければ gas: none です。--program-state-cell-fee を指定した場合は、program_state: cell fee N RAND の行も表示されます。init も同じガスの行を表示します。5つの上限フラグは同様に動作します。省略した場合、ファイルにそのフィールドはなく、チェーンはデフォルト値で動作します。指定した場合、そのフィールドはデフォルト値と同じであってもジェネシスハッシュの一部になります。chain 20 は次のフラグで作成されました(deploy/cut-chain20-genesis.sh):
--max-program-words 65535 --max-proof-bytes 4194304 --max-block-bytes 20971520 \
--max-call-envelope-bytes 65536 --max-program-public-words 32768 \
--tokens tokens.json \
--bundle-guest v3 --auth-guest --hardening-v6 \
--gas-price 100 --byte-price 800 --bundle-gas-limit 20479 --gas-dynamic 10485760,262144,1250 \
--max-gas-price 10000 --max-byte-price 80000 --gas-byte-load paying \
--envelope-bytes 1860 \
--testnet --binding-domain 1 --proof-window-blocks 1024 --program-state-cell-fee 10000000 \
--epoch-blocks 1000 --faucet --fri-profile production
チェーン18と19は、--envelope-bytes 1860 までは同じフラグで作成されており、v0.6.8 のフラグは使っていません。proof の上限は、チェーン13〜16の 8 MiB から 4 MiB に下がりました。分割承認のトランザクションは最大3つの proof を運び、3 × 4 MiB + 1 MiB は 20 MiB のブロックに収まります。tokens.json には、1 RAND の registration_fee、10000000000000 の mint_cap_per_day、max_tokens の 4096、burn_registration_fee、bound_note_value が含まれ、zUSD が7つの裏付け資産とともに掲載されています。--bridge フラグはなく、作成スクリプトは引き続き、bridge、staking、consensus_domain の各セクションを後からファイルに差し込みます。チェーン20の内容は次のとおりです。guardian set 1 のブリッジ(8つの PQ guardian 鍵、pause 鍵、rules_v2、rotation、fees)、faucet の許可リスト、admission_by_vote、2,500 bps のエントリー予算を持つ staking セクション、consensus_domain: 1、そして alloc-note --asset 1 --envelope-bytes 1860 で作成した zUSD の genesis ノートです。有効な genesis ハッシュは、完成したファイルに対して init が出力するものです。
各 --alloc は、新しいコミットメントのランダムネスで預入ノートを1つ作成するため、2回作成すると異なる2つのハッシュが得られます。このコマンドは常に、cm と amount の横にノートの opening を書き出します。tokens セクションを持つチェーンではこれが必須です。
"alloc": [
{ "cm": "<64 hex>",
"envelope": { "kem_ct": "<hex>", "to_receiver": "<hex>", "to_sender": "<hex>", "body": "<hex>" },
"amount": 1000000000000,
"opening": { "pk": "<64 hex>", "time": 0, "r": "<64 hex>" } }
]
したがって、genesis ノートの所有者と金額は、ファイルが公開された時点で設計上公開されます。非公開のまま残るのは、そのノートがいつ、何に使われるかだけです。genesis は一度だけ作成し、そのファイルを保管してください。
alloc-note
--to <rand1…>(必須)、--amount <N>(必須)、--asset <INDEX>(デフォルト 0)、--envelope-bytes <N>(デフォルト: 旧形式)。genesis --alloc が封印するのと同じ方法で --to 宛てに封印した alloc ノートを、JSON で1つ出力します。envelope_bytes を設定した genesis は、対応する --envelope-bytes なしで封印されたノートを拒否します。--amount はそのアセットの整数単位で指定します。RAND は小数9桁、ブリッジされたトークンは8桁です(アセット1での 10 は 10 zUSD)。掲載されたトークンのノートには、そのトークンの裏付け資産の locked 額の合計が、そのノートの合計とちょうど一致している必要があります。
init
| argument | meaning |
|---|---|
--datadir <DATADIR> | 作成するデータディレクトリ |
--genesis <GENESIS> | genesis ファイル。<datadir>/genesis.json にコピーされます |
genesis ハッシュと、genesis と同じ gas: 行を出力します。
run
| argument | default | meaning |
|---|---|---|
--datadir <DATADIR> | 必須 | 初期化済みのデータディレクトリ |
--key <KEY> | 必須 | 鍵ファイル: バリデータのアイデンティティ、p2p のアイデンティティ、手数料の受取先 |
--listen <LISTEN> | /ip4/0.0.0.0/tcp/30303 | libp2p の listen multiaddr(複数指定可) |
--bootstrap <BOOTSTRAP> | なし、複数指定可 | /ip4/<ip>/tcp/<port>/p2p/<peer-id>。起動時と、切断されている間は 30 秒ごとに接続を試みます。v0.6.8 以降、その peer id は予約されます |
--reserved-peer <PEER_ID> | なし、複数指定可 | v0.6.8: インバウンド接続数の上限を超えて受け入れられ、同期予算のうちバリデータ向けの枠から応答を受けるピア。bootstrap と、このノードが署名済みの peer binding を確認したすべてのバリデータは、このフラグなしでも予約されます。ストアにまだ binding がない、作成直後のチェーンでは、フリートのバリデータをここに列挙してください |
--strict-gossip | off | v0.6.8: gossipsub の厳格な検証。有効な作成者署名、シーケンス番号、送信元を持つメッセージだけを受け入れます。厳格なノードと緩やかなノードは相互運用できるため、ノードごとに順次展開できます |
--rpc <RPC> | 127.0.0.1:8545 | オペレーター用の JSON-RPC リスナー。すべてのメソッドを提供し、loopback を信頼します。loopback のままにし、公開エンドポイントをこれに転送しないでください |
--public-rpc <ADDR> | off | v0.6.8: 固定のメソッドセットを持つ、2つ目の公開リスナー(viewing key のメソッド、rand_mint、rand_getPeers はなし)。バッチなし、WebSocket なし、全呼び出し元で共有する1つのメーター。リバースプロキシや SSH フォワードが向ける先です(JSON-RPC) |
--rpc-viewing-token-file <PATH> | off | v0.6.8: --rpc の viewing key メソッドに、Authorization: Bearer <ファイルの1行目>(32文字以上)を要求します |
--validator | off | この鍵でコンセンサスに参加します |
--no-mdns | off | LAN ディスカバリーを無効にします |
--block-interval-ms <MS> | 1000 | プロポーザルの最小間隔 |
--view-timeout-ms <MS> | 3000 | view タイムアウトの基準値。連続してタイムアウトするたびに倍になり、上限は 8 倍です |
--verify-chain <MODE> | quick | off、quick、full |
--keep-raw-proofs | off | 集約チェーンでのアーカイブモード |
--prune-history <WINDOW> | なし(すべて保持) | ブロック履歴をこの期間分だけ保持します。<n>m、<n>h、<n>d で指定し、最小は 1h です。それより古いブロックは、ブロック、QC、トランザクション、レシートを失い、台帳は残ります。チェーン20では、26 台のバリデータのうち 24 台が 24h で動作し、2 台のノードがアーカイブです。アーカイブと mainnet のノードには設定しません。下限より下の高さの照会には -32010 が返ります(JSON-RPC) |
--min-free-disk-mb <MB> | 1024 | データディレクトリのファイルシステムの空き容量がこれを下回る場合は、起動を拒否します。空きがこの 4 倍を下回ると、rand_getHealth は disk_low を返します。0 でこのガードを無効にします |
--rpc-viewing-open | off | loopback 以外の呼び出し元にも viewing key メソッドの使用を許可します。認証を行うものの背後でのみ使ってください |
--gas-price <UNITS> | 100 | このノードのプールが、proof ヘッダーの gas_max を上限として、呼び出しに対し gas あたりに要求する単位数(10⁻⁹ RAND)。受け入れポリシーであり、チェーンのルールではありません。より安い呼び出しを含むブロックも有効です。--byte-price 0 とともに 0 を指定すると、ポリシーは適用されません。チェーン20のように、genesis に gas セクションがあるチェーンでは、チェーン自身の価格が有効性のルールになります |
--byte-price <UNITS> | 800 | 呼び出しの proof と入力エンベロープの 1 KiB(端数も 1 KiB として数えます)あたりの単位数。0 バイト目から数え、同じポリシーに従います |
--prover <ADDR> | off | このアドレスで委任証明者(prover_* JSON-RPC)をホストします。専用のリスナーであり、--rpc とは異なるアドレスでなければなりません。rand-prover keygen で作成した <prover-home>/prover.key.json がないと、ノードは起動を拒否します |
--prover-home <DIR> | <datadir>/prover | 証明者の prover.key.json と pairings.json |
--prover-accept-spend-key | 廃止 | v0.6.8 以降は起動時に拒否されます。このフラグを付けた run は、ノード鍵を読む前に、フラグ名を示して終了します。spend-key witness を受け付ける証明者はもうありません。unit ファイルから削除してください。v0.6.7 では、bundle guest v1 または v2 のチェーンで spend-key witness を受け付けていました |
--prover-max-parallel <N> | 1 | ホストされた証明者が同時に実行する proof の数。5.74 GB × N + 1 GiB のメモリが利用可能でなければ、起動は拒否されます |
--prover-max-queue <N> | 8 | 実行中のものに加えてキューに入れられるジョブの数 |
--prover-cuda | off | CUDA バックエンドで証明します(--features cuda を付けたビルドが必要)。CPU へのフォールバックはありません |
--prover-skip-memory-check | off | 空きメモリのチェックを省略します |
--prover-fee <RAND>, --prover-fee-address <rand1…> | なし | ホストされた証明者に送るすべてのジョブが支払わなければならない手数料。RAND で、小数は最大9桁まで指定できます。証明されるバンドルの中に、そのアドレス宛ての RAND 出力を1つ含めます。2つのフラグは、互いに他方を必要とします |
--prover-allow-origin <ORIGIN> | ブラウザ拡張機能と loopback のページ | そのページが証明者の応答を読み取れるブラウザ origin(複数指定可)。1回以上指定した場合、その値がリストのすべてになります。* はすべてのウェブサイトを許可し、警告を出力します |
環境変数: RUST_LOG(デフォルトは info,libp2p=warn,libp2p_mdns=off)。Ctrl-C または SIGTERM で、ノードは正常にシャットダウンします。
公開エンドポイント https://rpc.randprotocol.org は、アーカイブノードの手前に置かれた許可リスト方式のプロキシです。2026-10-01 以降、その許可リストは公開リスナーのメソッドセットです。
safety
停止中のバリデータのコンセンサス安全性の状態(v0.6.8)。各コマンドはデータディレクトリを自ら開くため、稼働中のノードと並行して実行することはできません。
rand-node safety status --datadir <dir>
rand-node safety clear-halt --datadir <dir> --i-have-compared-this-node-with-the-fleet
rand-node safety release-lock --datadir <dir> --i-give-up-this-validators-lock
status は、コミット済みのヘッド、view と最後に投票した view、high QC、バリデータがヘッドより上でロックされているかどうか、そして記録されている safety halt があればそれを出力します。ノードが、自身のコミット済みヘッドの子孫ではないブロックを、認証済みの three-chain がコミットしようとするのを検知すると、停止してそれを記録します(audit v6、CON-5)。その後 run は、clear-halt を実行するまで、その記録を示して終了します。解除する前に、このノードのヘッドを他の2台のバリデータのヘッドと比較し、異なる場合はアーカイブから再同期してください。v0.6.8 以降(CON-4)、「保持していない」という回答が quorum に達しても、ロックが解放されることはなくなりました。入手できないブロックにロックされたバリデータは、そのロックを上回る justify を持つプロポーザルが届くか、ブロックが取得されるまで、沈黙を保ちます。release-lock は、永続化されたロックを、コミット済みヘッドの証明書まで下げます。一度に1台のバリデータにだけ使い、ブロックが完全に失われた場合に限ってください。書き込みを行う各コマンドは、確認用のフラグがなければ、実行する内容を表示するだけで、何も変更しません。
verify
| argument | default | meaning |
|---|---|---|
--datadir <DATADIR> | 必須 | ノードが稼働していてはいけません |
--mode <MODE> | full | quick または full |
--repair | off | 破損した末尾を切り詰めます。safety の状態は保持されます |
整合していれば終了コード 0、--repair なしで問題が見つかった場合は 2 です。
db
db drop-receipts-index --datadir <DATADIR>(ノードを停止した状態で): receipts_by_program インデックスを削除します。これは、v0.3 より前のビルドにロールバックする前に行います。そのビルドは、このインデックスを持つデータベースを開けません。その後の起動で、インデックスはレシートから再構築されます。
status
--rpc <URL>(デフォルトは http://127.0.0.1:8545)。rand_status をそのまま出力します。
register, unbond, withdraw
| コマンド | 引数 | 意味 |
|---|---|---|
register | --key, --payout <rand1…>, --rpc, --v2 | このノードの鍵で署名した16進の Registration を出力します。RPC からチェーン ID を読み取り、--v2 を付けた場合はジェネシスハッシュも読み取ります。ジェネシスで staking.registration_v2 が設定されているチェーン(チェーン 20 など)では --v2 が必須で、v1 の登録は拒否されます。それ以外のチェーンでは v2 の登録も受け付けられます |
unbond <amount RAND> | --key, --rpc, --no-wait | ステークをアンボンディングに移します。手数料は無料で、2エポック後に引き出せます |
withdraw <amount RAND> | --key, --rpc, --no-wait | 解放されたステークと報酬を、基本手数料 0.001 RAND を差し引いたうえで、支払先アドレス宛てのノートに払い出します |
admit sign|submit
投票による承認(v0.6.8)。ジェネシスで staking.admission_by_vote が設定されているチェーン(チェーン 20 など)では、新しいバリデータの鍵は、議決権の3分の2を厳密に超えるバリデータが署名して承認した場合にのみ登録できます。
| コマンド | 引数 | 意味 |
|---|---|---|
admit sign | --candidate <key hex, registration hex, or a file holding either>, --key <validator key>, --genesis-hash <hex> | このバリデータの投票を、ジェネシスハッシュと候補者のアドレスに対する <voter key hex>:<signature hex> の1行として出力します。そのため、投票は1つのチェーンでのみ有効です。オフラインで動作し、ノードは読み取りません |
admit submit | --candidate …, --signature <line>(複数指定可), --rpc, --no-wait | すべての投票をノードのジェネシスハッシュに照らして検査し(別のジェネシスや候補者への投票、同一投票者の重複は名指しで報告されます)、並べ替えたうえで手数料なしの AdmitValidator を送信します |
候補者とは、登録に含まれる鍵のことです。rand-node address --key がそれを出力し、register が出力した16進文字列にも含まれています。承認がコミットされた後のボンディングは従来どおりで(rand bond … --registration)、承認を消費します。rand_getAdmitted は、承認済みで待機中のものを一覧表示します。
bridge-gov
ブリッジのポスト量子ローテーション(v0.6.8)で、ガーディアンと一時停止鍵の保有者のためのものです。すべてのステップで、チェーン ID、そのバインディングドメイン、rand_getBridgeState.rotation_nonce を --rpc(デフォルトは http://127.0.0.1:8545)から読み取ります。
| コマンド | 内容 |
|---|---|
rotate-pq message --new-key K… | 現在の nonce に対する16進のローテーションメッセージを出力します。各署名者で照合するために使います |
rotate-pq sign --new-key K… --key F --index I [--possession] | I:signature を出力します。現在のポスト量子ガーディアンのクォーラム行(I は現在のセットでのインデックス)、または --possession を付けた場合は新しい鍵の保有者の行(I は新しいセットでのインデックス)です。I にある鍵と一致しない鍵ファイルは拒否します |
rotate-pq submit --new-key K… --quorum @F [--possession @F] [--no-wait] | RotatePqGuardians(保有証明の行がある場合は V2 アクション)を組み立てて送信します。保有証明を受け付けないチェーンでそれを付けた場合と、それを必須とするチェーン(チェーン 20 など)でそれがない場合は、拒否されます |
rotate-pause message|sign|submit --new-key K | 一時停止鍵に対する同様の操作です(保有証明のインデックスは 0) |
cancel-rotation sign --kind pq|pause --key PAUSE_KEY | キャンセルメッセージに対する 0:signature を出力します。チェーンの現在の一時停止鍵に照らして検査されます |
cancel-rotation submit --kind pq|pause --signature @F | CancelRotation を送信し、保留中のローテーションを遅延期間の終了前に取り消します |
--new-key は、16進の Dilithium2 公開鍵、それを収めた @file、または @key-file(その公開鍵)です。署名行は index:hex の形式で、空白または改行で区切り、# によるコメントを書けます。
vesting status|claim|revoke|bond|unbond
vesting セクションを持つジェネシスのチェーンにおける、タイムロックされたジェネシス割り当てについて、保有者と取り消し権者の側の操作です。チェーン 20 にはこのセクションがありません。鍵は rand-node keygen で作成したファイルです。
| コマンド | 引数 | 意味 |
|---|---|---|
vesting status <ENTRY> | --rpc | rand_getVesting が返す形式でのエントリを表示します。条件、ベスティング済みの額、現時点で請求可能な額です |
vesting claim | --entry <id>, --to <rand1…>, --amount <RAND> または --all, --key, --rpc, --no-wait | ロック解除された分を、基本手数料 0.001 RAND を差し引いたうえで --to 宛てのノートに払い出します。受益者の鍵で署名します |
vesting revoke prepare | --entry, --margin-secs(デフォルトは 600), --out(デフォルトは revoke.json), --rpc | v0.6.8、鍵は不要です。取り消し権者全員が署名する取り消しを書き出します。これは、ヘッドから --margin-secs 秒後の時点でまだベスティングされていない分のノートで、エントリのジェネシスの treasury に支払われます(--to はありません) |
vesting revoke sign | --proposal <file>, --key, --index? | 取り消し権者1人の鍵で、オフラインで <index>:<signature hex> を出力します |
vesting revoke submit | --proposal <file>, --signature <index:hex>(複数指定可), --rpc, --no-wait | エントリの threshold 以上の署名を付けて、prepare から256ブロック以内に取り消しを送信します。v0.6.7 の単一鍵による vesting revoke --to は廃止されました |
vesting bond <amount RAND> | --entry, --validator <address>, --registration <hex>, --key, --rpc, --no-wait | 取り消し不能なエントリ向けです。ロックされた RAND を、そのバリデータのステークとしてボンドします。まだレジスタにないバリデータには、register が出力したものが必要です |
vesting unbond <amount RAND> | --entry, --key, --rpc, --no-wait | ボンドされた RAND をロックに戻します。アンボンディングのエポックが過ぎると、再び請求可能になります |
aggregator register|unbond|withdraw, aggregate
aggregation セクションを持つチェーンにおけるアグリゲータの役割のコマンドです。aggregator register --key --bond <RAND> --payout <rand1…> --rpc は署名済みの AggregatorRegistration を出力します。aggregator unbond と aggregator withdraw は、バリデータの同名のペアと対応します。aggregate --key <KEY> [--rpc <URL>] [--watch] [--interval-secs 15] [--no-wait] は、rand_getUnsealed をポーリングし、1つのアグリゲートを証明して送信するデーモンです。ジェネシスに aggregation セクションがないチェーン 20 では動作しません。
rand(ウォレット)
グローバルオプションで、サブコマンドの前後どちらにも置けます。
| オプション | 環境変数 | デフォルト |
|---|---|---|
--rpc <RPC> | RAND_RPC | http://127.0.0.1:8545。http または https(公開エンドポイントは https://rpc.randprotocol.org)。64 MiB を超える応答は拒否されます |
--key <KEY> | RAND_KEY | wallet.key.json。ノートストアはその隣の <key>.notes.json にあります。ストアは、スキャン対象としたチェーン(ノードの rand_getGenesisHash)に結び付けられています。別のチェーンを指した場合(たとえばチェーン 19 から 20 への切り替えをまたいで使い続けたウォレットなど)は、警告を出したうえで空にし、リーフ 0 から再スキャンします。v0.6.8 以降、すべてのコマンドは、グループまたはその他のユーザーが読み取れる鍵ファイルを拒否し、対処法(chmod 600 <key>)を示します |
--prover | オフ。このマシンではなく、このウォレットとペアリングしたプルーバー(rand prover pair)でバンドルを証明します。証明は、トランザクションに入れる前にここで検査されます(ダイジェスト、サイズ、ローカルでの検証)。バンドルを証明するすべてのコマンドに適用されます。call と program invoke では、支払いのバンドルだけがプルーバーに送られ、呼び出しの証明はローカルのままです。ペアリングがない場合は拒否され、call を除いて --cuda との併用も拒否されます。チェーン 20 のような認可分離型のチェーンでは、プルーバーには、使用鍵ではなく閲覧鍵 nk とソルトが送られます。プルーバーはこのウォレットの履歴全体を読めますが、使うことはできません。認可の証明は常にこのマシンで作成されます。バンドルのゲストが v1 または v2 のチェーンでは、v0.6.8 は、プルーバーに何かを問い合わせる前に --prover を拒否します | |
--max-prover-fee <RAND> | 1。ペアリングしたプルーバーがバンドルごとに請求できる上限額です。これを超える見積もりは、バンドルが構築される前に拒否されます。0 はあらゆる手数料を拒否します。手数料は同じバンドル内の RAND 出力としてもう1つ加わり、prover fee: <amount> RAND to <fingerprint> と表示されます |
金額は小数点以下9桁までの10進の RAND です(1、1.5、.25、0.000000001)。send、token mint、token burn、および randpay: リンクにおけるトークンの金額は、そのトークンの表示単位で、レジストリの該当行の decimals に従います(zUSD の 10 は 10 zUSD です)。bridge-burn、token create --fixed-supply、--initial は、トークンの最小単位による整数のみを受け付けます。asset-balance もその形式で出力します。コマンドがトークンを受け取る箇所では、レジストリのインデックス、rpl1… の ID、または64桁の16進 ID を指定できます。ID は、ノードのレジストリ一覧全体(rand_getTokens、全ページ)からインデックスに解決され、トークン単位の照会は決して行いません。そうすると、どのトークンが動かされようとしているかがノードに知られてしまうためです。数値のインデックスは、ノードにまったく送られません。
| コマンド | 引数 | 動作 |
|---|---|---|
keygen | 新しい支払い鍵ファイルを --key に書き出します(モード 0600)。既存のファイルは上書きしません | |
address | --uri [--amount A] [--asset X] [--memo M], --qr, --qr-png <FILE> | このウォレットの rand1… アドレスを標準出力に、アドレスと改行のみで出力するので、スクリプトで $(rand address) が使えます。標準エラー出力には fingerprint XXXX-XXXX-XXXX-XXXX を出力します。これは Crockford base32 の 16 文字で、人間がアドレスを確認するためのものであり、ネットワーク上には送信されません。--uri は randpay: リンク(アドレスに、任意で金額、アセット、メモを加えたもの)も出力します。--qr はそのリンクを QR コードとして端末に表示し、--qr-png は PNG として書き出します |
contacts add <NAME> <TO> / list / show <NAME> [--qr] / remove <NAME> | --yes (add) | このウォレットが名前で送金できる、名前付きアドレスです。TO は rand1… アドレスまたは randpay: リンクで、リンクの場合は保存されるのはアドレスだけです。add はフィンガープリントを表示し、--yes がなければ add? [y/N] と確認します。標準入力が端末でない場合、--yes なしでは拒否されます。保存先は <key>.contacts.json(モード 0600)です。名前は 1〜64 文字で、rand1 や randpay: で始めることはできず、重複も許されません |
prover pair <LINK> / prover pair --trusted / show / forget | --name <NAME>, --yes (pair) | このウォレットを、委任先のプルーバー 1 台とペアリングします。pair は rand-prover pair が出力した randprover: リンクを受け取り、https:// でない URL は拒否します(平文の http:// は localhost、127.0.0.1、[::1] に限り許可)。その後、プルーバーが受け取るものを表示し(this prover will receive this wallet's viewing key: it can read the wallet's whole history; it cannot spend)、pair? [y/N] と確認します。--yes は確認を省略します。標準入力が端末でない場合、--yes なしでは拒否されます。続いてプルーバーの prover_info を問い合わせ、その鍵フィンガープリントがリンクの示すものと一致しなければ拒否し、<key>.prover.json(モード 0600)を書き出して、以前のペアリングを置き換えます。--trusted(v0.6.8)はリンクを取らず、ビルドに含まれるリンクから、バリデータのプルーバープール https://prover.randprotocol.org とペアリングします。その運用者はこのウォレットの履歴を読めますが、支払いはできません。show は名前、URL、フィンガープリント、own、プルーバーの鍵を表示し、トークンは表示しません。forget はファイルを削除します。v0.6.7 はペアリングの前に確認しませんでした |
viewing-key | このウォレットのビューイングキー nk(64 桁の 16 進数)を出力します。rand_importViewingKey が受け取るパラメータです。ウォレットが送受信したすべてのノートを読み取れますが、支払いはできません | |
balance | ツリーをスキャンし、ストアを保存して、支払い可能な残高と未使用ノートの数を出力します | |
sync | --rescan | 残高を出力せずにスキャンします。最初の同期では、リーフの前にすべてのブロックヘッダーを読み込みます(1 回の呼び出しで 1,024 個)。--rescan はすべてのノート、使用済みマーク、カーソルを破棄し(チェーンとの紐付けは保持)、リーフ 0 から再スキャンします。ノードがこのウォレットのノートを誤って使用済みと報告した場合の復旧手段です。信頼できるノードに対して実行するのが最善です |
notes | --memo | このウォレットが開いたすべてのノートを、インデックス、アセット、金額、高さ、spent、pending、および 24 文字に切り詰めたメモ(--memo を付けると全文)で表示します |
asset-balance [INDEX] | スキャンしたうえで、このウォレットが 1 つのアセットで保有する量、または保有するアセットごとに 1 行を出力します。金額はアセット自身の最小単位です | |
history | --memo | このウォレットが他者宛てに作成したすべてのノートを、notes と同じメモ列とともに表示します |
send <TO> [AMOUNT] | --asset <INDEX|rand|rpl1…|hex>(既定は 0、RAND), --memo <M>, --fee <RAND>(既定 0.001), --no-wait, --yes, --cuda | TO は rand1… アドレス、randpay: リンク、保存済み連絡先の名前のいずれかで、この順に試されます。リンク自身の金額、アセット、メモは、コマンドラインで省略された項目を補います。AMOUNT を省略できるのはリンクが金額を持つ場合のみで、両方で指定された値が食い違う場合は拒否されます。コマンドは確認として to <contact, if any> · fingerprint XXXX-XXXX-XXXX-XXXX · <amount> <asset> を出力し、メモがある場合は memo: "<text>" の行を別に出力してから、--yes がなければ証明の前に確認します。スクリプトでは --yes を渡す必要があります。標準入力が端末でない場合は stdin is not a terminal: pass --yes to send without confirmation で拒否されます。その後、そのアセットのノートを最大 2 つ、手数料用の RAND ノートを最大 2 つ選び、メモを支払い出力のみに封入し、4 スロットの隠蔽アセットバンドルを 1 つ、分割認可チェーンではさらに支出認可を、ローカルで証明し、送信してコミットを待ちます。ジェネシスに envelope_bytes がないチェーンでは、空でないメモは証明の前に拒否されます。AMOUNT はアセットの表示単位で指定します。RAND は小数の RAND、トークンはレジストリ行自身の decimals に従います。ノードが返したインデックスにかかわらず、RAND として読まれるのは 0 または rand のみです。トークン ID はノードに問い合わせる前にデコードされ、一覧の行がインデックス 0 で応答した場合や ID フィールドが食い違う場合は拒否されます。確認表示ではトークンの金額を表示単位と基本単位の両方で示します(10.00000000 zUSD (1000000000 units))。そのため、ノードがトークンの decimals を偽っていても、送信前に判別できます。アセットのインデックスと手数料は証明の前に出力されます。チェーン上では、トークンの送金は通常のバンドルであり、RAND の支払いと区別できません。手数料は RAND で、支払い可能な RAND を持たないウォレットは証明の前に拒否されます |
bond <VALIDATOR> <AMOUNT> | --registration <hex>, --fee, --no-wait, --cuda | バリデータにステークします。バンドルは金額をバーンします |
faucet [ADDRESS] | --amount <RAND>(既定かつ最大 100) | testnet 専用です。バリデータノードにミントを依頼します。チェーン 20 では、ファウセットはジェネシスの許可リストにある 16 個のウォレットにのみ支払います |
program build | --guest <fib|memcpy|bubble_sort|balance_check|private_payment|public_echo|rpl2_counter>, --arg N(複数指定可), --out <file>(既定は program.json) | 組み込みのゲストをアセンブルし、プログラム ID を出力します。rpl2_counter(v0.6.8)は RPL-2 のデモンストレーション用プログラムです |
program deploy <FILE> | .json、生の .bin、または rand-guest build が書き出すイメージコンテナ。--public <FILE>, --input <u32>(複数指定可)または --check-call, --cuda | プログラム ID、hc、ワード数を出力します。チェーンの上限を超えるプログラムは、証明の前に(rand_estimateFee を通じて)拒否します。デプロイの下限手数料をバンドルで支払い、待機します。--public はプログラムとともに公開入力を保存します(空白区切りの u32 ワード、または ELF の .so)。サイズはチェーンの max_program_public_words 以内で、プログラム ID はこれを含めて束縛されます。--input または --check-call を付けると、ウォレットはまずそれらの秘密入力でエミュレータ上の呼び出しをドライランし、呼び出し階層の上限(14)に収まらなければ拒否します。この確認のための証明は行われません |
program show <ID> | デプロイ済みプログラムのメタデータ | |
program invoke <PROGRAM-ID> | --transition <FILE.json>(必須), --input N(複数指定可、秘密), --inputs-file <FILE.json>(u32 の JSON 配列、追加される), --fee <RAND>, --gas-limit <N|max>, --tier T, --no-wait | v0.6.8、RPL-2: プログラムの状態遷移を宣言し、チェーンに適用させます。証明の前に、チェーンに program_state セクションがあること、プログラムが存在すること、遷移のコンテキストがセグメント規則に収まること、各 reads エントリが現在のセルと一致すること(rand_getProgramCell。不一致の場合は古いセルを示し、終了コード 3 で終了します)、ボールトがすべての pays エントリとこの遷移が預け入れる額を支払えること、このウォレットが預け入れと手数料に必要なトークンと RAND を保有していることを確認します。次に、書き込みが作成するセルを数え、実際のコンテキストワードに対してプログラムをドライランし、トランザクションに束縛された呼び出しを証明し、続いてバンドル(手数料に加え、burn_r を通じてバーンされる deposit.rand と、burn_a を通じてバーンされる deposit.asset の deposit.amount)と認可証明を証明します。既定の手数料は、宣言したガスに対する呼び出しの下限に、作成されたセルごとのセル手数料を加えたもので、call と同じく価格 2 段階分の余裕を含みます。各支払いを出力し、--no-wait でなければレシートの 8 つの outputs を出力します。取り込み時に古い読み取りが検出された場合も終了コード 3 で終了するため、呼び出し元のツールは再読み取りして再試行できます。入力トランスクリプトは公開しません。遷移ファイルは、すべてのフィールドが任意です。{"reads": [{"key", "value"}], "writes": [...], "deposit": {"rand": "<units>", "asset": N, "amount": "<units>", "kind": "none"|"deposit"|"burn"}, "pays": [{"asset": N, "amount": "<units>", "to": "rand1…"}], "mints": [...]}。キーと値は 64 桁の 16 進数の Word8、金額はアセット自身の単位による 10 進文字列で、to の既定はこのウォレットです |
program state <ID> | --cell <64 hex> | v0.6.8: プログラムのすべてのセルをキー順に表示します(rand_getProgramCells、最後までページ送り)。--cell を付けると 1 つのセルを表示し、存在しない場合は 64 個のゼロです。program_state セクションのないチェーンでは拒否されます |
program vault <ID> | v0.6.8: プログラムのボールト(rand_getProgramVault)を、保有するアセットごとに 1 行、金額は単位で表示します。セクションのないチェーンでは拒否されます | |
call <PROGRAM-ID> | --input N(複数指定可), --expect-public <FILE>, --tier T, --gas-limit <N|max>, --fee, --auditor <rand1…>, --no-envelope, --print-call-key, --cuda | まずエミュレータで呼び出しを実行し、gas: <exact> (declaring <limit>, tier <t>) を出力します。正確なガスはウィットネスでありウォレットの外に出ません。宣言された上限が証明の公開 GAS_LIMIT です。ガスセクションのあるチェーンでは、既定の上限は正確なガスを 2^(t−2) の倍数に切り上げた値です。max はヘッダーの上限 gas_max を宣言し、これはティアがすでに明かす以上のことを漏らしません。N は正確なガスを下回る場合や上限を超える場合は拒否されます。セクションがない場合、または --cuda の場合、既定は max です。その後、プログラムの公開入力に対して呼び出しをローカルで証明し、その入力トランスクリプトを封入し、バンドルで支払い、レシートを出力します。既定の手数料は宣言した上限に対する下限で、rand_getLimits が返す価格での BUNDLE_BASE + gas_price·GAS_LIMIT + byte_price·KiB に、価格が変動する場合の余裕として価格 2 段階分を加えたものです。fee … RAND (incl. two price steps of headroom) と表示されます。hardening_v6 チェーンでは、手数料は証明が存在する前に確定するため、既定では証明の代わりにチェーンの証明サイズ上限で価格を決めます。これは支払い過多にしかなりません。--fee は正確な金額を支払います。--expect-public は、プログラムの公開入力がそのファイルのワードと一致しない限り、証明の前に拒否します |
open-call <TXHASH> | --call-key <hex>, --as-auditor | 呼び出しのトランスクリプトを開き、H_IN と照合し、プログラムを再実行します。不一致の場合はゼロ以外で終了します |
receipt <TX> | コミットされた呼び出しのレシート | |
bridge-mint <ATTESTATION> | 16 進数または @path, --pq <JSON or @path>(必須), --to <rand1…>(既定: このウォレット), --fee(既定: そのアクションの下限), --no-wait, --cuda | ガーディアンが署名したアテステーションをノートとしてデポジットします。--pq はガーディアンの Dilithium2 共同署名クォーラムで、[{"index":0,"signature":"<4840 hex>"},…] の形式です。証明の前に、アテステーションをデコードし、クォーラムをノードの pq_guardians とチェーン ID に照らして確認し、受取人とアセット ID を確認し、記載されたインデックスを読み取ります(rand_getAssets)。デポジットノートのブラインディングはアテステーションのダイジェストから導出され、r = blake3("rand-deposit-r-1" || mu) です。これがチェーンの受け入れる唯一の r です。手数料バンドルは、クォーラムを含むトランザクション全体に対して証明されます。ノートの owner、time、r を出力します |
bridge-rotate <ROTATION> | 16 進数または @path, --pq <JSON or @path>(必須), --fee(既定: そのアクションの下限), --no-wait, --cuda | 現行の PQ セットの共同署名クォーラムとともに、何もデポジットしない BridgeAttest として、ガーディアンセットのローテーションを送信します。Rand のセットを 1 つ進めるローテーション以外は、証明の前に拒否します。実行後に guardian_set_index を出力します |
bridge-pause | --sig <HEX or @path>(必須), --no-wait | ブリッジのミントを一時停止します。バンドルも手数料もない PauseMints なので、鍵ファイルも RAND も不要です。ファイルは rand-bridge-gov pause の出力で、ブリッジの現在の pause_nonce に対して作成された、一時停止鍵による 2,420 バイトの署名を 16 進数にしたものです。送信前に、ノードの pause_key とチェーン ID に照らして確認されます。一時停止中もバーンとローテーションは可能です |
bridge-unpause | --pq <JSON or @path>(必須), --no-wait | 現在の pause_nonce に対して作成された PQ ガーディアンクォーラム(rand-bridge-gov pq-unpause のファイル)で一時停止を解除します。バンドルも手数料もありません。一時停止鍵だけでは解除できません |
bridge-burn <ASSET> <AMOUNT> <TO_CHAIN> <TOKEN> <TO> | --relayer-fee N, --fee(既定 0.01), --no-wait, --cuda, --yes | ブリッジされたアセットを外向きにバーンします。TO_CHAIN 上のコイン TOKEN が ASSET を裏付けており、少なくとも AMOUNT がロックされていること、そして AMOUNT とリレイヤー手数料がリリース単位の整数であることを確認します。そのうえで、スロット 0〜1 でアセットを使用し、そのちょうど AMOUNT をバーンし(burn_a、burn_asset)、スロット 2〜3 から RAND の手数料を支払う単一のバンドルを証明します。--relayer-fee は AMOUNT の一部であり、追加の請求ではありません。ブリッジ手数料のあるチェーン(rand_getBridgeState.fees。チェーン 20 がそうです)では、v0.6.8 はまずチェーンが徴収する手数料(アセット建て)とリリースされる金額を表示し、確認を求めます。--yes は確認を省略し、標準入力が端末でない場合は --yes なしでは拒否されます。ロット済み額とリレイヤー手数料の確認は、リリースされる金額に対して行われます |
token create | --name, --symbol, --decimals <0..=9>, --salt <hex32>(指定がなければランダム)。続いて --fixed-supply <N> --to <rand1…>、--authority-key-out <FILE> [--initial <N> --to <rand1…>]、または(v0.6.8)--program <PROGRAM-ID> のいずれか。--program はミント権限がそのプログラムにあるトークンで、そのプログラムの invoke だけがミントまたはバーンを行い、供給量ゼロから始まり、チェーンの program_state セクションを必要とします。--fee(既定: バンドルの基本額にレジストリの registration_fee を加えたもの。ノードが 10 RAND を超える登録手数料を報告した場合は拒否されるため、より大きな手数料を意図的に支払うには --fee を渡します), --no-wait, --cuda | レジストリの次のインデックスにトークンを登録します。固定供給(一度だけミントし、権限は none)または Key 認可(新しい Dilithium2 鍵ファイルを 0600 で書き出し、既存のファイルは上書きしません)です。権限鍵は、チェーンが登録を受理するまで <FILE>.pending に置かれます。別の登録が先にそのインデックスを取った場合は another token took index N first — re-run to register at N+1 と出力します。成功すると、インデックスと ID(16 進数と rpl1…)を出力します |
token mint | --asset, --to <rand1…>, --amount <N>(トークンの表示単位), --authority-key <FILE>, --fee(既定 0.001), --no-wait, --cuda | Key 認可トークンを追加でミントします。トークンが Key 認可でない場合、または鍵がその権限でない場合は、証明の前に拒否されます |
token set-authority | --asset, --authority-key <FILE>。続いて --new-key <FILE> または --renounce のいずれか。--fee(既定 0.001), --no-wait, --cuda | Key 認可トークンを別の鍵に引き渡すか、ミント権限を恒久的に放棄します |
token burn <ASSET> <AMOUNT> | --fee(既定 0.001), --no-wait, --cuda | このウォレットが保有する RPL トークンの AMOUNT(トークンの表示単位)を破棄します。公開供給量はちょうどその分だけ減ります。ブリッジされたトークンは証明の前に拒否されます。それは bridge-burn を通じて出ていきます |
token info <INDEX|rpl1…|hex> | 1 つのトークンの rand_getTokens の完全な行を表示します。name、symbol、decimals、authority、mint_nonce、総供給量、registered_at、ID(16 進数と id_text)、およびブリッジされている場合は各裏付け(locked、mint_cap_per_day、minted_today、mint_day)です | |
token list | --from <index>(既定 0), --limit <N>(既定 1000) | rand_getTokens の 1 ページ分です。enabled、registration_fee、next_index、tokens を表示します |
token register-bridged | --name, --symbol, --salt <hex32>, --chain, --token <hex32>, --decimals(最初の裏付けのソース側 decimals), --pq <JSON or @path>(必須), --fee(既定: バンドルの基本額にノードの registration_fee を加えたもので、token create と同じ 10 RAND の拒否が適用されます), --no-wait, --cuda | ジェネシス後に、最初の裏付けとともにブリッジトークンを登録します。ノードの list_nonce に対して作成された PQ ガーディアンクォーラム(rand-bridge-gov pq-register のファイル)で認可されます。先に Rand 上で登録し、次にエンドポイントで setToken を行います |
token list-backing | --asset <index>, --chain, --token <hex32>, --decimals, --pq <JSON or @path>(必須), --fee(既定: バンドルの基本額), --no-wait, --cuda | ブリッジトークンに裏付けを追加します。ノードの list_nonce に対する PQ ガーディアンクォーラム(rand-bridge-gov pq-list のファイル)で認可されます |
bridge | ブリッジの公開状態: ガーディアン、エミッター、アセットレジストリ、バーンのシーケンス | |
bridge-message <SEQUENCE> | 外向きのバーンメッセージ 1 件を、そのままの形で表示します | |
fee bundle / fee deploy <words> / fee call <tier> | --public-words M (deploy); --gas N, --bytes B, --keccak-log-height K, --sha256-log-height S (call) | ノードの料金表に基づく最低手数料です。ガスセクションのあるチェーンでは、fee call <tier> --gas N は rand call が出力する宣言上限を、チップの価格で余裕を持たせずに見積もります。つまり下限そのものです。--gas がなければ上限 gas_max(tier, K, S)、すなわちそのような呼び出しにかかりうる最大額を見積もります。--bytes は呼び出しの証明と入力エンベロープのバイト数です |
tx <HASH> | コミットされたトランザクションを、その高さとインデックスとともに表示します | |
tx-key <HASH> | そのトランザクションの出力のうち、このウォレットが送信、受信、またはお釣りとして保持したものを 1 出力 1 行で表示します。output(bundle:0 … bundle:3、1 つのバンドルの 4 つのスロット、または mint:0)、役割、金額(RAND、またはトークンの場合は N (asset I))、添付されたメモ(なしは -)、そして封入に使われたトランザクションごとの鍵です。sent 行の鍵を受取人や監査人に渡すと、rand_checkTransaction <HASH> <KEY> でメモを含むその 1 つの出力を開示できます。ダミースロットは誰にも開かれず、行もありません | |
block <ID> | 高さまたはハッシュによるブロック | |
head | { height, hash, view } | |
status | rand_status | |
peers | 接続中のピア | |
validators | バリデータ登録簿 |
--cuda は --features cuda を付けたビルドが必要で、フォールバックはありません。PTX はまだビルドされていません。呼び出し入力のエンベロープを封印することはできないため、rand call --cuda には --no-envelope が必要です。宣言するのはガス上限のみで、--gas-limit N は受け付けません。
CLI が表示するメモと連絡先名(send の確認表示、notes、history、tx-key)はすべて、最初に一つの表示規則を通します。制御文字、Unicode の書式文字(双方向制御文字、ゼロ幅文字、ソフトハイフン)、U+2028/U+2029 は U+FFFD として表示し、連続するスペース区切り文字は 1 つのスペースにします。
最初のシールド送金
rand keygen # wallet.key.json
rand address # rand1… on stdout, its fingerprint XXXX-XXXX-XXXX-XXXX on stderr
rand faucet # testnet, allowlisted wallets only: 100 RAND into a note only you can open
rand balance # balance: 100 RAND
rand send rand1q9f… 1.5 # asks to confirm, then a minute and a half to two minutes of local proving, then the commit
rand notes # the spent note, and the change note
アドレスの共有とメモ
rand address --uri --amount 1.5 --memo "invoice #42" --qr # a randpay: link, as a terminal QR
rand contacts add alice rand1q9f… # shows the fingerprint, asks add? [y/N]
rand send alice 1.5 --memo "coffee" # the memo is sealed into the payment output
rand history --memo # alice's row shows the whole memo
rand tx-key <hash> # hand the sent row's key to alice or an auditor
メモはノートと同じ封印された本体の中にあるため、一方を開ける者は他方も開けられます。受取人は notes で、そのアウトプットのトランザクションごとの鍵を持つ者は rand_checkTransaction <hash> <key> で開けます。Chain 18 は、ジェネシスで envelope_bytes を設定した最初のチェーンです。chain 14 から 17 では、証明を行う前に --memo が拒否されていました。
後から再び開ける機密コール
rand program build --guest balance_check --arg 1000 --out bc.json
rand program deploy bc.json # prints the program id
rand call <id> --input 100 --input 200 --input 300 --input 400
rand open-call <txhash> # inputs: [100, 200, 300, 400] — verdict: faithful (exit 0)
ステートフルなプログラム:RPL-2 カウンター
program_state セクションを持つチェーン(chain 20 がそうです)での例です。カウンターが受け付けるのは、1 つのセルを読み、その先頭ワードに 1 を加えて書き戻すトランジションだけです。トランジションのそれ以外の部分(バンドルが預け入れるもの、ボールトが支払うもの、プログラムがミントするもの)は検証されないまま通過します。そのため、これはデモであり、価値を預けるプログラムではありません。
rand program build --guest rpl2_counter --out counter.json
rand program deploy counter.json # prints the program id
rand token create --name "Counter Share" --symbol CTR --decimals 0 --program <id> # say index 2
rand program state <id> --cell 0100000000000000000000000000000000000000000000000000000000000000 # 64 zeros: absent
cat > step.json <<'JSON'
{ "reads": [{ "key": "0100…00", "value": "0000…00" }],
"writes": [{ "key": "0100…00", "value": "0100…00" }],
"deposit": { "rand": "500000000", "kind": "none" },
"pays": [{ "asset": 0, "amount": "200000000", "to": "rand1…" }],
"mints": [{ "asset": 2, "amount": "1" }] }
JSON
rand program invoke <id> --transition step.json # exit 3 if the cell moved since; re-read and retry
rand program vault <id> # asset 0: 300000000 units (0.5 RAND in, 0.2 out)
ファイル中の … は 64 桁の 16 進文字の全体を表しており、ウォレットはこれを必須とします。
デプロイとコールの出力
分割認可のチェーンでは、すべてのバンドルは、このマシン上で作られる 2 つの証明から成ります。tier-10 のスペンド認可と、tier-14 のバンドルです。chain 18 で、rand v0.6.7 を使った program deploy の出力(2026-09-30):
proving the spend authorisation on this machine (tier 10; seconds)…
authorisation proved in 6.8s: tier 10, 1368908 bytes
proving the bundle (tier 14; about a minute and a half on a laptop)…
proved in 116.7s: tier 14, 1500710 bytes
submitted deploy <hash>
0 RAND out, 59.8545 RAND change, fee 0.1007 RAND, anchored at height 97831, proved in 116.7s (bundle) + 6.8s (auth)
call は、コールの証明の前にガスと手数料を表示し、続いて支払いバンドルを同じ方法で証明します。
proving the call locally (90 inputs stay private, over the program's 11-word public input)…
gas: 5636 (declaring 6144, tier 12)
fee 0.006191437 RAND (incl. two price steps of headroom)
proved in 29.2s: tier 12, 3346865 bytes, outputs [...]
ここでの 6,144 は、5,636 を 2^10 の倍数に切り上げた値です。rand fee call 12 --gas 6144 --bytes <B> は、この上限を、余裕を持たせずにチップ時点の価格で見積もります。
rand-prover
独立したバイナリとしての委任プローバーです。別のマシン上でウォレットの tier-14 バンドル証明を作成します。rand-node run --prover は、同じサービスをノード内でホストします。すべてのサブコマンドは --home <DIR>(環境変数 RAND_PROVER_HOME、デフォルトは ~/.rand-prover)を取ります。これは prover.key.json と pairings.json を置くディレクトリです。
| command | arguments | behaviour |
|---|---|---|
keygen | prover.key.json をモード 0600 で書き込み、鍵のフィンガープリントを表示します。既存のファイルは上書きしません | |
pair | --name <LABEL>(必須)、--url <URL>(デフォルトは http://127.0.0.1:8600)、--own、--qr | トークンを発行し、そのハッシュだけをラベルの下に保存して、rand prover pair が受け取る randprover: ペアリングリンクを表示します。トークンはリンクの中に一度だけ表示されます。--url はウォレットがこのプローバーに到達するためのアドレスで、--own は own=1 を追加し、--qr はリンクを端末用の QR コードとしても表示します |
unpair | --name <LABEL> | ペアリングを削除します。実行中のプローバーはファイルを起動時に読み込むため、再起動後に反映されます |
pairings | ペアリングごとに 1 行:ラベル、own または -、作成日 | |
run | --listen <ADDR>(デフォルトは 127.0.0.1:8600)、--max-parallel <N>(1)、--max-queue <N>(8)、--per-token <N>(2)、--cuda、--skip-memory-check、--allow-origin <ORIGIN>(繰り返し可)、--fee <RAND> と --fee-address <rand1…>、--accept-spend-key | Ctrl-C または SIGTERM まで prover_* JSON-RPC を提供します。5.74 GB × --max-parallel + 1 GiB のメモリが利用可能でない限り、起動は拒否されます。--per-token は、1 つのペアリングがキュー待ちまたは証明中として同時に持てるジョブ数です。--accept-spend-key は v0.6.8 で廃止されました。run はこれを付けると起動を拒否し、プローバーが受け付けるのはビューイングキーのウィットネスだけです。v0.6.7 では、バンドルゲスト v1 または v2 のチェーンだけが送るスペンドキーのウィットネスを受け付けていました |
chain 20 のプローバーが受け取るのは、ウォレットのビューイングキー nk と新しいソルトです。プローバーは資金を使うことはできませんが、そのウォレットがこれまでに受け取ったもの、送ったものをすべて読むことができます。履歴を見せてもよい相手のプローバーとペアリングしてください。ウォレットは、返ってきたすべての証明を検証します。
鍵ファイルの形式
ノード鍵:
{ "seed": "hex of 32 bytes", "address": "base58 of blake3(\"rand-address\" || public key)", "public_key": "hex of 1312-byte Dilithium2 public key" }
ウォレット鍵、バージョン 2:
{ "version": 2, "spend_key": "hex of 8 little-endian u32 words (64 characters)" }
rand keygen はこれをモード 0600 で書き込みます。v0.6.8 以降、すべての rand コマンドは、グループまたはその他のユーザーが読み取れるウォレット鍵ファイルを拒否します。手作業でコピーまたは復元した鍵は、0600 に戻さなければなりません(chmod 600 <key>)。ウォレット鍵を失うと、その鍵で開けたすべてのノートを失います。このリリースにはリカバリーフレーズがありません。