mcpField
M
midnight-onchain-logic

midnight-onchain-logic

github.com/kali-decoder开发18125 次安装1 天前更新
代码仓库

关于 midnight-onchain-logic

这项技能介绍 Midnight 的链上逻辑与状态模型,基于 Polkadot SDK 运行时和 FRAME pallet。它说明 pallet-midnight 如何处理带证明的账本交易,以及账本状态如何提交并供验证。

主要功能

  1. 01WASM 运行时与 FRAME pallet 概览
  2. 02Midnight 核心 pallet 的职责
  3. 03基于证明的账本交易处理
  4. 04Patricia-Merkle 状态存储
  5. 05公开与选择性披露的状态

适用场景

  1. 01了解 Midnight 链上逻辑的执行位置
  2. 02追踪 ZSwap 转账和合约操作
  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-aura通过 AURA 生成区块
pallet-grandpa通过 GRANDPA 实现最终确定性
pallet-partnerchains-session在 Partnerchain 上下文中轮换会话
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 trie 中。
  3. 每个区块都会持久化对完整 Midnight Ledger 状态的承诺——不可篡改且可验证。

公开状态与账本状态

状态类型所在位置可见性
Substrate 运行时存储Patricia-Merkle trie标准链上查询
Midnight Ledger 承诺按区块持久化可验证的账本快照
合约账本字段通过 Compact 中的 disclose()根据合约设计选择性公开

有关应用层隐私模式,请参阅 why-midnight/ 和 compact/。


相关技能

  • midnight-consensus/ — AURA + GRANDPA 托盘
  • midnight-transactions/ — 交易池 → 运行时 → 提交生命周期
  • midnight-storage/ — ParityDB + trie 详情
  • midnight-rpc/ — 通过 RPC 查询合约和账本状态

评论

支持 Markdown