织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

以太坊颠覆了以太坊:引入密码学实现 2.0 性能突破(2)

时间:2020-06-16 08:47来源:未知 作者:admin 点击:
但新问题跃然纸上:如果出块节点手中没有账本,它怎么知道交易发送方的钱够不够?密码学就在这时候登场了。 向量承诺:从查询到证明 不需要账本就

但新问题跃然纸上:如果出块节点手中没有账本,它怎么知道交易发送方的钱够不够?密码学就在这时候登场了。

向量承诺:从查询到证明

不需要账本就能记账听上去不可思议,但其思路是简单的:在以前,节点有账本,一笔交易来后它翻看账本,查询交易是否合法;在以后,节点没有账本,交易发送方在提交交易的同时需要提交一个密码学证明(为了区分,后文特指密码学证明时都用 proof 表示),自己证明自己的这笔交易是合法的。

可出块节点为什么能够通过一个 proof 来判断某笔交易是否合法?这里涉及到两个密码学的重要概念,第一个叫「成员证明」。它指的是通过某种方法,证明个体是群体的一部分。如果能够证明某个账户状态是整个账本状态的一部分,出块节点当然就能相信这个账户状态,并以此为根据进行交易合法性的判断。

第二个叫「向量承诺」,它可以将群体,不管这个群体有多庞大,压缩成仅仅一个数,然后给出成员证明,该成员证明表明的是某个个体是属于这个数背后所关联的群体的,且能证明个体在群体中的位置,以及进行证明的更新。

Merkle 树是可被用于向量承诺的方法之一,我们以它为例来看如何实现成员证明。

下图是一棵 Merkle 树,最下一层的叶子节点存储的是应用数据,其他非叶节点存储的是其子节点的哈希值。如果知道绿色节点和所有黄色节点的值,就可以从下至上进行三次哈希运算,得到该 Merkle 树根的值,也就是 6c0a。

那么,如果验证方手中有树根的值(6c0a),证明提供方把绿色节点的值和所有黄色节点的值作为一个 proof 给验证方,验证方是不是就能通过计算三次哈希的值是否等于 6c0a 来判断绿色节点的值是否在这棵 Merkle 树中?答案是可以。这就是对绿色节点属于 Merkle 树的成员证明,它是以向量承诺的方式完成的,而这也几乎就是比特币 SPV 节点(简单支付验证)的工作方式。

如下图所示,SPV 节点不存储完整的区块 / 账本,但存储了每个区块中 Merkle 树的树根(此 Merkle 树的叶子节点存储的是该区块所有交易),当它需要查询一笔交易是否存在时,会找全节点要一个该交易的 proof,该 proof 类似于上文中绿色节点和黄色节点值的一个打包(Merkle 路径),然后 SPV 节点会计算这些值的总的哈希值是否等于自己手中 Merkle 树根的值,如果相等,则说明这笔交易是该 Merkle 树的一个成员,即这笔交易是存在的。

SPV 节点只存储区块头(绿框),区块头中包含 Merkle 树根(红框) (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容