Midnight Network 使用改造过的 Substrate 共识栈:AURA 负责区块生产,GRANDPA 负责最终确定性。两者均针对 Midnight 作为 Cardano Partnerchain 进行了扩展。
架构概览
验证者选择(Validator selection)
- Cardano SPO 质押委托(SPO stake delegation)
- 可选许可验证者(Optional permissioned validators)
- 自定义验证者集合函数(Custom validator set function) 上述输入组合成活跃会话验证者集合。
区块生产 — AURA 验证者集合 → 轮询时隙 + 会话密钥(Round-robin slots + session keys)→ 提出新区块。
最终确定性 — GRANDPA 区块 → 验证者对链投票(Validator votes on chain)→ 可证明的最终确定性(Provable finality)。
验证者选择 与标准 Substrate 链不同,Midnight 使用自定义验证者集合选择函数,该函数:
- 考虑来自 Cardano 质押池运营者(SPO)的质押委托,让现有 Cardano 验证者参与 Midnight 共识。
- 支持可选许可验证者,用于公私混合网络部署。
模型与角色:
- SPO 委托:将 Cardano 质押桥接为 Partnerchain 验证者资格。
- 许可集合:为受监管或联盟网络添加已知运营者。
- 自定义选择:将两者组合为活跃会话验证者集合。
AURA:区块生产 AURA(Authority Round)是一种权威证明(PoA)算法,决定由哪个验证者生产每个区块。
- 验证者按轮询顺序轮流。
- 调度使用预定义时隙和会话密钥。
- 特性:简单、快速、确定性——适合具有已知验证者集合的高吞吐量链。
AURA 并非 Midnight 专属;它起源于 OpenEthereum。参见 Polkadot 协议术语表 — AURA(https://wiki.polkadot.network/docs/glossary#authority-round-aura)。
出块序列示意:
- 时隙 N — 验证者 1 的回合:验证者 1 产生区块 N。
- 时隙 N+1 — 验证者 2 的回合:验证者 2 产生区块 N+1。
- 时隙 N+2 — 验证者 3 的回合:验证者 3 产生区块 N+2。
签名:AURA 中的区块作者消息使用 sr25519 签名(参见 Cryptography 技能)。
GRANDPA:最终确定性 GRANDPA(GHOST-based Recursive ANcestor Deriving Prefix Agreement)提供异步、可证明的最终确定性。
- 独立于区块生产运行。
- 验证者对链投票;区块获得足够支持后即最终确定。
- 通用 Polkadot 组件——有形式化规范和 Polkadot 术语表。
流程图: 已生产区块(AURA)→ GRANDPA 投票者观察链 → 达到阈值支持?
- 是 → 区块最终确定——不可逆。
- 否 → 保持未最终确定/可能分叉。
签名:GRANDPA 最终性消息使用 Ed25519。
AURA 与 GRANDPA 如何协同工作 层次与职责及 Midnight 扩展:
- AURA:谁构建下一个区块;在 Partnerchain 验证者集合上的标准 PoA。
- GRANDPA:哪些区块是最终的;标准异步最终性小工具。
- 验证者集合:谁可以参与;SPO 委托 + 可选许可运营者。
关键洞察:区块生产可以持续进行,同时 GRANDPA 异步地最终确定较早的区块——吞吐量与安全性相互解耦。
相关技能
- midnight-cryptography/ — AURA 和 GRANDPA 使用的签名方案
- midnight-onchain-logic/ — 运行时 pallet(pallet-aura、pallet-grandpa、会话管理)
- midnight-p2p-networking/ — 验证者如何发现和通信