密码极客 | 国内最权威的区块链技术创投社群

挖掘波卡背后的跨链技术实现

VOBCVOBC 2019-05-07 4,499 次 收藏0

波卡介绍

Polkadot是中继跨链技术的典型代表,旨在实现区块链互连。波卡将如何解决?本文将对此进行详细介绍。

1.架构

Polkadot的基本架构如下图所示:

image.png

2.Polkadot的跨链交易

在polkadot中,如果平行链A需要向平行链B发送交易,则流程如下:

·中继链根据不同平行链对验证人进行分组;

·平行链A的用户对交易进行签名和广播;

·平行链A的收集人收集交易,验证交易的有效性,整理交易相关数据,将它们打包为候选区块,并将其放入它们的出口(每条平行链都有一个名为egress的消息出口队列和一个名为ingress的消息入口队列);

·对应的验证人小组选择候选区块,并验证该区块是否仅包含有效交易。验证成功将获得押金。

·只有在提名人支付了足够押金后,才能向中继链提交区块头和平行链A的出口信息;

·所有验证人都可以跨链发送消息;

·所有验证人对中继链区块达成共识,验证人将平行链A上的交易从平行链A的出口移动到平行链B的入口以完成消息传输。

·平行链B在入口队列中执行该交易并修改自己的账本。

3.如何解决问题

如何避免双重花费

Polkadot将在一轮中生成两次区块。一个是平行链生成候选区块,另一个是所有平行链当前区块对整个中继链区块达成共识。由于所有平行链的共识同步发生,因此不会产生跨链交易双重花费等安全问题。

如何验证交易

中继链的验证人通过SPV对该交易进行验证,以及平行链提交区块头和相关交易数据以确保区块有效性和一致性。以下是对SPV及默克尔树的详细介绍。

默克尔树:

image.png

默克尔树具有以下特点:

默克尔树大多是二叉或多叉树。它具有树形结构的所有特征。

默克尔树的叶节点是区块哈希值。

默克尔树的非叶节点是由它下面所有叶节点的哈希值计算得出的哈希值。

注意:如果叶节点数量为奇数,则可以复制最后一个叶节点,使数量成为偶数。

可见,只要存储的叶节点数据有任何变化,就会逐步传递到相应的父节点,最终使默克尔树的根节点哈希值发生变化。

SPV:

简单支付验证,或称为SPV。 SPV的目标是验证交易支付是否存在以及在不运行全节点情况下从比特币网络得到了多少确认(区块)。SPV节点不保存整个区块链数据,只保存区块头数据。SPV节点也无法完全验证交易,仅验证支付(确认支付发生在区块链中,以及确认次数)。

SPV验证步骤:

·步骤1:如果SPV节点只想知道比特币地址支付的交易,它可以通过建立一个Bloom过滤器来设置限制,仅接收目标比特币地址的交易。

·步骤2:一旦其他节点检测到交易满足SPV节点设置的Bloom过滤条件,其他节点将以默克尔区块(Merkleblock)消息的形式发送该区块(默克尔区块消息包含区块头和将目标交易连接到默克尔根的默克尔路径)。默克尔区块数据大小仅为整个区块的千分之一。

·步骤3:SPV节点验证交易,检查交易是否存在以及是否产生双重花费。

·存在性检查:SPV节点通过默克尔路径查找包含交易的区块,并验证区块中是否存在目标交易(也称为默克尔路径证明);

·双重花费检查:SPV节点检查此区块后面的区块数,以确认是否有足够的概率没有产生双重花费。

默克尔路径:

假如我们要证明一个区块上是否存在一个名为tx3的交易,我们只需要一个由N4和N5哈希值组成的默克尔路径来证明。流程如下:

image.png

步骤1:获取tx3的哈希值,N3 = hash(tx3)

步骤2:通过N3和N4的哈希值得到父节点的哈希值:N6 = hash(N3 + N4)

步骤3:与上面相同,根节点的哈希值由N5和N6的哈希值得到:Root = hash(N5 + N6)

步骤4:将步骤3中得到的根哈希值与区块头中默克尔树的根哈希值进行比较。如果它们相同,则证明区块中有tx3交易,不相同就不存在这笔交易。

如何确保多链互连

同构链(Homogeneous Chains):如果以Substrate为基础构建新区块链,它可以直接连接到Polkadot并成为平行链。Substrate框架已经包括了对共识、网络、WebAssembly、数据库、客户端等的支持,降低了平行链开发难度。

异构链(Heterogeneous Chains):需要开发桥接器来连接Polkadot。当异构链需要与Polkadot交互时,异构链的数据将通过专门开发的桥接器转换为所需的Polkadot模式。

如何跨链转移资产,且资产总额保持不变

异构链模式下的原始链具有由多个验证人掌控的“桥接账户”。本文以以太坊和比特币系统为例,介绍异构链模式下的跨链资产转移方法。

以太坊:以太坊的“外向合约”处理从以太坊到波卡的交易,以太坊调用一个特殊外向合约(不同平行链有不同的外向合约),外向合约收取手续费,然后生成日志指令。该指令可以通过SPV、默克尔树和区块头来快速证明交易存在。“内向合约”控制并维护144名验证人的签名。Polkadot发送的交易或消息需要在创建交易之前收集所需数量的验证人签名。以太坊使用“内向合约”和“外向合约”将以太坊主链连接到Polkadot。这两份合约在以太坊和波卡之间构建了一座桥梁,使他们能够相互了解并提供等价交换(他们的代币可用于支付和结算)。以太坊想通过Polkadot将资产转移到其他平行链,桥接器就相当于中间代理,交涉如何支付目标平行链的计算成本。

比特币:有些验证人在比特币链上运行多重签名钱包并掌控“外向地址”,该地址管理比特币并附加资产转移信息,以实现比特币区块链之间的资产转移交易。

由此可见,Polkadot野心勃勃,它还期望未来能够将各种不同的区块链相互连接起来。

本文系作者个人观点,转载请注明出处!
喜欢 0
支付宝扫码打赏
微信打赏

相关文章

更多

发布评论

共0条评论