midnight-cryptography について
Midnightのノード層で使われる暗号プリミティブを解説するスキルです。コンセンサス、状態遷移、ネットワーク通信の方式を扱い、ノードの暗号技術とLedgerのZK証明を区別します。
主な機能
- 01ブロックハッシュ用のBlake2-256
- 02AURA署名用のsr25519
- 03Partnerchainメッセージ用のECDSA
- 04GRANDPAとlibp2p用のEd25519
- 05ストレージキー用のtwoxhash
活用シーン
- 01コンセンサスで使う方式の特定
- 02ノードとLedgerの暗号技術の区別
- 03Trieストレージキーのハッシュ方式の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ kali-decoder/ midnight-skills --skill midnight-cryptographyインストール後、Claude Code で/midnight-cryptographyを入力して読み込まれたか確認します。
詳細
Midnight ノードの暗号技術
Midnight Ledger(独自の ZK 回路を備えています)を除き、Midnight ノードは、コンセンサス、状態遷移の完全性、ネットワーク通信を実現する基盤となる暗号アルゴリズムに依存しています。
アルゴリズムの概要
flowchart TB
subgraph Hash["Hashing"]
B2["Blake2-256 — cryptographic"]
T2["twoxhash — non-cryptographic storage keys"]
end
subgraph Sign["Signature schemes"]
SR["sr25519 — AURA block authorship"]
ECDSA["ECDSA — Partnerchain consensus messages"]
ED["Ed25519 — GRANDPA finality + libp2p"]
end
subgraph Use["Used for"]
B2 --> Blocks["Block hashes, state transitions"]
T2 --> Trie["Patricia-Merkle trie key generation"]
SR --> AURA["AURA block production"]
ECDSA --> PC["Partnerchain coordination"]
ED --> GRANDPA["GRANDPA votes"]
ED --> P2P["libp2p protocol messages"]
end
Blake2-256(主要なハッシュ関数)
Blake2-256 は、Midnight の主要な暗号学的ハッシュ関数です。
- ブロックハッシュや、状態遷移関数での汎用ハッシュ処理に使用されます。
- ランタイムの重要な処理において、パフォーマンスとセキュリティのバランスを取ります。
署名方式
Midnight では、役割に応じて3 種類の異なる方式を使用します。
| 方式 | 構成/基盤 | 用途 |
|---|---|---|
| sr25519 | Schnorrkel + Ristretto x25519 | AURA ブロックの生成者メッセージへの署名 |
| ECDSA | 標準的な楕円曲線 ECDSA | Partnerchain 関連のコンセンサスメッセージへの署名(外部との相互運用性) |
| Ed25519 | Edwards 曲線 EdDSA | GRANDPA ファイナリティメッセージおよびlibp2pプロトコルメッセージ |
flowchart LR
subgraph Consensus
AURA["AURA slot"] -->|sr25519| BA["Block authorship"]
GRANDPA["GRANDPA vote"] -->|Ed25519| FV["Finality message"]
PC["Partnerchain signal"] -->|ECDSA| PM["Cross-chain message"]
end
subgraph Network
L2P["libp2p handshake"] -->|Ed25519| PI["Peer identity separate from consensus keys"]
end
sr25519
- 効率的な鍵導出と署名集約が可能です。
- Substrate 形式のブロック生成に強力なセキュリティ保証を提供します。
ECDSA
- ECDSA が標準となっているシステム(Partnerchain/Cardano エコシステムのブリッジ)との相互運用性を確保します。
Ed25519
- ファイナライズ時における、高頻度のバリデーター通信を高速に検証できます。
- libp2p ピア IDにも使用されます(コンセンサス署名鍵とは別の鍵ペアです)。
twoxhash(ストレージキー)
twoxhash は、Patricia-Merkle トライでストレージキーを生成するために使用される非暗号学的なハッシュ関数です。
- 高速性と低い衝突率を重視して最適化されています。
- セキュリティが重要なハッシュ処理には適していません。
- トライの検索パフォーマンスを大幅に向上させます。
twoxhash が ParityDB と状態コミットメントにどのように組み込まれているかについては、midnight-storage/ を参照してください。
Ledger とノードの暗号技術
| レイヤー | 暗号技術 |
|---|---|
| Midnight Ledger | ZK 証明、ZSwap 回路、コントラクト証明の検証 |
| Midnight Node | Blake2-256、sr25519、ECDSA、Ed25519、twoxhash |
Ledger の証明検証(pallet-midnight が処理)と、ノードレベルのコンセンサスおよび P2P プリミティブを混同しないでください。
関連スキル
midnight-consensus/— AURA、GRANDPA、Partnerchain の各メッセージにどの方式で署名するかmidnight-storage/— トライのキー生成における twoxhashmidnight-p2p-networking/— libp2p における Ed25519 のピア ID
コメント
Markdown 対応