mcpField
M
midnight-onchain-logic

midnight-onchain-logic

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

midnight-onchain-logic について

Polkadot SDKランタイムとFRAMEパレットに基づく、Midnightのオンチェーンロジックと状態モデルを解説するスキルです。pallet-midnightによる証明付き台帳トランザクションの処理と、台帳状態のコミットおよび検証方法を説明します。

主な機能

  1. 01WASMランタイムとFRAMEパレットの概要
  2. 02Midnight主要パレットの役割
  3. 03証明付き台帳トランザクションの処理
  4. 04Patricia-Merkleによる状態保存
  5. 05公開状態と選択的に開示される状態

活用シーン

  1. 01Midnightのオンチェーンロジックの実行場所を理解
  2. 02ZSwap送金とコントラクト操作の追跡
  3. 03台帳状態がブロックごとにコミットされる仕組みの把握
  4. 04ランタイムストレージと台帳状態の区別

インストール

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

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

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

詳細

オンチェーンのロジックと状態

Midnight ノードは標準的な Polkadot SDK モデルに従います。ネイティブのプリコンパイルを除くコアロジックは WebAssembly(WASM) にコンパイルされ、ランタイム を構成します。ランタイムは、すべてのノードで同一に実行される状態遷移関数です。

ランタイムアーキテクチャ

flowchart TB
  subgraph Runtime["WASM Runtime"]
    direction TB
    PA["pallet-aura"]
    PG["pallet-grandpa"]
    PS["pallet-partnerchains-session"]
    PVM["pallet_session_validator_management"]
    PM["pallet-midnight ★"]
    Other["Other FRAME pallets"]
  end

  Block["Incoming block + extrinsics"] --> Runtime
  Runtime --> Trie["Patricia-Merkle trie commit"]
  Trie --> DB["ParityDB persistence"]
  PM --> Ledger["Midnight Ledger state commitment"]

FRAME パレット

各 FRAME パレット はオンチェーンロジックの領域をカプセル化し、次の要素を定義できます。

  • ストレージ(マップ、マルチマップ、リスト、値)
  • イベント
  • ディスパッチ可能な関数(トランザクション)
  • オフチェーンワーカー
  • フック
  • ホスト公開関数
  • RPC メソッド

このモジュール設計はスマートコントラクトのフレームワークと考え方が似ていますが、ロジックは 事前にコンパイル され、チェーンレベルで管理 されます。


Midnight の主要なパレット

パレット役割
pallet-auraAURA によるブロック生成
pallet-grandpaGRANDPA によるファイナリティ
pallet-partnerchains-sessionPartnerchain コンテキストでのセッションローテーション
pallet_session_validator_managementバリデーターセットの調整
pallet-midnightプライバシーを保護するコアトランザクションロジック

pallet-midnight:台帳の状態機械

pallet-midnight は内部で管理され、Midnight Ledger の状態機械をカプセル化します。

sequenceDiagram
  participant Tx as Ledger transaction
  participant Pool as Transaction pool
  participant PM as pallet-midnight
  participant Lib as Native proof libraries
  participant State as On-chain storage

  Tx->>Pool: Submit (unsigned, proof-embedded)
  Pool->>Pool: Well-formedness check
  Pool->>PM: Included in block
  PM->>Lib: Verify cryptographic proof
  Lib-->>PM: Valid / invalid
  PM->>State: Execute state transition
  State->>State: Commit trie + ledger commitment
処理対象
  • ZSwap の資産移転
  • コントラクト操作(デプロイ、呼び出し)
  • Midnight Ledger 形式の特殊なトランザクション
検証モデル
  • 台帳トランザクションには、従来の署名ベースのディスパッチを 使用しません。
  • 各トランザクションには、有効性を証明する 暗号学的証明 が含まれます。
  • ネイティブライブラリが証明を検証し、対応する状態遷移を実行します。
状態コミットメント

実行後:

  1. 新しい状態がオンチェーンにコミットされます。
  2. 正規の台帳状態は、キーバリューデータベースを基盤とする Patricia-Merkle トライ に格納されます。
  3. Midnight Ledger の全状態に対するコミットメント がブロックごとに永続化されます。改ざんが不可能で、検証可能です。

パブリック状態と台帳状態

状態の種類保存場所可視性
Substrate ランタイムストレージPatricia-Merkle トライ標準的なオンチェーンクエリ
Midnight Ledger コミットメントブロックごとに永続化台帳の検証可能なスナップショット
コントラクトの台帳フィールドCompact の disclose() 経由コントラクト設計に応じて選択的に公開

アプリケーションレベルのプライバシーパターンについては、why-midnight/ と compact/ を参照してください。


関連スキル

  • midnight-consensus/ — AURA および GRANDPA パレット
  • midnight-transactions/ — トランザクションプール → ランタイム → コミットのライフサイクル
  • midnight-storage/ — ParityDB とトライの詳細
  • midnight-rpc/ — RPC によるコントラクト状態と台帳状態のクエリ

コメント