Merkle Tree如何验证交易平台储备金?|Tokenview
Tokenview
点击蓝字 关注我们
Part.1
MerkleTree工作原理
我们以比特币中的Merkle tree为例,解释Merkle tree是如何工作的?
比特币的一个重要的可扩展性特征是区块存储在多级数据结构中。区块中的“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根)。
Part.2
Merkle Tree
Merkle Tree的目的是允许区块中的数据零碎地传递:一个节点只能从一个源下载区块头,从另一个源下载与他们相关的树的一小部分,并且仍然可以确保所有数据都是正确的。这样做的原因是哈希向上传播:如果恶意用户试图将虚假交易交换到 Merkle 树的底部,这种变化将导致上面的节点发生变化,然后上面节点发生变化会最终改变树的根,从而改变了区块的哈希值,导致协议将其注册为一个完全不同的块(几乎可以肯定是无效的工作量证明)。
Merkle Tree协议可以说对于长期可持续性至关重要。截至 2014 年 4 月,比特币网络中的一个“全节点”,即存储和处理整个区块的节点,在比特币网络中占用了大约 15 GB 的磁盘空间,并且每月增长超过 1 GB。Merkle tree可支持“简化支付验证协议”(SPV),该协议允许存在另一类节点,称为“轻节点”,它们下载区块头,验证区块头上的工作量证明,然后仅下载与它们相关的交易相关的“分支”。这允许轻节点在强大的安全保证下确定任何比特币交易的状态,以及它们的当前余额,同时只下载整个区块链的很小一部分。
图源网络
Merkle Tree将数据的验证与数据本身分离开来,可以显著减少受信任权威为验证目的而必须维护的数据量。
Merkle tree有三个主要好处:
它们提供了一种方法来证明数据的完整性和有效性。
它们需要很少的内存或磁盘空间,因为证明的计算简单且快速。
它们的证明和管理只需要少量的信息在网络之间传输。
Part.3
储备金证明
FTX的倒闭再次对中心化机构的信任产生致命一击。这也暴露出用户和中心化机构之间信息不对称的严重问题。用户资产究竟去哪了,是否被挪用,以及如何验证交易平台的资金储备。现有的储备证明是由受信任的第三方出具审计报告,证明中心化机构的储备证明与用户资产的负债证明相一致。就拿此次FTX破产来讲(挪用储户资金导致资不抵债),其实用户都不清楚自己存入交易平台的钱是否被挪用。最直接的办法就是交易平台直接公开储户资产信息,但这又会造成隐私泄露。
更改区块中的任意交易都会完全改变Merkle tree根节点的哈希值,以及Merkle tree将数据的验证与数据本身分离开来,便可以用很小的成本就可以验证数据完整性。这也就是为什么Merkle tree可以用来验证交易平台储备金。
作为一个普通用户,要验证当前交易平台的储备金是否有变动过,就可以参照Merkle tree原理:将每个账户都看做一个节点,账户的金额相当于节点数据。用户可以将自己的账户进行一次哈希计算,找到自己的节点位置以及相邻节点位置。紧接着再向上计算哈希值,最后得到一个根哈希。将自己算出来的根哈希和交易平台公布的链上数据进行对比,如果一致就表明储备金是正确的。也就证明该平台安全运行。
此外,BuidlerDAO 创始人 Jason Chen 在推文中表示Merkle tree还可以用于NFT mint 时的验证白名单,可以快速的验证一个地址是否存在于白名单集合中。
用Merkle Tree验证交易平台储备金的真实性,是确保信息透明的一种方式。但这种方法并非没有缺点,如,这在一定程度上会暴露CEX和用户的资产隐私,为黑客提供了安全漏洞;如果要储存所有账户节点哈希,就对存储空间产生极大的要求。但是,从当前的行业现状来看,采用Merkle Tree证明资金储备情况似乎已经是改善用户信任问题的不二之选。
更多区块链知识与干货,关注Tokenview.io 。
参考文章:
认识Tokenview!
联系Tokenview!
【加入我们】
Website:https://tokenview.io/cn/
Twitter:https://twitter.com/tokenview2018
Telegram中文:https://t.me/tokenview
Telegram英文:https://t.me/tokenview_en
Discord:https://discord.gg/9WCeZqdVqu
微信公众号:TokenviewLabs