你正在设计一个智能合约:用户的资产余额,该让全网看见,还是藏进密码学黑箱?Midnight区块链的答案是——两个都要,但分开存。
这不是简单的技术选型,而是一场关于"什么该透明、什么该隐藏"的架构革命。他们管这叫"状态二分法"(State Dichotomy)。
![]()
两套数据库,两种生存法则
Midnight把世界劈成两半。
一边是账本状态(Ledger State),链上公开,全球节点同步。用抽象数据类型(Abstract Data Types, ADTs)管理——Map、计数器、集合。token总供应量、管理员名单、共识参数,全摊在这儿。任何人都能验证,没人能撒谎。
另一边是屏蔽状态(Shielded State),链下本地,藏在证明者(prover)自己的环境里。用户提交零知识证明(Zero-Knowledge proofs),只证明"我按规则操作了",不暴露操作内容。机密资产、匿名成员资格、私密治理,全躲在这儿。解锁全靠私钥,披露必须显式写在电路里。
Compact语言的合约本质上是一台去中心化状态机,状态转换由零知识电路(ZK circuits)控制。选什么存储结构,直接决定隐私边界画在哪儿。
Map:公开账本的身份证系统
Map是Midnight账本的核心工具。O(1)查找、O(1)插入,就是个去中心化字典。
适合的场景很直白:身份需要公开绑定到属性或权限。代码里这么声明——
pragma language_version >= 0.16 && <= 0.21;
import CompactStandardLibrary;
export ledger registry: Map, Bytes<32>>;
一个32字节公钥,映射到一个32字节档案哈希。公开、可审计、防篡改。
但Map有个铁律:每次交互都得穿越公私边界。电路里的私有变量,怎么跟链上的公开Map对话?Midnight的答案叫"披露规则"(disclosure rule)——你想读Map里的值?可以,但得在电路里显式标记哪些数据要暴露。
这不是bug,是设计。透明和隐私的交界处,必须有人为选择。
Merkle树:匿名世界的 membership 证明
如果Map是公开点名册,Merkle树就是暗室里的指纹库。
核心区别:网络不需要知道"你是谁",只需要知道"你在不在集合里"。用户本地持有完整数据集,向链上提交一个Merkle证明(Merkle proof)——树根公开在账本,叶子藏在自己手里。
Compact把Merkle树当成屏蔽状态的基础设施。电路里验证成员资格,不暴露具体是哪个成员。适合白名单、空投资格、私密投票——任何需要"证明归属但隐藏身份"的场景。
代价也明显。Merkle证明的验证开销高于Map直接查找,电路更复杂,gas更高。但隐私不是免费的午餐,这是 trade-off 的硬边界。
一个双轨制案例:公开注册表+匿名白名单
原文没给完整代码,但描述了典型架构:public registry + anonymous allowlist。
registry用Map。谁注册了、注册信息哈希是什么,全网可见。这是合规基础,也是抗女巫攻击的防线。
allowlist用Merkle树。谁能参与下一轮、资格怎么算,只有树根上链。用户自己算路径、自己生成证明,合约只验根、不点名。
同一套业务,两种数据结构,切在两个隐私层级。开发者要做的选择题是:这个关系,需要公开可追责,还是匿名可验证?
SDK集成:电路即边界
Compact的SDK把这套二分法焊进开发流程。写合约时,ledger块里声明公开结构,circuit块里操作私有数据。编译器帮你检查:有没有非法越界、披露规则是否满足。
零知识电路的效率,高度依赖存储结构的选择。Map适合频繁读写的公开状态,Merkle树适合一次写入、多次证明的隐私集合。选错结构,电路膨胀,证明时间指数级增长。
这不是"哪个更好"的问题,是"边界画在哪儿"的问题。
为什么这很重要?
以太坊教会我们:透明是可编程信任的基础。但现实世界不这么运转——你的银行账户、医疗记录、投票选择,都不是公开账本。
Midnight的赌注是:区块链可以两者兼得,但必须把架构拆开。不是用一层妥协方案糊弄过去,而是用两套系统、两种数据结构,让开发者在代码层面显式选择隐私策略。
这改变了什么?合规场景(KYC、监管审计)和抗审查场景( whistleblower 工具、敏感数据市场)可以在同一链上共存,而不互相污染。Map保证"需要透明的地方能透明",Merkle树保证"需要隐藏的地方能隐藏"。
但这里埋着一个开放问题:当开发者拥有这种选择权,谁来决定哪个数据进Map、哪个进Merkle树?是用户同意、监管要求,还是代码默认?隐私的边界从协议层上浮到了应用层,这究竟是赋权,还是把烫手山芋扔给了每个项目方?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.