储备金证明由一开始的直接资产证明,不断引入可信任的技术和流程来优化证明过程,最终发展成为债务证明。其中的尝试包括可信第三方、默克尔树和零知识证明技术等。
2011年,当时最大的比特币交易所MtGox,通过发送一笔移动424,242个BTC到预先公布地址的交易,来证明他们拥有该笔资金。该方法只能对资产进行证明,无法对交易所负债进行证明。用户无法知道这是否是已经被挪用过得资产数额。
债务证明和资产证明最大的区别就是,债务证明不仅要证明交易所持有的资产数量,还有将用户存入的资产数量公布。
交易所的债务就是用户存入的资产。如果想证明用户的资产,最简单的方法就是公布一个含有用户账号和余额的列表,每个用户可以打开表格,查询自己账号对应的余额是否正确。
但这个方法有著明显的缺陷:
①无法保证交易所提供的列表是真实的。
②过程中,用户的账号信息和余额都会被泄露。
所以直接公布法是债务证明的基础理论设想,暂时没有交易所实行过。
默克尔树是种类似于”树”的数据结构,最下层数据称为“叶节点”,中间可以称为“中间节点”,左右两个叶节点可以经过哈希处理(把任意输入值通过特定处理方式得出特定值)输出中间节点的值,左右中间节点经过哈希处理得到上层中间节点唯一的输出值,层层处理后,最终得到默克尔树的根节点(Root)。该值是唯一的,任何叶节点的变动都会导致根节点的变动。
这种方法下,通过层层相加得到交易所持有的用户资产数量,但直接在叶节点中放入用户账户和余额两个数据后,仍存在小范围的信息泄露问题。以上图为例,绿色标记的用户Charlie不仅可以知道David的部分信息,还可以知道左侧Alice和Bob的余额和。于是在叶节点方面有了新的技术改进:
(1)如上图所示,将用户账户ID和一个特定值一起进行哈希处理。
(2)将用户余额分散开,比如Charlie的10ETH,可以分成两个5ETH放入两个叶节点。
(3)将用户ID和余额分别经过哈希处理,然后再将得到的值进行一次哈希处理。
尽管有多种优化的方式,但有一个问题是默克尔树无法解决的:负值账户。在实际使用中,用户存入加密货币后,会体验交易所杠杆交易、永续合约等产品,假如发生亏损,最大亏损也应为100%本金,也就是说用户账户余额应大于或等于0。
所以负值账户一般由作恶的交易所端发起,如果交易所挪用了500ETH的资产,按照正常计算,交易所实际拥有的资产之应有资产抵押率很可能小于100%,暴露出其挪用资产的行为。但交易所可以通过如下图例中名为Henry的余额为-500ETH的账户,让默克尔树生成的总资产等于或者小于交易所挪用后实际拥有的资产数,从而伪造出抵押率大于100%的假象。
“审计”在日常语境中主要指具有独立性的经济监督活动,从事这种活动的主体称为“审计公司”,常见的应用场景有上市公司财报审计、政府审计等。在加密世界中,CEX都会寻找在传统领域具有良好声誉的审计公司为其完成审计。由于加密行业的特殊性以及审计制度的不完善,很多第三方审计需要结合默克尔树技术。
审计公司会利用交易所提供的用户余额生成默克尔树。默克尔树生成后,审计员验证总用户余额并发布完整默克尔树和根哈希。用户可以在验证界面输入自己的哈希用户ID和代币余额来触发验证过程。
这种方法的好处就是可以通过知名的审计公司来提高可信度。但由于主要依赖于审计师的职业道德,也无法保证审计师与交易所不联合作恶。所以为了更加安全透明的提供储备金证明,第三方审计逐渐成为辅助证明方式或者被弃用。
从上文也可以了解到,现有的默克尔树结构除了隐私问题外还有负值账户问题无法解决。以太坊创始人Vitalik Buterin在22年12月发布了一篇名为《Having a safe CEX: proof of solvency and beyond》的文章讨论交易所如何拥有更好的证明偿付能力。文中提到可以在传统储备金证明的基础上引入zk-SNARK等新型技术来保证更加公开、透明、真实的储备金证明。这也激起了各大交易所对采用零知识证明技术更新储备金证明技术的探索。
从简单的资产证明到采用加密技术,交易所的储备金证明正在朝着去中心化、隐私化和透明化发展。在下一节中,我们将重点讲解零知识证明技术与储备金证明的结合。
储备金证明由一开始的直接资产证明,不断引入可信任的技术和流程来优化证明过程,最终发展成为债务证明。其中的尝试包括可信第三方、默克尔树和零知识证明技术等。
2011年,当时最大的比特币交易所MtGox,通过发送一笔移动424,242个BTC到预先公布地址的交易,来证明他们拥有该笔资金。该方法只能对资产进行证明,无法对交易所负债进行证明。用户无法知道这是否是已经被挪用过得资产数额。
债务证明和资产证明最大的区别就是,债务证明不仅要证明交易所持有的资产数量,还有将用户存入的资产数量公布。
交易所的债务就是用户存入的资产。如果想证明用户的资产,最简单的方法就是公布一个含有用户账号和余额的列表,每个用户可以打开表格,查询自己账号对应的余额是否正确。
但这个方法有著明显的缺陷:
①无法保证交易所提供的列表是真实的。
②过程中,用户的账号信息和余额都会被泄露。
所以直接公布法是债务证明的基础理论设想,暂时没有交易所实行过。
默克尔树是种类似于”树”的数据结构,最下层数据称为“叶节点”,中间可以称为“中间节点”,左右两个叶节点可以经过哈希处理(把任意输入值通过特定处理方式得出特定值)输出中间节点的值,左右中间节点经过哈希处理得到上层中间节点唯一的输出值,层层处理后,最终得到默克尔树的根节点(Root)。该值是唯一的,任何叶节点的变动都会导致根节点的变动。
这种方法下,通过层层相加得到交易所持有的用户资产数量,但直接在叶节点中放入用户账户和余额两个数据后,仍存在小范围的信息泄露问题。以上图为例,绿色标记的用户Charlie不仅可以知道David的部分信息,还可以知道左侧Alice和Bob的余额和。于是在叶节点方面有了新的技术改进:
(1)如上图所示,将用户账户ID和一个特定值一起进行哈希处理。
(2)将用户余额分散开,比如Charlie的10ETH,可以分成两个5ETH放入两个叶节点。
(3)将用户ID和余额分别经过哈希处理,然后再将得到的值进行一次哈希处理。
尽管有多种优化的方式,但有一个问题是默克尔树无法解决的:负值账户。在实际使用中,用户存入加密货币后,会体验交易所杠杆交易、永续合约等产品,假如发生亏损,最大亏损也应为100%本金,也就是说用户账户余额应大于或等于0。
所以负值账户一般由作恶的交易所端发起,如果交易所挪用了500ETH的资产,按照正常计算,交易所实际拥有的资产之应有资产抵押率很可能小于100%,暴露出其挪用资产的行为。但交易所可以通过如下图例中名为Henry的余额为-500ETH的账户,让默克尔树生成的总资产等于或者小于交易所挪用后实际拥有的资产数,从而伪造出抵押率大于100%的假象。
“审计”在日常语境中主要指具有独立性的经济监督活动,从事这种活动的主体称为“审计公司”,常见的应用场景有上市公司财报审计、政府审计等。在加密世界中,CEX都会寻找在传统领域具有良好声誉的审计公司为其完成审计。由于加密行业的特殊性以及审计制度的不完善,很多第三方审计需要结合默克尔树技术。
审计公司会利用交易所提供的用户余额生成默克尔树。默克尔树生成后,审计员验证总用户余额并发布完整默克尔树和根哈希。用户可以在验证界面输入自己的哈希用户ID和代币余额来触发验证过程。
这种方法的好处就是可以通过知名的审计公司来提高可信度。但由于主要依赖于审计师的职业道德,也无法保证审计师与交易所不联合作恶。所以为了更加安全透明的提供储备金证明,第三方审计逐渐成为辅助证明方式或者被弃用。
从上文也可以了解到,现有的默克尔树结构除了隐私问题外还有负值账户问题无法解决。以太坊创始人Vitalik Buterin在22年12月发布了一篇名为《Having a safe CEX: proof of solvency and beyond》的文章讨论交易所如何拥有更好的证明偿付能力。文中提到可以在传统储备金证明的基础上引入zk-SNARK等新型技术来保证更加公开、透明、真实的储备金证明。这也激起了各大交易所对采用零知识证明技术更新储备金证明技术的探索。
从简单的资产证明到采用加密技术,交易所的储备金证明正在朝着去中心化、隐私化和透明化发展。在下一节中,我们将重点讲解零知识证明技术与储备金证明的结合。