赞
踩
市面上大部分链上应用(加密货币或者智能合约)都无法跨越当前链的边界,不能与其他链协同合作实现价值的流通从而限制了区块链的发挥空间。跨链技术是打开链与链之间互通的钥匙,能很好地解决价值孤岛的问题,建立价值网络的桥梁。
公证人机制(Notary schemes)
侧链/中继(Side chains/relays)
哈希锁定(Hash-locking)
分布式私钥控制(Distributed private key control)
而Cosmos是中继技术中的一个典型案例。
Cosmos是Tendermint团队推出的一个支持跨链交互的异构网络,它最终的目标是创建一个区块链互联网,允许大量自主且易开发的区块链互相扩展和交互。基于Tendermint开发,采用的Tendermint共识算法,是一个类似实用拜占庭容错共识引擎,具有高性能、一致性、具备拜占庭容错等特点。
这种架构的问题:
为了规避这些问题,Tenermint自己设计了一套框架,将区块链应用(状态)与底层共识进行了分离,将共识引擎和P2P网络层封装组成Tendermint Core。同时提供ABCI接口与应用层进行交互,应用逻辑可以用任何语言编写,应用做的事情实际上就是状态机控制。基于这种架构,应用的开发者可以方便地实现自己的区块链。
如上图,Tendermint的框架总体来讲分为ABCI Application以及Tendermint Core两部分,两者通过ABCI连接。
开发者定制开发的区块链应用,开发语言不受限制,可以使用任何语言进行开发,但是必须实现为一个ABCI Server,即需要满足以下几点:
ABCI接口可以分为三类:信息查询、交易校验以及共识相关处理。而Tendermint Core作为ABCI Client在启动时,会与ABCI Server建立三个连接,分别用于这三类接口消息的处理。
Tendermint共识引擎,包含区块链需要大部分功能实现,主要有:
Tendermint是一个易于理解的BFT共识协议。协议遵循一个简单的状态机,如下:
协议中有两个角色:
验证人轮流对交易的区块提议并对提议的区块投票。区块被提交到链上,且每个区块就是一个区块高度。但区块也有可能提交失败,这种情况下协议将选择下一个验证人在相同高度上提议一个新块,重新开始投票。
从图中可以看到,成功提交一个区块,必须经过两阶段的投票,称为pre-vote和pre-commit。当超过 2/3 的验证人在同一轮提议中对同一个块进行了pre-commit投票,那么这个区块才会被提交。
由于离线或者网络延迟等原因,可能造成提议人提议区块失败。这种情况在Tendermint中也是允许的,因为验证人会在进入下一轮提议之前等待一定时间,用于接收提议人提议的区块。
假设少于三分之一的验证人是拜占庭节点,Tendermint能够保证验证人永远不会在同一高度重复提交区块而造成冲突。为了做到这一点,Tendermint 引入了锁定机制,一旦验证人预投票了一个区块,那么该验证人就会被锁定在这个区块。然后:
可以看到,Tendermint共识算法和PBFT时非常相似的,可以说是PBFT的变种,那我们来比较一下:
相同点:
不同点:
Tendermint的P2P网络协议借鉴了比特币的对等发现协议,更准确地说,Tendermint是采用了BTCD的P2P地址簿(Address Book)机制。当连接建立后,新节点将自身的Address信息(包含IP、Port、ID等)发送给相邻节点,相邻节点接收到信息后加入到自己的地址薄,再将此条Address信息,转播给它的相邻节点。
此外为了保证节点之间数据传输的安全性,Tendermint采用了基于Station-to-Station协议的认证加密方案,此协议是一种密钥协商方案,基于经典的DH算法,并提供相互密钥和实体认证。
Cosmos网络由许多独立的并行区块链组成,网络中第一个区块链是Cosmos Hub,其他的并行链称为Zone,通过跨链协议(IBC)与Hub进行跨链操作。
Cosmos主要的代码是cosmos-sdk,它包含Cosmos Hub的程序代码,同时也是一个区块链开发框架,为其他区块链开发者提供一些通用的功能模块,比如:共识,P2P网络,IBC,账户,治理,认证等。大致框架如下:
cosmos-sdk其实就是一个ABCI应用。主要有:
staking:POS相关的实现,包括:绑定,解绑,通货膨胀,费用等操作。
ibc:跨链协议IBC的实现,也是Cosmos支持跨链的主要插件。
governance:治理相关的实现,如提议、投票等。
auth:定义了一个标准的多资产账户结构(BaseAccount),开发者可以直接嵌入自己的账户体系中。
bank:定义资产的转移。
基于cosmos-sdk框架,利用其插件功能,可以非常快速的开发出属于自己应用的区块链,同时也可以很方便的加入Cosmos生态网络,支持不同链之间的互操作
Cosmos的区块链间通信协议(IBC)将不同区块链连接起来,达到价值转移的目的。
IBC协议是针对Cosmos网络设计的,依赖其及时最终性的特点,用于Hub与Zone之间消息传递。IBC协议中设计了两个消息:
IBCBlockCommitTx:发送方所在区块链的最新的区块信息。
IBCPacketTx:跨链交易本身的信息,及其在发送方链中被打包的区块信息。
在IBC协议设计里,两个链建立连接之前需要进行彼此注册,有两个作用:
以chain1中用户User A转100mycoin 给test-hub用户User B为例,工作流程:
参考链接:
https://blog.miuyun.work/archives/12822920
https://zhuanlan.zhihu.com/p/42693285
https://zhuanlan.zhihu.com/p/38252058
如有不对,烦请指出,感谢~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。