在 FTX 破产后,用户资产透明度的问题便在中心化交易所间引起广泛讨论,而币安作为业内首屈一指的交易所,在去年 11 月便采用 Merkle tree 的技术进行资产证明,使用户可以查验不同资产的钱包地址以及余额。然而,原先的 Merkle tree 架构有其问题,币安在近期宣布将采用 zk-SNARKs 技术,使用户在验证资产时更加可信。
(前情提要:币安公布资产证明!12万个BTC、190万个ETH、69.5亿USDT)
币安储备证明系统原先问题有哪些?
根据币安发表的文章,其认为原先基于 Merkle tree 的储备证明解决方案有以下两点问题:
1.为了保护用户隐私,Merkle 证明中的 Leaf Node 代表用户持有资产的哈希值,因此,Merkle Tree 的 Root Node 无法反应其 Leaf Node 的余额资讯总和。
2.根据 Vitalik 的文章,透过增加余额为负值的假帐户可以使所需的资产储备总额降低。在这种恶意 Merkle Tree 的案例中,尽管 Root Node 仍会反应 Leaf Node 的余额,但可能会导致隐私问题。
为了解决上述问题,币安决定采用零知识证明协议「zk-SNARKs」来加强储备证明系统,并做出以下改进:
- Merkle Tree 中所有的 Leaf Node 皆促成币安声称的各资产用户总额。
- Merkle Tree 中,没有任何用户的资产余额为负值。
那么,什么是 zk-SNARKs?
简单来说,像是 zk-SNARKs 这种零知识证明协议,允许证明者 (币安) 向验证者 (用户) 证明,已在特定的限制下使用某种输入资讯准确地进行计算,而这些输入资讯皆没有被公开。
尽管背后的计算过程相当费时,但可以帮助用户快速地评估资产安全。
升级后的资产储备证明
在采用 zk-SNARKs 协议后,币安的储备证明架构仍以 Merkle tree 为基础,而与原先的差别在于会呈现用户的资产和债务总额,以及各资产的资讯,币安将其称为 Global State。不过,用户的个人帐户资讯仍透过加密保护。
为了证明储备,币安将为 Merkle tree 的架构生成 zk-SNARKs 证明,而每个 Leaf Node,也就是用户的资产余额,需要符合以下条件:
- 用户的每项资产余额都包含在上述 Global State 列表中。
- 用户净资产余额不得为负。
- Root Node 的改变在更新用户讯息至 Leaf Node 的哈希值后生效。
透过储备证明技术的更新,币安希望将数位资产证明的透明度提升到更高水准,同时也解决 Vitalik 于文章中所提到的问题。
而作为此次升级的一部分,币安的储备证明系统新增了四种代币,当前供支援 13 种加密资产,用户可自行验证在币安托管中以下资产的持有量。