Midnight核心概念:数据模型 midnight-core-concepts:data-models

本技能详细解析Midnight区块链平台支持的两种核心代币数据模型:UTXO账本代币模型与账户合约代币模型。内容涵盖UTXO的创建、消费、作废符隐私机制、屏蔽/非屏蔽代币区别,以及账户模型的适用场景与权衡。提供决策指南,帮助开发者根据隐私需求、并行处理、DeFi复杂性等关键因素,在区块链应用开发中选择合适的代币范式。关键词:Midnight区块链,UTXO模型,账户模型,隐私代币,作废符,屏蔽交易,DeFi开发,智能合约,数据模型选择。

链开发 0 次安装 0 次浏览 更新于 2/26/2026

name: midnight-core-concepts:data-models description: 当询问UTXO与账户模型、账本代币、屏蔽/非屏蔽代币、作废符、硬币、余额,或在Midnight中选择代币范式时使用。

Midnight 数据模型

Midnight 支持两种不同的代币范式:基于UTXO的账本代币基于账户的合约代币。根据隐私要求和用例复杂性进行选择。

快速决策指南

需求 使用UTXO(账本代币) 使用账户(合约代币)
隐私关键 是 - 独立,可屏蔽 否 - 余额可见
并行处理 是 - 无顺序依赖 否 - 顺序随机数
简单转账 过度设计
复杂DeFi逻辑 有限
游戏状态机
治理/委托

UTXO模型(账本代币)

UTXO = 未花费交易输出。每个代币都是一个离散的数字硬币,必须完全花费。

核心机制

创建 → 存在 → 消费 → 防止重用
  1. 创建:UTXO随价值、所有者、加密承诺一起诞生
  2. 存在:可在活跃UTXO集中查询
  3. 消费:在交易中花费整个UTXO(找零作为新的UTXO返回)
  4. 防止:作废符添加到全局集合,防止双花

作废符创新

与比特币的已花费标记不同,Midnight使用作废符:

作废符 = Hash(UTXO_承诺, 所有者密钥)

隐私优势:作废符不透露任何关于哪个UTXO被花费的信息。无需暴露原始UTXO身份即可计算作废符。

屏蔽与非屏蔽

每个UTXO独立选择隐私级别:

  • 屏蔽:承诺隐藏,价值/所有者私有
  • 非屏蔽:价值可见,用于监管合规
// 接收屏蔽代币
接收 硬币: 硬币[];

// 发送代币(可以是屏蔽或非屏蔽)
发送 价值: 限定价值, 至: 地址;

账户模型(合约代币)

在Compact合约内维护地址到余额的映射。类似于ERC-20。

何时使用

  • 需要复杂交互的复杂DeFi状态机
  • 具有状态化游戏逻辑的游戏系统
  • 具有委托机制的治理代币
  • 跟踪关系的社会代币

权衡

方面 账户模型限制
隐私 每笔交易永久可见
排序 随机数产生顺序依赖
MEV 内存池可见性导致抢先交易
可扩展性 每个节点上的冗余计算

账本结构

Midnight的账本有两个组成部分:

1. Zswap状态

  • 硬币承诺的默克尔树
  • 空闲槽索引
  • 作废符集合
  • 有效的历史默克尔根

2. 合约映射

  • 将合约地址与状态关联
  • 包含公共和私有状态组件

代币类型

代币类型是256位抗碰撞哈希:

  • 原生代币:预定义的零值
  • 自定义代币:合约地址 + 域分隔符的哈希
// 从合约发行自定义代币
// 类型 = Hash(合约地址, 域分隔符)

实际应用

选择UTXO当:

  1. 用户需要交易隐私
  2. 需要高吞吐量(并行处理)
  3. 简单价值转账占主导
  4. 通过选择性披露(查看密钥)实现监管合规

选择账户当:

  1. 需要复杂的状态逻辑
  2. 代币需要与复杂的合约逻辑交互
  3. 功能性优先于隐私
  4. 与现有DeFi模式集成

参考资料

详细技术信息:

  • references/utxo-mechanics.md - 完整的UTXO生命周期,作废符计算
  • references/ledger-structure.md - Zswap状态内部结构,默克尔树详情

示例

有效的Compact模式:

  • examples/token-handling.compact - 接收和发送代币