Aleo 把”你的余额”拆成了一堆各自加密的小信封。在这条链上,账户地址背后没有一个全网可见的余额数字,真正代表你资产的,是一个一个叫做 record 的数据结构:每个 record 装着金额和持有人地址,两者都以加密形式存在链上,只有拿着私钥的人能打开它们。理解 Aleo 的隐私从理解 record 开始——它既像比特币的 UTXO,又像一份可以携带任意程序状态的信封,而它的设计直接决定了这个网络怎么转账、怎么并行、以及哪些环节其实并不匿名。
record 是什么:加密的状态碎片
Aleo 官方把状态模型称为 record model,它是比特币 UTXO 模型的一个泛化。比特币的 UTXO 只能装金额和一条解锁脚本,而 Aleo 的 record 可以装任意类型的字段:除了金额,还可以装一个 NFT 的归属、一份投票记录、一段游戏存档。官方文档给原生代币 credits 的 record 定义只有两个字段——owner(持有人地址,私有可见)与 microcredits(金额,私有可见)。你的全部”私有余额”,就是链上所有 owner 指向你、且金额非零的、尚未被花费的 record 的总和。
每个 record 还带一个公开的 nonce 字段,用来保证同一个 record 在全链上唯一。record 一旦被花费就会作废,新余额以新 record 的形式出现。这套结构和 UTXO 一样是消耗式的:转账不是”改一个数字”,而是”销毁旧 record、铸造新 record”,销毁和铸造之间的收支平衡由零知识证明来保证,节点不需要看到金额也能验证这笔交易合法。
为什么不用账户模型

官方给出的理由集中在两点:隐私效率和并发。账户模型用地址索引全局状态,想让每笔转账不暴露身份,理论上要求每笔交易更新所有人的余额承诺,代价随用户数增长而爆炸。record 模型把状态切碎后,一笔交易只需要处理涉及到的那几条 record,天然支持并行执行——这也是 Aleo 能把零知识证明生成放在客户端、链上只做验证的底气之一。另一个差别是寻址:以太坊式的程序状态挂在程序地址上,而 Aleo 的程序用程序标识索引内部状态,程序地址由哈希推导、背后没有私钥,因此官方明确警告:不要把 record 转给程序地址,那会让资产永久无法取回。
私有余额和公开余额是两套账
Aleo 网络同时维护两种余额形态:record 代表的私有余额,和一个叫 account mapping 的公开键值表——键是地址、值是明文的 microcredits 余额。credits.aleo 这个原生程序提供五个转账函数,区别就在两条账之间怎么搬:transfer_private 消耗发送方的 record、产出收款方 record 和找零 record,全程不碰公开账;transfer_public 只在公开账里搬数字,不涉及任何 record;transfer_private_to_public 和 transfer_public_to_private 各跨一次边界,一半公开一半私有;transfer_public_to_public 则是公开账到公开账。选择哪条路径,决定了这笔交易的哪些部分会在链上可见——这是 Aleo 使用中真正的隐私开关,而不是一个全局的匿名按钮。
record 模式的边界
隐私的边界要按官方口径逐项画清。第一,record 是加密而非隐藏:数据本身要发布到链上,只是内容对没有密钥的人不可读,链的交易历史、执行频率这类元数据仍在明处。第二,零知识证明保证的是”这笔花费合法”,不保证行为与某台机器或某个 IP 无关。第三,把私有余额转到公开账的那一刻,金额就进入明文世界,之后与任何公开余额无法区分。第四,record 的可发现性依赖扫描:钱包要靠自己的私钥扫描链上密文来认出自己的 record,私钥丢失意味着没有任何人、任何客服能替你找回这些信封。
小结
record model 的实质是把状态的所有权从”地址对应的公开行”换成”私钥对应的加密碎片”,用零知识证明在碎片之间搬运价值。它换来的好处是交易级的可编程隐私和更好的并行性;付出的代价是余额不再是查一下就有的数字、找回和审计都依赖密钥管理。评估任何隐私公链时,值得问的问题都一样:哪部分状态被加密、哪部分仍在明文、边界交易发生时暴露了什么。本文只解释机制,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。