midnight-consensus について
Midnight NetworkのSubstrate改変版コンセンサスを解説するスキルです。AURAによるブロック生成、GRANDPAによるファイナリティ、Cardano SPOの委任と任意の許可型バリデーターを用いる選出方式を扱います。
主な機能
- 01AURAのラウンドロビン型ブロック生成
- 02GRANDPAの非同期ファイナリティ
- 03SPO委任を含むバリデーター選出
- 04任意の許可型バリデーター
活用シーン
- 01Midnightのブロック生成の理解
- 02ブロック確定方式の調査
- 03バリデーター資格モデルの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kali-decoder/ midnight-skills --skill midnight-consensusインストール後、Claude Code で/midnight-consensusを入力して読み込まれたか確認します。
詳細
Midnight Consensus
Midnight Network は、改変された Substrate コンセンサススタックを使用します。ブロック生成には AURA、ファイナリティには GRANDPA を使用します。どちらも、Cardano Partnerchain としての Midnight 向けに拡張されています。
アーキテクチャの概要
flowchart TB
subgraph Selection["Validator selection"]
SPO["Cardano SPO stake delegation"]
Perm["Optional permissioned validators"]
VS["Custom validator set function"]
SPO --> VS
Perm --> VS
end
subgraph Production["Block production — AURA"]
VS --> Slots["Round-robin slots + session keys"]
Slots --> Block["New block proposed"]
end
subgraph Finality["Finality — GRANDPA"]
Block --> Votes["Validator votes on chain"]
Votes --> Final["Provable finality"]
end
バリデーターの選定
標準的な Substrate チェーンとは異なり、Midnight では独自のバリデーターセット選定関数を使用し、次のことが可能です。
- Cardano ステークプールオペレーター(SPO)からのステーク委任を考慮し、既存の Cardano バリデーターが Midnight のコンセンサスに参加できます。
- ハイブリッド型のパブリック/プライベートネットワークを展開するために、許可型バリデーターを任意で追加できます。
| モデル | 役割 |
|---|---|
| SPO 委任 | Cardano のステークを Partnerchain のバリデーター適格性に反映します |
| 許可型セット | 規制対象またはコンソーシアム型のネットワーク向けに、既知のオペレーターを追加します |
| 独自の選定 | 両方を組み合わせて、アクティブなセッションのバリデーターセットを構成します |
AURA:ブロック生成
**AURA(Authority Round)**は、各ブロックを生成するバリデーターを決定するプルーフ・オブ・オーソリティ(PoA)アルゴリズムです。
- バリデーターはラウンドロビン方式で順番に処理します。
- スケジューリングには、事前定義されたスロットとセッションキーを使用します。
- 特性:シンプル、高速、決定論的です。既知のバリデーターセットを持つ高スループットのチェーンに適しています。
AURA はMidnight 固有のものではありません。OpenEthereum で開発されました。Polkadot protocol glossary — AURAを参照してください。
sequenceDiagram
participant V1 as Validator 1
participant V2 as Validator 2
participant V3 as Validator 3
participant Chain as Chain
Note over V1,V3: Slot N — Validator 1's turn
V1->>Chain: Produce block N
Note over V1,V3: Slot N+1 — Validator 2's turn
V2->>Chain: Produce block N+1
Note over V1,V3: Slot N+2 — Validator 3's turn
V3->>Chain: Produce block N+2
**署名:**AURA のブロック生成者メッセージは sr25519 で署名されます(Cryptography スキルを参照)。
GRANDPA:ファイナリティ
**GRANDPA(GHOST-based Recursive ANcestor Deriving Prefix Agreement)**は、非同期で証明可能なファイナリティを提供します。
- ブロック生成とは独立して動作します。
- バリデーターがチェーンに投票し、十分な支持を得たブロックが確定します。
- 汎用的な Polkadot コンポーネントです。正式な仕様とPolkadot の用語集を参照してください。
flowchart LR
A["Blocks produced (AURA)"] --> B["GRANDPA voters observe chain"]
B --> C{"≥ threshold support?"}
C -->|Yes| D["Block finalized — irreversible"]
C -->|No| E["Remains unfinalized / fork possible"]
**署名:**GRANDPA のファイナリティメッセージには Ed25519 を使用します。
AURA と GRANDPA の連携
| レイヤー | 責務 | Midnight における拡張 |
|---|---|---|
| AURA | 次のブロックを生成する主体 | Partnerchain バリデーターセットでの標準的な PoA |
| GRANDPA | 確定するブロック | 標準的な非同期ファイナリティガジェット |
| バリデーターセット | 参加できる主体 | SPO 委任+任意の許可型オペレーター |
**重要なポイント:**GRANDPA が以前のブロックを非同期に確定している間も、ブロック生成は継続できます。これにより、スループットと安全性が切り離されます。
関連スキル
midnight-cryptography/— AURA と GRANDPA で使用する署名方式midnight-onchain-logic/— ランタイムのパレット(pallet-aura、pallet-grandpa、セッション管理)midnight-p2p-networking/— バリデーターの検出と通信の仕組み