mcpField
M
midnight-transactions

midnight-transactions

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

midnight-transactions について

Midnightネットワークでのトランザクション処理を解説する技術スキルです。dApp開発者やノード運用者向けに、証明ベースの形式、プール検査、ランタイム実行、ファイナリティを説明します。

主な機能

  1. 01Midnightのトランザクションライフサイクル概要
  2. 02証明ベースの検証モデル
  3. 03プールとランタイムの検査の違い
  4. 04デプロイ、呼び出し、ZSwapのトランザクション種別
  5. 05送信とファイナリティの段階

活用シーン

  1. 01dAppからのトランザクション送信方法の把握
  2. 02プール検査と証明検証の区別
  3. 03コントラクトまたはZSwapの状態更新の追跡
  4. 04ノード運用におけるトランザクション処理の確認

インストール

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

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

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

詳細

トランザクション

Midnight ノードは標準の Polkadot SDK トランザクション形式をサポートしていますが、Substrate スタイルのデフォルトの署名付きエクストリンシックは、実際にはあまり使われません。Midnight は、Midnight Ledger と密接に連携した証明ベースの検証モデルを採用しています。

ライフサイクルの概要

flowchart TB
  Build["Build transaction + ZK proof<br/>(wallet / SDK)"]
  Submit["Submit to node RPC / P2P"]
  Pool["Transaction pool<br/>well-formedness check"]
  Block["Included in block"]
  Verify["Runtime verifies embedded proof"]
  Execute["Execute state transition"]
  Commit["Commit to trie + ledger commitment"]

  Build --> Submit --> Pool
  Pool -->|Valid structure| Block
  Pool -->|Reject| Reject["Dropped from pool"]
  Block --> Verify
  Verify -->|Invalid proof| Fail["Transaction fails"]
  Verify -->|Valid| Execute --> Commit

証明ベースのモデル

Midnight のトランザクションのほとんどは署名なしで、Midnight Ledger 形式に従います。

従来のチェーンMidnight
署名によって操作を承認暗号学的証明によって有効性を証明
公開された署名者のアイデンティティ機密データはオフチェーンまたは証明内に保持
標準的なエクストリンシック形式Ledger 固有のトランザクションエンベロープ

証明により、ネットワークは機密データや生の署名を直接公開することなく、状態遷移を検証できます。

トランザクションの種類
  • コントラクトのデプロイ
  • コントラクトの呼び出し(回路呼び出し)
  • ZSwap アセットの転送

処理段階

1. 送信

クライアント(ウォレット、SDK、dApp)がノードの RPC にトランザクションを送信するか、P2P ゴシップ経由で伝播させます。

2. トランザクションプールでの検証

プールは形式が正しいことを確認します。

  • ランタイムと Ledger の仕様に基づく構造上の要件
  • 論理的な事前条件(形式、サイズ、基本的な有効性)
  • この段階ではまだ証明全体の検証は行いません(ブロックの実行時に行われます)
sequenceDiagram
  participant Client
  participant Pool as Tx pool
  participant Block as Block author
  participant RT as Runtime (pallet-midnight)

  Client->>Pool: Submit unsigned proof tx
  Pool->>Pool: Well-formedness validation
  alt Invalid
    Pool-->>Client: Reject
  else Valid
    Pool->>Block: Candidate for inclusion
    Block->>RT: Execute in block
    RT->>RT: Full proof verification
    RT->>RT: State transition + commit
  end
3. ブロックへの包含

ブロックプロデューサー(AURA バリデーター)がトランザクションを新しいブロックに含めます。

4. ランタイムでの検証と実行

pallet-midnight:

  1. 埋め込まれた暗号学的証明を完全に検証します(ネイティブライブラリを使用)。
  2. 有効な場合、対応する状態遷移を実行します。
  3. 更新された状態をオンチェーンストレージにコミットします。
5. ファイナリティ

ブロックは包含後、GRANDPA によって非同期にファイナライズされる場合があります。


比較:プールのチェックとランタイムのチェック

チェック場所内容
形式が正しいことトランザクションプール構造、基本的な有効性
証明の検証ランタイム(pallet-midnight)暗号学的な完全検証
状態遷移ランタイムZSwap/コントラクト状態の更新
永続化ストレージレイヤートライ+Ledger コミットメント

tx の構築と送信(dApp のコンテキスト)

アプリケーション開発者向け:

レイヤースキル
tx の証明と送信midnight-js/, 1am-wallet/
コントラクトロジックcompact/
結果の読み取りmidnight-indexer/, midnight-rpc/

ノードオペレーターは、プールサイズ、ブロック制限、RPC の送信エンドポイントに注意します。


関連スキル

  • midnight-onchain-logic/ — pallet-midnight の実行
  • midnight-storage/ — コミットが永続化される仕組み
  • midnight-consensus/ — ブロックに tx を含める主体
  • midnight-rpc/ — 送信と状態照会のエンドポイント
  • compact/ — コントラクトレベルで証明される内容

コメント