科普:什么是稀疏默克尔树多值证明_STORE:TOR

译者注:以太坊网络是一台富状态(stateful)的世界计算机,其状态包括状态余额、交易流水号(nonce)、合约代码及合约存储内容等。在技术上,这些状态数据是靠一种叫做 “默克尔树” 的结构来组织的,因此,以太坊世界状态及其访问、更新,便可表达为一棵默克尔树及其访问、更新。同样地,所有跟默克尔树相关的数据证明及验证操作,都可以在以太坊协议的语境下被理解为状态的证明及验证操作。实际上,默克尔树是我们理解、利用、改进以太坊协议不可或缺的一环。本文介绍了一种可以证明多个值存在于同一棵默克尔树上的方法,因此也可以说,这就是在介绍如何证明多个以太坊状态隶属于同一时刻的世界状态的方法。

稀疏默克尔树多值证明(Sparse Merkle multiproofs)是对默克尔树截顶(Merkle pollard)的一种替代方案,可在为证明一棵默克尔树上存在多个值时提供空间上较为节约的证明。什么是默克尔证明、默克尔树截顶,我已在前一篇··文章中解释过了;推荐您先阅读并理解这些概念再来阅读本文。接下来,文本将用下图的默克尔树来解释多值证明:

稳定币crvUSD科普创新清算机制LLAMMA,可在抵押品价格下跌时逐步替换为稳定币:1月17日消息,Curve官方科普其稳定币crvUSD创新的清算机制LLAMMA,解释了LLAMMA通过AMM的特性进行针对债务人更友善的清算方式,让抵押品在价格下跌时逐渐转移成稳定币,让原本要清偿的债务有一定程度的稳定币可以偿还,同时在价格回稳时再逐渐把稳定币换回抵押品,而不是直接的触发清算导致债务人的亏损。

此前报道,2022年11月23日,去中心化交易平台CurveFinance开发者发布Curve即将推出的去中心化Stablecoin“crvUSD”的官方代码和白皮书。[2023/1/17 11:17:13]

-图 1:一棵默克尔树-

稀疏多值证明最早由 Vitalik Buterin 提出。

TRON数字钱包科普资料《波场钱包的现在过去与未来》已上线:据最新消息显示,由TokenPocket联合波场TRON官方,以及 TokenPocket 社区志愿者共同撰写的《波场钱包的现在过去与未来》已正式上线。《波场钱包的现在过去与未来》又称为波场钱包小白书,详细介绍了当前TRON钱包与TRON生态密切结合的实例,是目前市面上最为详细的TRON数字钱包科普资料。波场钱包作为波场公链生态中极为重要的入口,是波场生态的重要构成要素。波场钱包从一开始只提供权限管理、转账收款、节点投票等基础功能,到如今不仅可以为用户提供法币交易、闪兑和去中心化交易所等方便快捷的交易服务,还能让用户直接在钱包上体验波场上DApp,挖矿、DeFi、Staking等资产增值服务。详情见原文链接。[2020/8/20]

多值证明

多值证明(multiproof)就是把一棵默克尔树中的一组证明打包在一起,从而节省存储空间。例如,下面是上图所示默克尔树的 3 条默克尔证明:

动态 | 区块链技术入选科普杂志《科学美国人》2019十大突破性技术榜单:据新浪网今日新闻报道,美国科普杂志《科学美国人》公布 2019 十大突破性技术榜单。区块链技术因在保障食品安全中的作用而上榜。 入选榜单具体原因:区块链技术的发展应用将显著改善食品污染源数据追踪的困境。利用区块链云端系统,食品制造商可以依次在计算机储存各类过程的信息。[2019/9/29]

-图 2、3、4:分别对应 Banana、Peach 和Kumquat 的默克尔证明-

动态 | 央行官微旧文重发“再科普”:范一飞详解数字货币:据中国经济网消息,今日,央行官微公众号头条重新发布央行副行长范一飞在2018年1月25日题为《关于央行数字货币的几点考虑》的文章,对央行数字货币再次进行科普。同时,微信公众号第二条发布支付司副司长穆长春8月10日在第三届中国金融四十人伊春论坛上的演讲。近年来,各主要国家和地区央行及货币当局均在对发行央行数字货币开展研究,新加坡央行和瑞典央行等已经开始进行相关试验,人民银行也在组织进行积极探索和研究。[2019/8/21]

从上图可以看出,3 个证明总共包含 9 个中间分支的哈希值(即由绿色标出的部分):每条证明有 3 个哈希值。将这 3 个证明组合成如下图所示的结构,即成多值证明:

-图 5:对应 Banana、Peach 和Kumquat 的默克尔多值证明-

财政部副部长朱光耀:数字经济还处在发展的过程中,要以科普、推动的态度来推进数字经济发展:今日,在中国发展高层论坛2018年会上,财政部副部长朱光耀表示:“数字经济还处在发展的过程中,要以科普、推动的态度来推进数字经济发展。也要关注数字经济的其他影响,包括税收征管、反监管措施等要跟上。”[2018/3/25]

相比于单条证明时总共需要的 9 个中间分支哈希值,默克尔多值证明只需要 7 个哈希值,这就节省了存储空间。

稀疏的多值证明

虽然默克尔树的多值证明确实节省了一些存储空间,但其中一些数据可以用其他方式得到,所以移除这些数据可以进一步节省存储空间。(译者注:可通过其他方式得到的数据,就不需要存储在证明中,只要在需要时能够得到即可)

以上图的默克尔树多值证明为例,许多中间分支的哈希值都可以被计算出来。比如验证者将已知的值 Banana 和 Peach 通过哈希函数计算后,可以得到哈希值 bc4F…8d3f 和 59a0…421d。对于与根节点相连的两个节点的哈希值 c0b7…da30 和 6ff9…8e3d,可以通过其孩子节点(与两个节点直接相连的,并处于上方的节点)的哈希值计算出来。因为孩子节点的哈希值要么是证明中包含的,要么可以通过再上一层的哈希值计算出来。下图中黄色的节点标记了这 4 个可由计算得到的哈希值:

-图 6:默克尔树多值证明中可以被移除的哈希值(见黄色标记)-

移除这些哈希值后,可以得到 默克尔树中稀疏的多值证明,如下图所示:

-图 7:稀疏的默克尔树多值证明-

稀疏的默克尔树多值证明将需要包含的哈希值数量从 9 个减少到了 3 个。证明效果相同时,稀疏的多值证明也比默克尔截顶更有效,因为后者需要 6 个哈希值。

验证者得到稀疏的多值证明后,为了验证那些值是默克尔树的一部分,需要执行以下的步骤(在默克尔树中,依照从左到右,从上到下的顺序):

(译者注:“将某个值哈希”指:将值作为哈希函数的输入,得到随机的一串输出)

将 Banana 哈希得到 bc4f…8d3f

将Peach 哈希得到 59a0…421d

将 Kumquat 哈希得到 2aab…6f791

将bc4f…8d3f 和 59a0…421d哈希得到 9c15…5dec

将 2aab…6f79 和 45cf…14d9哈希得到 a6e4…87df

将d596…66ef 和 9c15…5dec 哈希得到 c0b7…da30

将e336…ed14 和 a6e4…87df 哈希得到 6ff9…8e3d

将c0b7…da30 和 6ff9…8e3d 哈希得到 d576…ffd9

至此可以把最终得到的哈希值与默克尔树的根哈希值做比较,如果二者一致,则认定所有的值都在该默克尔树中。

下图对比了默克尔树中值和证明的数量变化时,默克尔树截顶和默克尔树中稀疏的多值证明在存储默克尔证明时可以节约的空间存储量:

值得注意的是,多值证明的节省量是近似值,因为能节省多少取决于被证明的值在默克尔树中的位置以及可以被移除的中间分支哈希值个数。

对比稀疏多值证明与默克尔截顶

从上表中可以看出,稀疏的多值证明比默克尔树截顶节省更多的存储空间,那么为什么还要使用默克尔树截顶呢?因为稀疏的多值证明相对于默克尔树截顶,拥有一些不同的特性,主要有以下几点:

在多值证明方法中,所有值的证明都是一起生成、一起得到验证的;而在截顶方法中,各个值的证明是分别生成、分别验证的(译者注:生成及验证时,对截顶来说,具体是哪个值,只需要这个值和相关的证明即可,对于多值证明,则需要把要验证的多个值,以及多个值对应的证明都拿出来)

稀疏的多值证明在生成及验证证明时,需要更多的内存和 CPU 周期

稀疏的多值证明很难并行地生成和验证

稀疏的多值证明的大小是可变的,而默克尔树截顶在给定默克尔树和总证明数时,其证明大小是固定的

一些情况下,因为用于传输信息的编码系统不同,可能会导致稀疏的多值证明比默克尔树截顶需要更多的空间;因此建议使用之前做一下测试

总的来说,还要看单个应用的需求来决定哪个更合适。但是这两种方法都比单独的默克尔证明节省更多的存储空间,因此当需要对同一棵默克尔树提供多个证明时,可以考虑使用这两种方法。

实现样例

https://github.com/wealdtech/go-merkletree/ 提供了稀疏的默克尔树多值证明的 Go 语言实现 。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

Gate.io什么是私钥、密钥、地址?_YST:ORE

国内最好的以太系钱包当属 imToken,在使用钱包时,有几个名词必须深刻理解,不然就有可能造成区块链资产的损失,这几个名词为地址、密码、私钥、助记词、keystore.

[0:0ms0-7:570ms