Merkle Tree如何验证交易平台储备金?|Tokenview

This article is not available in the current language yet. Showing the original version.
Merkle Tree如何验证交易平台储备金?|Tokenview

FTX的倒闭再次对中心化机构的受信任程度造成致命一击。11 月 9 日,Binance 创始人 CZ 发文说所有交易平台都应该采用Merkle Tree证明资金储备情况,并且Binance也将开始进行。紧接着部分交易平台也宣布采用Merkle Tree方式来提高平台资金透明度。其实在CZ建议之前,Gate 和 Kraken 这两家交易平台早已采用Merkle Tree证明资金储备,并且用户可以自己去验证准备金是否充足,只是尚没有达到行业共识。对于普通用户来讲,对Merkle Tree的概念可能知之甚少。那么Merkle Tree究竟是什么,以及为什么它可以用来验证中心化机构是否有100%的储备金,Tokenview就给大家科普一下。

Merkle tree(又称默克尔树)是区块链技术的基本组成部分。Merkle tree是一种结构,允许对大量数据中的内容进行高效和安全的验证。这种结构有助于验证数据的一致性。比特币和以太坊都使用Merkle tree。

MerkleTree工作原理

我们以比特币中的Merkle tree为例,解释Merkle trees是如何工作的?

比特币的一个重要的可扩展性特征是区块存储在多级数据结构中。区块中的“hash”实际上只是区块头的哈希,大约 200 字节的数据,包含时间戳、随机数、前一个区块哈希和在区块中存储所有交易的称为 Merkle tree的数据结构的根哈希。Merkle tree是通过重复的哈希节点对创建的,直到只剩下一个哈希(这个哈希称为根哈希或默克尔根)。它们是由下而上构建的,就像一棵倒过来的树。

Merkle tree是一种二叉树,由一组节点组成。树底部有大量叶节点在一个区块中,每一笔交易数据,进行哈希运算后,得到的哈希值就是叶节点;一组中间节点:其中每个节点都是其两个子节点配对后再次进行哈希计算,得到的哈希值;最后是一个根节点:也是由它的两个子节点的哈希值形成的,代表树的“顶部”。(Merkle tree需要偶数个叶节点。如果交易的数量是奇数,最后一个哈希将重复一次,以创建偶数个叶节点。)

如图所示,一个区块中包含的A、B、C和D四个交易。每一个交易都经过哈希计算,生成哈希A、B、C和D,存储在每个叶节点中。之后,通过哈希A和哈希B将叶节点对汇总到父节点中,得到哈希AB。同样,哈希C和哈希D,得到哈希CD。然后再次将这两个哈希(哈希AB和哈希CD)经过哈希计算生成根哈希(Merkle根)。

Merkle trees的目的是允许区块中的数据零碎地传递:一个节点只能从一个源下载区块头,从另一个源下载与他们相关的树的一小部分,并且仍然可以确保所有数据都是正确的。这样做的原因是哈希向上传播:如果恶意用户试图将虚假交易交换到 Merkle 树的底部,这种变化将导致上面的节点发生变化,然后上面节点发生变化会最终改变树的根,从而改变了区块的哈希值,导致协议将其注册为一个完全不同的块(几乎可以肯定是无效的工作量证明)。

Merkle 树协议可以说对于长期可持续性至关重要。截至 2014 年 4 月,比特币网络中的一个“全节点”,即存储和处理整个区块的节点,在比特币网络中占用了大约 15 GB 的磁盘空间,并且每月增长超过 1 GB。Merkle tree可支持“简化支付验证协议”(SPV),该协议允许存在另一类节点,称为“轻节点”,它们下载区块头,验证区块头上的工作量证明,然后仅下载与它们相关的交易相关的“分支”。这允许轻节点在强大的安全保证下确定任何比特币交易的状态,以及它们的当前余额,同时只下载整个区块链的很小一部分。

如图所示,Merkle tree允许不需要下载整个交易数据集就可以验证交易5的完整性。

Merkle tree将数据的验证与数据本身分离开来,可以显著减少受信任权威为验证目的而必须维护的数据量。

Merkle tree有三个主要好处:
1. 它们提供了一种方法来证明数据的完整性和有效性。
2. 它们需要很少的内存或磁盘空间,因为证明的计算简单且快速。
3.它们的证明和管理只需要少量的信息在网络之间传输。

Merkle tree储备金证明

FTX的倒闭再次对中心化机构的信任产生致命一击。这也暴露出用户和中心化机构之间信息不对称的严重问题。用户资产究竟去哪了,是否被挪用,以及如何验证交易平台的资金储备。现有的储备证明是由受信任的第三方出具审计报告,证明中心化机构的储备证明与用户资产的负债证明相一致。就拿此次FTX破产来讲(挪用储户资金导致资不抵债),其实用户都不清楚自己存入交易平台的钱是否被挪用。最直接的办法就是交易平台直接公开储户资产信息,但这又会造成隐私泄露。

更改区块中的任意交易都会完全改变Merkle tree根节点的哈希值,以及Merkle tree将数据的验证与数据本身分离开来,便可以用很小的成本就可以验证数据完整性。这也就是为什么Merkle tree可以用来验证交易平台储备金。

作为一个普通用户,要验证当前交易平台的储备金是否有变动过,就可以参照Merkle tree原理,将每个账户都看做一个节点,账户的金额相当于节点数据。用户可以将自己的账户进行一次哈希计算,找到自己的节点位置以及相邻节点位置。紧接着再向上计算哈希值,最后得到一个根哈希。将自己算出来的根哈希和交易平台公布的链上数据进行对比,如果一致就表明储备金是正确的。也就证明该平台安全运行。此外,BuidlerDAO 创始人 Jason Chen 在推文中表示Merkle tree还可以用于NFT mint 时的验证白名单,可以快速的验证一个地址是否存在于白名单集合中。

Merkle Tree验证CEX储备金的真实性,是确保信息透明的一种方式。但这种方法并非没有缺点,如,这在一定程度上会暴露CEX和用户的资产隐私,为黑客提供了安全漏洞;如果要储存所有账户节点哈希,就对存储空间产生极大的要求。但是,从当前的行业现状来看,采用Merkle Tree证明资金储备情况似乎已经是改善用户信任问题的不二之选。

 

参考文章:

https://ethereum.org/en/whitepaper/#merkle-trees

https://medium.com/hackernoon/merkle-trees-181cb4bc30b4

Share to:

Author: Tokenview

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: Tokenview. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
All three major U.S. stock indexes closed lower, with COIN falling more than 7.48%.
PANews Newsflash