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

我的网站

当前位置: 主页 > 竞争币 > 以太坊

以太坊如何实现低成本多方支付?技术详解 Merkle 树支付池 (2)

时间:2020-11-06 08:31来源:未知 作者:admin 点击:
Merkle 树方法的优点在于,我们只需要向支付池中写入 32 字节的 Merkle 根,并且可以存在 Merkle 树中的收款人数量没有上限。无论 Merkle 树代表多少收款人,

Merkle 树方法的优点在于,我们只需要向支付池中写入 32 字节的 Merkle 根,并且可以存在 Merkle 树中的收款人数量没有上限。无论 Merkle 树代表多少收款人,我们都只需要为树写一个 32 字节的 Merkle 根:对于无数收款人, gas 费则可以分计。

我们中许多人都知道:Merkle 树 [6] 是一种新颖的二叉树结构体,它使我们能够轻松,廉价地确认树中是否确实存在节点。Merkle 树构成了以太坊的基础,并有助于以太坊节点无需区块链的完整历史即可验证区块的能力。

Merkle 树最重要的方面是:

  1. 每个节点是该节点的子级哈希值之和的哈希值
  2. 根节点的哈希受树中每个节点的影响
  3. 我们可以通过将节点的哈希值及其「叔叔」节点加在一起,以确定它们是否与根节点匹配,来确定树中是否存在节点。

以太坊如何实现低成本多方支付?技术详解 Merkle 树支付池Merkle 根

我们将关心的数据放在 Merkle 树的叶节点中。有许多可用的代码库可以执行此操作,给库中提供一个数组,库将对数组进行排序,并使用提供的已排序数组构成 Merkle 树的叶节点来构建 Merkle 树结构体。库会提供 Merkle 树的根,它也可以为任何节点提供证明,其中证明是该节点的哈希与叔叔们 hash 列表,当与节点的哈希值加在一起时,就是默克尔根。

我们可以验证节点是否确实存在于 Merkle 树中的方法是添加带有其证明的节点,然后查看该结果是否等于根节点。OpenZepplin 有一个 Solidity 库 [7] 用来验证。

以太坊如何实现低成本多方支付?技术详解 Merkle 树支付池在此示例中,检查树中是否存在 L2,我们通过在 hash(L2) 上加入哈希 A 和哈希 B,来确认总和的哈希是否「根节点」的哈希值

Merkle 树支付池

我们如何在支付池中利用 Merkle 树?

这种方法利用了需要链上和链下机制的方法。为了生成 Merkle 树,我们可以使用链下程序 (例如 NodeJS 模块) 从收款人及其付款金额列表中构建 Merkle 树。采用这种方法,每个节点都是收款人地址及其付款金额的字符串连接。

考虑以下收款人清单:

以太坊如何实现低成本多方支付?技术详解 Merkle 树支付池收款人清单

我们可以将此列表转换为如下所示的数组:

以太坊如何实现低成本多方支付?技术详解 Merkle 树支付池列表

然后,我们可以从该列表构建 Merkle 树,合约所有者可以将 Merkle 根提交到支付池合约。而且,我们也可以在一些地方 (例如 IPFS) 发布这些叶节点及其证明数据,以便收款人可以访问此数据。 (责任编辑:admin)

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