mcpField
M
midnight-rpc

midnight-rpc

github.com/kali-decoder開発18124 回インストール1 日前に更新
リポジトリ

midnight-rpc について

DApp、ウォレット、ブロックエクスプローラー、サービスを Midnight ノードに接続する開発者向けの技術リファレンススキルです。コントラクトや台帳データ、システム情報、Partnerchain 操作の JSON-RPC メソッドを説明します。

主な機能

  1. 01JSON または生形式のコントラクト状態を取得
  2. 02ZSwap 状態と未請求報酬を照会
  3. 03API と台帳のバージョンを確認
  4. 04Polkadot SDK の標準 RPC メソッドを利用
  5. 05Partnerchain のコンセンサスとファイナリティ情報を取得

活用シーン

  1. 01Midnight ノードからコントラクト状態を読む
  2. 02ノードの健全性と対応 RPC メソッドを確認
  3. 03Partnerchain データをサービスに組み込む

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kali-decoder/midnight-skills --skill midnight-rpc

インストール後、Claude Code で/midnight-rpcを入力して読み込まれたか確認します。

詳細

RPC インターフェース

**リモートプロシージャコール(RPC)**層を使用すると、外部クライアント(dApp、ウォレット、エクスプローラー、サービス)が、HTTP/HTTPS または WebSocket 経由で稼働中の Midnight ノードとやり取りできます。

Midnight RPC は JSON-RPC 標準に準拠しています。

クライアント ↔ ノードのフロー

flowchart LR
  subgraph Clients
    DApp["dApp / wallet"]
    Explorer["Block explorer"]
    Svc["Backend service"]
  end

  subgraph Node["Midnight node"]
    RPC["JSON-RPC layer"]
    RT["Runtime / pallet-midnight"]
    Store["State storage"]
  end

  DApp -->|HTTP / WSS| RPC
  Explorer --> RPC
  Svc --> RPC
  RPC --> RT
  RT --> Store
RPC で可能になること
  • トランザクションの送信(状態遷移)
  • オンチェーンのコントラクト状態の照会
  • 補助データの取得(オフチェーンの値、メタデータ)

Midnight のコア RPC メソッド

台帳の状態、コントラクトの状態、システム情報に特化したカスタムメソッドです。

メソッド目的
midnight_jsonContractStateJSON エンコードされたスマートコントラクトの状態
midnight_contractStateブロック時点のバイナリーエンコードされたコントラクトの状態
midnight_unclaimedAmount受益者が未請求のトークン/報酬
midnight_zswapChainStateコントラクトの ZSwap チェーン状態
midnight_apiVersionsサポートされている RPC API バージョン(ツールとの互換性)
midnight_ledgerVersionブロック時点の台帳バージョン
メソッドのシグネチャ(リファレンス)
#[method(name = "midnight_jsonContractState")]
fn get_json_state(
    &self,
    contract_address: String,
    at: Option<BlockHash>,
) -> Result<String, StateRpcError>;

#[method(name = "midnight_contractState")]
fn get_state(
    &self,
    contract_address: String,
    at: Option<BlockHash>,
) -> Result<String, StateRpcError>;

#[method(name = "midnight_unclaimedAmount")]
fn get_unclaimed_amount(
    &self,
    beneficiary: String,
    at: Option<BlockHash>,
) -> Result<u128, StateRpcError>;

#[method(name = "midnight_zswapChainState")]
fn get_zswap_chain_state(
    &self,
    contract_address: String,
    at: Option<BlockHash>,
) -> Result<String, StateRpcError>;

#[method(name = "midnight_apiVersions")]
fn get_supported_api_versions(&self) -> RpcResult<Vec<u32>>;

#[method(name = "midnight_ledgerVersion")]
fn get_ledger_version(&self, at: Option<BlockHash>) -> Result<String, BlockRpcError>;

ほとんどのメソッドでは、ブロックハッシュ at を省略可能です。省略すると最新のブロックが使用されます。

flowchart TB
  Q["Client query"] --> M{"Method type"}
  M -->|Contract| CS["midnight_contractState / jsonContractState"]
  M -->|ZSwap| ZS["midnight_zswapChainState"]
  M -->|Rewards| UA["midnight_unclaimedAmount"]
  M -->|Meta| LV["midnight_ledgerVersion / apiVersions"]
  CS --> Block["Resolve at block hash or latest"]
  ZS --> Block
  UA --> Block
  LV --> Block

Polkadot SDK の RPC サポート

Midnight は、次のような Polkadot SDK のデフォルトメソッドも公開しています。

メソッド目的
system_healthノードの健全性ステータス
chain_getBlockハッシュでブロックを取得
state_getStorageキーに対応するストレージを読み取り
rpc_methodsサポートされているすべての RPC エンドポイントを一覧表示

ノードで利用可能なメソッドの全一覧は、いつでも rpc_methods を呼び出して確認できます。

注: 一部の Midnight RPC メソッドは Polkadot JS Apps に表示されない場合があります。共通するメソッドについては、Polkadot SDK RPC ドキュメントを参照してください。サポート状況はノードのバージョンと設定によって異なります。

アプリケーションレベルの読み取りには、多くの dApp が Indexer GraphQL API を選択します。midnight-indexer/ を参照してください。


Partnerchain RPC

Midnight は、ブロックプロデューサーやサイドチェーンとの統合に向けて、Partnerchain 固有の RPC メソッドを公開しています。

  • コンセンサスシグナルの照会
  • ファイナリティ情報の中継
  • クロスチェーン操作の調整

セキュリティ:ブロックプロデューサー

警告: すべての RPC メソッドが、パブリックノードや本番ノードで公開しても安全とは限りません。

ブロック生成ノードを実行する場合:

リスク緩和策
機密データの漏えい--rpc-methods Safe を使用する
外部からの攻撃対象領域必要な場合を除き、--rpc-external を避ける
パフォーマンスの悪用運用上の役割に必要なエンドポイントだけを公開する
flowchart TD
  Role{"Node role?"}
  Role -->|Validator / block producer| Safe["--rpc-methods Safe<br/>No --rpc-external"]
  Role -->|Observer / archive| Review["Review threat model<br/>May expose read-only RPC"]
  Safe --> Audit["Audit rpc_methods list"]
  Review --> Audit

RPC の設定は、脅威モデルと役割(バリデーターかオブザーバーか)に合わせてください。


関連スキル

  • midnight-onchain-logic/ — RPC の状態メソッドが読み取る内容
  • midnight-indexer/ — dApp データ向けの GraphQL 代替手段
  • midnight-transactions/ — RPC 経由で証明ベースのトランザクションを送信する方法

コメント