Rand Protocol
ドキュメント
リファレンス

Explorer API

randscan.org で提供している RandScan の REST API と WebSocket フィードの概要です。シールドチェーンのエクスプローラーが何を提供できるか、エンドポイント、レート制限を説明し、完全なガイドへのリンクを掲載しています。

Rand のエクスプローラーの API を使うと、ノードを運用せずに、スクリプト、ボット、バックエンドから chain 20 を読み取れます。すべてのフィールドを載せた完全なガイドはエクスプローラーのリポジトリにあります(randscan.org/docs/api.md)。このページはその要約です。

ベース URLhttps://randscan.org/api/v1
WebSocketwss://randscan.org/ws
匿名IP ごとに 1 分あたり 60 リクエスト
API キーあり1 分あたり 600 リクエスト。キーは randscan.org/dashboard で発行し、Authorization: Bearer rsk_… または X-API-Key で送ります

シールドチェーンのエクスプローラーが表示できるもの

この API には、アカウント、残高、送信者、受信者はどこにもありません。chain 14 以降は、バンドルに公開アセットもありません。RAND の転送と任意の RPL トークンの転送は、同じ形をしています。API が提供するのは、すべてのブロック、公開されたとおりの各トランザクションの隠しアセットバンドル(アンカー、4 つのナリファイア、4 つのコミットメント、手数料、burn_a、burn_r、burn_asset、時刻、証明とエンベロープのサイズ、chain 17 以降は auth_commit と認可証明のサイズ)、トランザクションが運んだアクションとその公開フィールド(RPL トークンの登録、ミントとバーン、ブリッジガバナンスのアクション、RPL-2 の invoke の状態遷移を含む)、RPL トークンのレジストリ、プログラムのセルとボールト、リーフ単位のコミットメントツリー、ナリファイアセット、バリデータ登録簿、供給監査、ブリッジの公開状態(ミント停止と PQ ガーディアンセットを含む)です。転送がどのアセットを動かしたかは、ビューイングキーまたはトランザクションキーを持つ人にだけ、ブラウザー上で表示されます。GET /accounts/:address は 410 { "error": "no_accounts" } を返します。

規約:金額は単位数の 10 進文字列です。asset_index が RAND(インデックス 0)以外のトークンを指す金額は、RAND の 9 桁の小数ではなく、そのトークン自身の最小単位で表されます。割る前に、GET /tokens/:id でインデックスを解決してください。registration_fee と next_index は、エクスプローラーが通常の JSON 数値として返す 2 つのフィールドです。ハッシュ、プログラム ID、コミットメント、ナリファイアは小文字 16 進数 64 文字、バリデータのアドレスは base58、高さは 0 から始まる 10 進整数です。インデックスされるのはコミット済みのブロックだけなので、API に現れるブロックはファイナルです。一覧は page(1 から)と limit(1〜100、デフォルト 20)を受け取り、{ "data": [...], "pagination": { page, limit, total, total_pages, has_next, has_prev } } を新しい順に返します。エラーは { "error", "message", "code" } の形で、400、404、410、429、500 のいずれかです。

エンドポイント

メソッドとパス返すもの
GET /healthエクスプローラーの状態とインデクサーの遅延
GET /statsチェーン ID、高さ、ビュー、ツリーサイズ、バリデータ数、総ステーク、供給量、プログラム数、平均ブロック時間、エポック、ジェネシスハッシュ、ノードのビルド。hc_bundle と hc_auth。limits(ジェネシスの 5 つの上限、続いて envelope_bytes、hardening_v6、hc_auth、ジェネシスの gas_price と byte_price、gas_metering、bundle_gas_limit、adjust_bps、v0.6.8 以降のノードでは program_state)。gas_prices(チップ時点の現在価格)。limits には、v0.6.8 のその他の新フィールド(binding_domain、proof_window_blocks、価格の上限、admission_by_vote、testnet)は含まれません。これらはノードの rand_getLimits から読んでください
GET /supplyノードの供給監査をそのまま返します。4 つの vesting_* カウンターは、ジェネシスに vesting セクションがない chain 20 ではすべて "0" です。RPL-2 の program_rand_out と program_rand_held、つまりプログラムのボールトから支払われた RAND と、ボールトにまだ残っている RAND も含みます
GET /bridgeブリッジの公開状態:emitter、emitters、guardian_set_index、guardians、pq_guardians、mint_paused、pause_nonce、list_nonce、pause_key、registration_fee、burn_sequence、next_index(chain 14 以降は null)、rotation_nonce、rules_v2(global_minted_in_window と global_mint_headroom を含む)、min_inbound_sequence、assets、そして endpoints(各エミッターを、そのソースチェーンが表記するとおりにエクスプローラー自身が描画したもの)。ノードの v0.6.8 の fees、rotation_rules、pending_rotations は提供しません。これらは rand_getBridgeState から読んでください
GET /bridge/assetsバッキングごとに 1 行。レジストリの行(index、chain、token、asset_id、locked、minted_today、mint_cap_per_day、v0.6.8 ノードでは minted_in_window、mint_window_secs、mint_headroom(現在の上限が認める最大のデposit))に、symbol、name、decimals、backings、およびインデックスされた集計を結合したものです。バッキングごと:burns、burned、outstanding(レジストリの locked)、そしてトークンのバッキングが 1 つだけの場合に限り deposits/deposited(それ以外は null。デposit が名指しするのは、ミントされたトークンであり、そのためにロックされたコインではないためです)。トークンごと(同じ index の行ではすべて同一):token_deposits、token_deposited、token_burns、token_burned、first_height、last_height。合計するときは、各 index を 1 回だけ数えてください
GET /bridge/tokensトークンの許可リスト(静的なリスト):Ethereum、BSC、Tron、Solana 上の USDT と USDC。ただし Tron 上の USDC は廃止されています
GET /tokensノードからキャッシュされた RPL トークンレジストリ全体:enabled、registration_fee、next_index、tokens
GET /tokens/:idレジストリインデックス、64 桁 16 進の ID、または rpl1… のテキスト形式で指定した 1 つのトークンに、deploy_tx と supply_history を加えたもの。一致するものがなければ 404
GET /nodesエクスプローラーのノードとそのピア(ジオロケーション付き)
GET /proversエクスプローラーが把握している委任証明者(エクスプローラー独自のリスト。チェーンは記録を持ちません):それぞれが prover_info に応答するか、その容量と手数料、ホストの所在地
GET /blocks?page&limit&proposer、GET /blocks/latest?limit、GET /blocks/:idブロック。高さまたはハッシュで指定します
GET /transactions?page&limit&kind&height&validator&program、GET /transactions/latest、GET /transactions/:hashトランザクション。kind は transfer、mint、deploy、call、bond、unbond、withdraw、bridge_attest、bridge_burn、register_token、token_mint、set_authority、token_burn、pause_mints、unpause_mints、register_bridged_token、list_backing、invoke のいずれかです。token_transfer はありません。任意の RPL トークンの転送は transfer です
GET /transactions/:hash/envelopesトランザクションが作成したノートとそのエンベロープ:バンドルの 4 つのスロット(ダミーを含む)に加え、bridge_attest のデposit、token_mint、register_token の初期ミント、invoke の支払いが追加する、チェーンが計算したノート。call では h_in と封印された入力トランスクリプトも含みます
GET /envelopes?from_leaf&limitエンベロープ付きのリーフを古い順に、1 ページあたり最大 1,000 件。履歴スキャン用です
GET /notes?page&limit、GET /notes/:idツリーのリーフ。コミットメントまたはリーフインデックスで指定します
GET /nullifiers/:nfそのナリファイアを公開したトランザクション
GET /validators、GET /validators/:address登録簿。share_percent、blocks_proposed、最後に提案した高さを含みます
GET /programs?page&limit、GET /programs/:idデプロイ済みのプログラム(base_pc、words_len、code_hash、public_words_len、public_digest)と、call および invoke の回数。プログラムの最近の call と invoke、およびノードから直接読んだ program_state:vault(アセットごと)、キー順で先頭 100 件の cells、cells_next
GET /programs/:id/cells?after&limitノードから直接読んだ、キー順のプログラムのセルの 1 ページ(limit は 1〜1,000、デフォルト 100):{ "cells", "next" }。program_state セクションのないチェーンでは 404
GET /search?q=ブロック、トランザクション、プログラム、ノート、ナリファイア、バリデータ
curl -s https://randscan.org/api/v1/stats
curl -s https://randscan.org/api/v1/tokens/1
curl -s https://randscan.org/api/v1/transactions/8aa13d1f76d28f63a46c30bb09ef44b1ba35083ca80ba7301997f98e5f783666

トランザクションの概要(chain 18 の高さ 102,197 における、10 RAND のフォーセット mint):

{
  "hash": "a20b…feb5", "height": 102197, "block_hash": "f362…a06f", "tx_index": 0,
  "kind": "mint", "fee": "0", "timestamp_ms": 1790777106034,
  "has_bundle": false, "program": null, "validator": "EdrEC2QRQrQF64iRXxF9927jNj6RidiHHByzx5xD6F1e",
  "amount": "10000000000", "asset_index": null
}

amount が埋まるのは、公開された金額を持つ種類(mint、bond、unbond、withdraw、bridge_attest、bridge_burn、token_mint、token_burn、および初期ミントを伴う register_token)だけです。転送では null で、その asset_index も常に null です。has_bundle は、バンドルを持たず手数料も支払わない mint、unbond、withdraw、pause_mints、unpause_mints では false です。詳細には chain_id、bundle が加わり、種類ごとに次が加わります。deploy の words_len、call の call_proof_len、input_envelope_len、receipt(tx、program、tier、outputs、height、index、h_in、h_pub)、bond の registered、unbond または withdraw の action_nonce、ブリッジアテステーションの attestation_len、recipient、note_time、deposit_r、commitment、pq_signers、ブリッジバーンの relayer_fee、to_chain、bridge_to、bridge_token、RPL アクションの token_action(kind でタグ付けされた、そのアクション自身のフィールド)。ミントされたノートには recipient、note_time、deposit_r が、token_mint または set_authority には action_nonce が付きます。ブリッジガバナンスのアクションの bridge_governance(pause_mints を除くすべてに pq_signers が付きます)、invoke の call_proof_len、input_envelope_len、receipt、transition(ノードによる表現:読み書きされたセル、inflow、そしてすべての pays と mints のノートと、その recipient、time、r、cm)。このエクスプローラーのビルドが知らない v0.6.8 の種類(admit_validator、slash_equivocation、_v2 のローテーション、cancel_rotation)は other になります。

chain 20 にはブリッジ手数料があり、bridge_attest と bridge_burn の amount は総額です。つまり、ガーディアンが署名した金額、またはバンドルがバーンした金額です。エクスプローラーは、ネットのデposit額、リリース額、手数料ノートを提供しません。これらはノードの rand_getTransaction(deposit_amount、release_amount、fee_note)と rand_getBridgeBurn から読んでください。高さ 2,899 における 0.999 zUSD のバーンは、ここでは "amount": "99900000" と表示されます。ガーディアンが署名したリリース額は 99800100 でした。

トランザクション詳細のバンドルは隠しアセットバンドルで、アセットフィールドはなく、バーンにも 2 つ目のバンドルはありません。次のものは、上の curl の例の call の支払いに使われたもので、chain 18 の高さ 98,335 のものです。このトランザクションは chain 20 には存在せず、3 つ目の curl は 404 を返します。

"bundle": {
  "anchor": "b814…b1ed",
  "nullifiers": ["49d4…a766", "3363…61ea", "aac0…fcfc", "546c…3efd"],
  "commitments": ["b52b…4f7b", "9ddd…0448", "5fa7…1630", "2827…8343"],
  "fee": "6191437", "burn_a": "0", "burn_r": "0", "burn_asset": 0, "time": 98185,
  "proof_len": 1504260, "envelope_len": [1860, 1860, 1860, 1860],
  "auth_commit": "0bda…6512", "auth_proof_len": 1367303
}

auth_commit と auth_proof_len は分割認可(chain 17 以降で、limits.hc_auth が設定されている場合)に関するものです。バンドル証明はビューイングキーから作られて auth_commit を公開し、同じトランザクションに束縛された、スペンドキーに対する 2 つ目の小さな証明が、それと一致しなければなりません。どちらの証明も、長さだけが報告されます。chain 20 のすべてのエンベロープは 1,860 バイト(limits.envelope_bytes)で、暗号化されたメモを運びます。chain 17 までは 1,348 バイトを封印していました。call が宣言したガスリミットは、レシートのフィールドではなく、その証明の公開値なので、エクスプローラーはトランザクションごとには表示しません。支払われた手数料は fee にあります。

burn_a は焼却されたプライベートアセットで、token_burn、bridge_burn、またはトークンを預け入れるか焼却する invoke の場合にのみ非ゼロになります。burn_asset はレジストリインデックスを示します。burn_r は焼却された RAND で、bond、またはプログラムのボールトに RAND を預け入れる invoke の場合にのみ非ゼロになります。

chain 20 では、zUSD(「Shielded USD」、小数点以下 8 桁)はインデックス 1 にあり、7 つのバッキングすべてとともにジェネシスに登録されています(registered_at は 0 で、そのため deploy_tx は null です)。chain 14 から同じアセット ID のまま引き継がれました。したがって GET /bridge/assets はインデックス 1 のもとに 7 行を返します。chain 20 では稼働初日にさらに 5 つのトークンがインデックス 2 から 6 に登録され、そのうち 3 つはプログラムがミント権限を持ちます。GET /tokens で一覧できます。chain 20 の GET /bridge は rules_v2 を報告し、グローバルミント上限は 86,400 秒のウィンドウあたり 4,000 zUSD("400000000000")、rotation_nonce は 0、ジェネシス時点の burn_sequence は 13、min_inbound_sequence はソースチェーン 2、3、4 で 3、ソースチェーン 5 で 7 です(chain 19 では 1 と 4)。これはジェネシスのリプレイ下限で、ソースチェーンのアテステーションがここでミントされるために持たなければならない最小のロックシーケンスです。chain 14 では、高さ 256 で register_bridged_token により登録され、残り 6 つのバッキングは list_backing トランザクションで追加されました。

ブラウザでのエンベロープの開封

エンベロープは公開されたチェーンデータであり、エクスプローラーは鍵を保持しません。そのトランザクションページと History ページでは、ノード自身のコードの WebAssembly ビルド(crates/randscan-viewing)を使って、エンベロープをブラウザ内で開封します。ビューイングキー(nk、64 桁の 16 進数)を貼り付けると、その当事者が送受信したすべてのノートを確認できます。トランザクションキーでは 1 件の支払いを、コールキーでは 1 件のコールの入力を開封できます。ウォレットキーファイルも使えますが、保持されるのは導出されたビューイングキーのみです。開封されたノートは、そのコミットメントを再計算して検証されます。開示される asset はトークンレジストリのインデックスで、シンボルと小数点以下の桁数は GET /tokens で解決されます。これは、転送においてアマウントがアセットに結び付けられる唯一の場所です。ダミースロットはどの鍵でも開封されず、自分のものではないノートと同じように見えます。鍵に関する情報はネットワークに一切送信されません。同じツールを作るには、/envelopes と /transactions/:hash/envelopes を取得し、このクレートを使ってください。

WebSocket フィード

wss://randscan.org/ws に接続し、blocks、transactions、stats のいずれかを購読します。

{ "type": "subscribe", "channel": "blocks" }
{ "type": "new_block", "block": { … BlockSummary … } }
{ "type": "new_transaction", "transaction": { … TransactionSummary … } }
{ "type": "stats_update", "stats": { … } }

プロキシ越しでは 30 秒ごとに { "type": "ping" } を送信してください。このフィードにはリプレイ機能がありません。切断された場合は、再接続して GET /transactions?height= でバックフィルしてください。

自前での運用

ここにあるものはすべて、randprotocol/randscan.org のオープンソースのエクスプローラーが提供しています。インデクサーに必要なのは、ノードの rand_* JSON-RPC と PostgreSQL データベースだけです。

fullnode のコミット c0878c3f(チェーン 21)に対して 2026-10-12 に最終確認しました。また、randscan commit fffa404 (docs/api.md), the live API at randscan.org, 2026-09-20, the live API at randscan.org on chain 18, 2026-09-30, the live API at randscan.org on chain 19, 2026-10-01, randscan commit 4390731 (docs/api.md: RPL-2, BRG-19 and `/provers`) and the live API at randscan.org on chain 20, 2026-10-01; `/stats` on chain 21, 2026-10-12。 コードとこのページが食い違う場合は、コードが正です。お知らせください。