Subscribe to johnnychen
<100 subscribers
Share Dialog
Cosmos简介
Cosmos 网络由不同的独立、平行区块链组成,其中的每条区块链都通过例如 Tendermint 这样的经典拜占庭容错共识运行。Cosmos 上的区块链称为“分区(zone)”。其中的一些分区又称为"枢纽 (Hub)",
而不同的分区可以通过共享的枢纽来互相通信与互操作。Cosmos 网络上的第一个分区就是 Cosmos 枢纽(the Cosmos Hub)。因为所有跨分区的代币转移都需要通过Cosmos 枢纽进行,所以代币可以安全、迅速地在分区之间转移。分区之间无需具有直接的汇兑流动性,而只需通过 Cosmos 枢纽来追踪记录每个分区持有的代币总量,并确保所有分区的代币总量不变。在此,Cosmos 枢纽起到了一种类似中央银行结算功能的作用。
cosmos这个项目是为了实现跨链而生的,在众多的跨链项目中,cosmos有它自己独特的特点,它把共识和P2P协议抽象出来,形成了一个单独的Tendermint的层或者叫模块。它采用Tendermint-BFT DPoS的共识引擎来解决跨链的共识问题。 众多的区块链项目,可以通过跨区块链沟通协议(IBC)来实现不同空间(cosmos用空间这个概念来表述不同的区块链)的信息传递。
什么是Tendermint? Tendermint可以理解为一个模块化的区块链软件框架,支持开发者个性化定制自己的区块链,而又不需要考虑共识以及网络传输的实现。 Tendermint主要概念 Tendermint是一个能够在不同机器上,安全一致复制应用的软件,其中安全性和一致性也是分布式账本的关键概念。 Tendermint具备拜占庭容错能力,是一种拜占庭容错共识算法。 Tendermint主要组成部分 Tendermint Core:区块链共识引擎,负责节点之间数据传输以及拜占庭共识。 ABCI:区块链应用程序接口(the Application BlockChain Interface )也是一个协议,支持任何语言的交易处理实现。 拜占庭容错 能够容忍机器以任何一种,甚至包括危害系统的方式发生故障,被称为拜占庭容错(BFT)
Cosmos团队的核心产品是Cosmos-SDK,其仍然是采用了ABCI应用的架构(基于Go语言来实现)。如果使用这个SDK来开发一条自己的链,就不必过于纠结于链的底层的帐户体系,共识等技术细节,只需要关心自己的区块链的应用部分,而且在这个SDK中,还开放了一些开发的API,可以通过这些API来实现一些具体的基础实现,打造个性的区块链。
Cosmos整体架构
网络共识(Tendermint) 就如上图直观的表示一样,cosmos通过Tendermint实现了一个通用层,利用这个通用层,可以实现不同的应用的接插隔离。
Cosmos中心(hub) 这里的中心指是cosmos Hub,Cosmos网络中第一个公共区块链,通过Tendermint拜占庭共识算法运行。Cosmos中心通过ABCI来连接其他区块链(空间)。中心可以控制各个空间里代币。保证代币可以安全快速地从一个空间传递到另一个空间,即进行资产的跨链交易。
Cosmos中心负责管理各个独立区块链(即“空间”,或者“碎片”)。中心上的空间会源源不断地提交最新区块,这一点可以让中心跟上每个空间状态的变化。 Cosmos中心的验证人与委托人可以对提案进行投票,从而自动改变预先设置好的系统参数(比如区块容量限制),协调更新,并对人们看得懂的章程进行修订投票,从而管理Cosmos中心。这个章程允许权益相关者聚集到一起,来解决盗窃及漏洞等相关问题(比如The DAO事件),并快速得出明确的解决方案。
空间(Zones) 空间,也就是各个独立的区块链,连接到cosmos中心后,它们就成为了cosmos的一个空间。每个空间也会和中心的状态保持一致。信息可以从一个空间发送到另外一个空间,通过默克尔证明(Merkle-proof)来表明信息已经被传送或接收。这种机制叫做“区块链间通信”,简称为“IBC”机制。
跨链通信协议(IBC)
IBC是中心与空间之前通信的方法。假设现在有三个区块链,分别是“空间1”、“空间2”以及“中心”,如果想要“空间1”生成一个消息包,通过“中心”发送给“空间2”。为了让消息包从一个区块链转移到另一个区块链,需要在接收方区块链上发布一个证明,来明确发送方已经发起了一个消息包到指定地点。接收方要验证的这个证明,必须和发送方区块头保持一致。这种机制就类似与侧链采用的机制,它需要两个相互作用的链,通过双向传送存在证明数据元(交易),来“知晓”另一方的情况。
IBC协议可以自然定义为两种交易的使用:一种是IBCBlockCommitTx 交易,这种交易可以让区块链向任何观察员证明其最新区块哈希值;另一种是IBCPacketTx 交易,这种交易则可以证明某个消息包确实由发送者的应用程序,通过默克尔证明机制(Merkle-proof)传送到了最新区块的哈希值上。
通过将IBC机制分裂成两个单独的交易,即IBCBlockCommitTx交易与IBCPacketTx交易,可以让接收链的本地费用市场机制,来决定承认哪个消息包,与此同时还能确保发送方的完全自由,让其自行决定能够传出的消息包数量。