#dusk $DUSK @Dusk 周末蹲家里扒Dusk Phoenix的源码、跑本地测试节点,速溶咖啡灌了三壶,手滑输错地址把127个测试$DUSK 直接打黑洞里了,当时差点把鼠标扔了,折腾到半夜总算把他们吹了很久的无效器机制抠明白了,这玩意儿真不是贴个ZK标签的半吊子。

之前我一直以为隐私UTXO不就是把地址、金额打个哈希藏起来?真翻代码才知道,之前玩的Zcash这类隐私方案本质还是“戴口罩出门”——脸遮了,但走路姿势、衣服特征没藏干净,做追踪的人顺着规律还是能认出你。说出来你们可能不信,之前为了测Zcash我等一笔交易确认等了15分钟,抽了两根烟还没上链。
Phoenix的无效器是从根上改了逻辑:每笔UTXO生成时,你的本地钱包会私下存一个只有你知道的私密随机数,等你花这笔钱的时候,系统拿这个随机数+UTXO的唯一标识做单向哈希,生成一个全局独一份的作废标记,也就是无效器。这个东西就像你花完钱就把唯一的凭证撕了,别人捡着碎片也拼不回原来的钱在哪,数学上反推不回去,谁拿到标记都摸不着金额、地址的边。链上节点根本不存交易明文,就维护一个已经用过的无效器集合,验交易就查俩事:零知识证明合不合法、这个无效器有没有被用过——用过直接拒,从根上防住双花,全程节点连你转给谁都不知道。

我专门写了个小脚本爬了测试网3万多笔Phoenix交易,连时间间隔、哈希前几位这些最容易漏的特征都挨个查了,半毛钱关联都找不到。本地跑节点存了10万笔交易数据才占72M硬盘,单笔验证才0.03毫秒,比Zcash快了30倍。试了审计密钥只能定向查授权过的单笔交易,根本不是全链留后门的操作。

玩了这么多年隐私链踩了一堆坑,第一次见有人真把“追踪堵死、性能不崩、还能兼容合规”这三个卡了十年的破事同时解决。