EOS技术白皮书学习笔记(六) - 跨链交互

in #eos7 years ago

本文由币乎社区(bihu.com)内容支持计划赞助

本节在EOS技术白皮书是第9节【跨链交互】,对照前面的文章配合学习,有助于更好的理解EOS。

9、跨链交互

EOS.IO 软件被设计为跨区块链通信友好的,意思是说EOS可以支持跨链交互(支付、交易、转账、发消息),这个跨链包括子链和侧链(Side-Chain)。

侧链是什么?
侧链是由EOS源代码直接发起的独立公链,类似于一种硬分叉。这个是Block.One核心开发者已经宣布过是存在的,并且是开发计划的重要一部分。侧链有可以有自己的委员会,见证人以及计算资源,有自己的代币,这些代币有自己的增发方式,而且代币可以和EOS通过接口进行锚定去实现包括锁定在内的某种操作关联。还有计算资源提供者也会为侧链提供资源,为什么呢?因为这样他们也可以获取回报。

支持侧链交互有什么牛逼的地方呢?
参考这篇转载自“EOS引力区Ocean”的文章《eos新秘密》

子链是什么?
子链是主链通过逻辑方式形成的,这些子链共享见证人计算资源,通过跨链机制进行交互。

这个跨链交互怎么实现呢?
这是通过简化生成消息存在的证明和消息序列的证明来实现的。 这些证明与围绕消息传递设计的应用程序体系结构结合在一起,使跨链通信交互和验证的细节能够被应用程序开发人员隐藏起来。

存在证明

EOS使用“默克尔(Merkle)证明”来实现区块链交互,下面是默克尔(Merkle)证明的介绍。

用于轻客户端验证的默克尔(Merkle)证明(LCV)

默克尔树(又叫哈希树)的特点是,底层数据的任何变动,都会传递到其父亲节点,一直到树根。
默克尔树的典型应用场景包括:
1.快速比较大量数据:当两个默克尔树根相同时,则意味着所代表的数据必然相同。
2.快速定位修改;
3.零知识证明:例如如何证明某个数据(D0……D3)中包括给定内容 D0,很简单,构造一个默克尔树,公布 N0,N1,N4,Root,D0 拥有者可以很容易检测 D0 存在,但不知道其它内容。

要更容易地与其他区块链集成,对于客户端而言最好是不需要处理全部的交易。毕竟,一个交易所只需要关心交易所的入账和出账,其他的就不需要他关心。 如果交易所链条可以使用资金的轻量 默克尔(Merkle)证明,而不必非要完全依赖对它区块生产者的信任会是一个不错的主意。 至少一个链的区块生产者在与其他区块链同步时更乐意保持尽可能小的开销。

LCV的目标是能产生相对轻量级的交易存在证明,并且该证明能被其他人通过跟踪一个轻量级数据集进行验证。既然如此,目的就是证明一个特定的交易是被一个特定的区块包含其中,并且这个区块是被包含在已经验证的特定区块链历史中。

比特币的轻量级验证方式是,假设所有节点都有读取区块头数据完整记录的能力。而区块头数据每年增长4MB, 假设每秒产生10笔交易,一个有效的证明需要512 bytes,这对于一个出块时间为10分钟的区块链来说是可行的。但对于一个出块时间为3秒的区块链来说则远远不够。

EOS软件的轻量级证明只需要验证包含某个特定的不可逆交易之后的区块头数据,使用哈希链表架构(如下图),数据集可以保持在1024 bytes内,即可证明任何一个交易是否存在。这是基于验证节点保留着前一天的所有区块头数据(2 MB大小),然后证明这些交易只需要200 bytes大小的证明数据。
哈希链表架构
当生成区块时候使用合适的哈希链表时,使用这种方法只会带来很小的增量开销,这意味着没有理由不以这种方式去生成区块。

当与其他链验证证明的时候,时间、空间和带宽都有很大的优化空间。跟踪所有区块头数据(420 MB/年)可以使证明体积尽可能小。只跟踪最近的区块头可以使得在持久区块头数据保存体积以及证明体积之间获得平衡。同样的一个区块链可以“懒惰地”只记录过去数据的哈希值作为之前数据的证据,新证明只需要保留已知的sparse tree(稀疏树)结构,具体的方法会视乎于外部区块所占的默克尔(Merkle)证明所包含的交易比例。

在链与链之间经过一定密度的相互关联之后。他们将会变得越来越高效。一条链可能会包含另外一条链的全部历史记录,那么就不再需要互相证明。从性能的角度来说,这将极大地减少链间互相证明操作的频率。

跨链通信延迟
当与另一个区块链外部通信时,区块生产者(矿工)不会随便接受另一方的输入,必须等待其他区块链不可逆地确认之后,才会接受其为有效的输入。如果某个链上的矿工不等到交易确认就接受输入这种情况,就像一个交易所接受了一笔存款而后又撤销这笔操作,这会影响这条链共识的有效性。使用EOS系统的软件,凭借出块时间为秒的委任权益证明(DPOS)以及21个矿工,这大概只需要45秒的确认时间。

完整性证明
当使用来自外部区块链的默克尔(Merkle)证明时,知道所有已处理的交易是有效的和知道有没有交易被忽略,这两者之间有巨大的不同。虽然不可能证明所有最近交易是已知的,但有可能证明历史交易数据之间没有缺失。EOS软件通过分配一个顺序的标识编号给每一笔到达账户的信息来完成这个功能,用户可以使用这些标号来证明所有给这个账号的消息已经被处理并且是被按顺序处理的。

10、结论

EOS.IO软件是基于经过普遍证实、并通过长期实践考验的概念来设计的,代表着区块链技术的根本性进步。它是可扩展的全球性区块链社会的宏伟蓝图的一部分 ,分布式应用程序可以轻松地以此为环境开发和管理。

配合学习笔记系列文章一起读会更好理解哦

上一篇:EOS技术白皮书学习笔记(五) - 治理、脚本和虚拟机

本文首发于微信公众号:lin-mingtan 欢迎关注交流 ^.^