文章阅读页通栏

cosmos简介、整体结构及项目分布

来源: 360区块链实验室 作者:
一、cosmos简介 Cosmos 是一个由区块链组成的网络 (Internet of Blockchains),它的创建是为了解决一些区块链社区长久以来存在的问题。 Cosmos 网络由不同的独......
一、cosmos简介

Cosmos 是一个由区块链组成的网络 (Internet of Blockchains),它的创建是为了解决一些区块链社区长久以来存在的问题。

Cosmos 网络由不同的独立、平行区块链组成,其中的每条区块链都通过例如 Tendermint 这样的经典拜占庭容错共识运行。Cosmos 上的区块链称为“分区(zone)”。其中的一些分区又称为"枢纽 (Hub)",

而不同的分区可以通过共享的枢纽来互相通信与互操作。Cosmos 网络上的第一个分区就是 Cosmos 枢纽(the Cosmos Hub)。因为所有跨分区的代币转移都需要通过Cosmos 枢纽进行,所以代币可以安全、迅速地在分区之间转移。分区之间无需具有直接的汇兑流动性,而只需通过 Cosmos 枢纽来追踪记录每个分区持有的代币总量,并确保所有分区的代币总量不变。在此,Cosmos 枢纽起到了一种类似中央银行结算功能的作用。

cosmos这个项目是为了实现跨链而生的,在众多的跨链项目中,cosmos有它自己独特的特点,它把共识和P2P协议抽象出来,形成了一个单独的Tendermint的层或者叫模块。它采用Tendermint-BFT DPoS的共识引擎来解决跨链的共识问题。 众多的区块链项目,可以通过跨区块链沟通协议(IBC)来实现不同空间(cosmos用空间这个概念来表述不同的区块链)的信息传递。 

N多的应用可以通过ABCI这个回调接口协议来实现与Tendermint的交互。在他们的官网上实现了一个Ethermint,其实就是以太坊去除了PoW的共识再加上Tendermint实现的一个基于PoS的高效的新以太坊链。 

值得一提的是Cosmos-SDK,它是Cosmos团队的核心产品,其仍然是采用了ABCI应用的架构(基于Go语言来实现)。如果使用这个SDK来开发一条自己的链,就不必过于纠结于链的底层的帐户体系,共识等技术细节,只需要关心自己的区块链的应用部分,而且在这个SDK中,还开放了一些开发的API,可以通过这些API来实现一些具体的基础实现,打造个性的区块链。 

这也意味着,Cosmos-sdk是一个区块链开发的框架体系,通过Cosmos Hub接插任意的区块链,从理论上讲,万链并发不是幻想。cosmos的最终想法是通过cosmos SDK来实现一套完整的生态,但是正如波卡链和plasma一样,cosmos的进度确实是让人感到有些慢。很多的技术和概念可能会在未来不断变化。所以最终结果如何,还得走着瞧。 

二、cosmos的整体结构

1、网络和共识(Tendermint)

就如上图直观的表示一样,cosmos通过Tendermint实现了一个通用层,利用这个通用层,可以实现不同的应用的接插隔离。 
2、cosmos中心(Hub)

所谓中心,就是cosmos Hub,Cosmos网络中第一个公共区块链,通过Tendermint拜占庭共识算法运行。Cosmos中心通过ABCI来连接其他区块链(空间)。中心可以控制各个空间里代币。保证代币可以安全快速地从一个空间传递到另一个空间,即进行资产的跨链交易。 

Cosmos中心负责管理各个独立区块链(即“空间”,或者“碎片”)。中心上的空间会源源不断地提交最新区块,这一点可以让中心跟上每个空间状态的变化。 
Cosmos中心的验证人与委托人可以对提案进行投票,从而自动改变预先设置好的系统参数(比如区块容量限制),协调更新,并对人们看得懂的章程进行修订投票,从而管理Cosmos中心。这个章程允许权益相关者聚集到一起,来解决盗窃及漏洞等相关问题(比如The DAO事件),并快速得出明确的解决方案。 
3、空间(Zones)

空间,也就是各个独立的区块链,连接到cosmos中心后,它们就成为了cosmos的一个空间。每个空间也会和中心的状态保持一致。信息可以从一个空间发送到另外一个空间,通过默克尔证明(Merkle-proof)来表明信息已经被传送或接收。这种机制叫做“区块链间通信”,简称为“IBC”机制。 
4、跨链通信协议(IBC)

IBC是中心与空间之前通信的方法。假设现在有三个区块链,分别是“空间1”、“空间2”以及“中心”,如果想要“空间1”生成一个消息包,通过“中心”发送给“空间2”。为了让消息包从一个区块链转移到另一个区块链,需要在接收方区块链上发布一个证明,来明确发送方已经发起了一个消息包到指定地点。接收方要验证的这个证明,必须和发送方区块头保持一致。这种机制就类似与侧链采用的机制,它需要两个相互作用的链,通过双向传送存在证明数据元(交易),来“知晓”另一方的情况。 

IBC协议可以自然定义为两种交易的使用:一种是IBCBlockCommitTx 交易,这种交易可以让区块链向任何观察员证明其最新区块哈希值;另一种是IBCPacketTx 交易,这种交易则可以证明某个消息包确实由发送者的应用程序,通过默克尔证明机制(Merkle-proof)传送到了最新区块的哈希值上。 

通过将IBC机制分裂成两个单独的交易,即IBCBlockCommitTx交易与IBCPacketTx交易,可以让接收链的本地费用市场机制,来决定承认哪个消息包,与此同时还能确保发送方的完全自由,让其自行决定能够传出的消息包数量。 

三、项目分布

cosmos可以分成cosmos(cosmos-SDK)和Tendermint两部分,它们在github上也是分成两个项目的。 

1、cosmos-SDK部分

看一下文件: 

baseapp: 基本ABCI应用程序定义模板,以便Cosmos-SDK应用程序可以与底层的Tendermint节点通信。 
client:客户端 CLI和REST服务器工具,用于与SDK应用程序交互 
examples: 如何构建独立的应用程序的示例。 
server: 运行Tendermint上SDK应用程序的完整节点服务器。 
store: SDK的数据库-MyKLE多存储支持多种类型的Melkey密钥值存储。 
types: SDK应用程序中常见的类型。 
x: 对核心的扩展,其中定义了所有消息和处理程序。有点神秘的味道。 

2、Tendermint部分

代码目录: 

blockchain:Tendermint链结构的规则验证和相关数据结构。 
state:状态管理跟踪,包括签名摘要以及最生要的默克尔证明等。 
consensus:共识部分,主要是基于拜占庭BFT的DPOS算法。 
mempool: 验证完成的交易的存储池。 
networks:本地和远端网络服务。 
node:区块节点及相关数据结构。类似于以太坊,抽象了一层。 
lite:轻节点,用来验证头。 
p2p:网络层,用于链的发现和治理。 
proxy:代理层,用于交易等代理连接验证共识等。 
evidence:存储存证相关。 
rpc:远程通信接口。 
types:基本的数据类型定义。 

四、总结

Tendermint和波卡链的substrate类似,都是抽象出来用来处理跨链的一个模块。只不过一个倾向于中心接入,一个倾向于中继处理,异曲同工,达到的目的没有什么区别。 

更多区块链信息:www.qukuaiwang.com.cn/news

关键词: cosmos  区块链网络  
0/300