马里奥说事系列 之区块链3.0版本的Cosmos

本文由“币嗨Bihi内容合伙人计划”赞助

老铁们好,欢迎来到马里奥说事系列

今天我们话题是区块链3.0版本的Cosmos,有没有觉得高大上,那你就往下看!

万向区块链旗下万云首席技术官奚海峰在DevCon3大会结束之后,又开启了Cosmos训练营之旅。奚总将在本文中就Cosmos的核心技术、生态系统、关键协议等进行介绍和解读。

Cosmos被誉为“区块链的互联网”,也被认为是区块链的3.0版本。Cosmos旨在解决区块链交互操作和可扩展性问题,其区块链间通讯协议可以实现区块链的互联,支持不同区块链之间的资产转移。以下为Cosmos项目详细解读。

看点

01

Cosmos核心技术:Tendermint

Cosmos有一个很独特的宇宙观:这个世界不可能由一个区块链主导,一定是多链并存,多币并行的世界。如何把多链和多币整合成一个生态系统,就是Cosmos的终极理想。它的理想还有个独特的地方,它认为币和链应该是分离的。在Cosmos里有个核心技术,使得代币可以跨区块链进行转移,这个核心技术就是Tendermint。Tendermint是区块链领域较早的基于拜占廷容错协议的PoS共识引擎。

Cosmos认为以比特币为代表的区块链1.0,是网络层、共识层和应用层混合成一体的产品。以以太坊为代表的区块链2.0,简化了这一构架,用户不需要直接处理共识和网络层相关细节,只需基于以太坊提供的虚拟机的高级语言写分布式应用就可以了。

Tendermint架构的创新之处在于将区块链应用(状态)与底层进行了分离,它的核心代码Tendermint Core涵盖了可重用可配置的共识和网络层功能,同时它还定义了一组ABCI回调接口与应用层进行交互,应用逻辑可以用你熟悉的任何语言来写。客户端发给Tendermint的交易,通过ABCI接口到达应用,比如检查交易的有效性。有效交易进入Tendermint内存池,提议节点从内存池选择交易进入候选新块,经过PoS达成共识的新块向全网广播。收到新块的全节点都会通过ABCI接口把交易播放给应用,应用逻辑在执行交易的过程中相应地改变自身内部状态,最后把状态哈希以AppHash的形式返回给Tendermint,计入新块头部。

当新一轮的区块开始选择的时候,会有一个验证人以轮询等方式选出来,作为提议节点提交一个候选新块。这个新块里包含一些已经跟应用确认过是有效的交易。把这个块广播到网络里以后,所有的验证人进行Prevote预投票。这里因为有超时机制,所以Tendermint协议是一个弱同步协议。Prevote投票超过三分之二后,系统达成所谓的“Polka”状态,接着对这个块进行Precommit投票,一旦Precommit超过三分之二,新块就被提交(Commit)生成新区块高度,进入下一轮提议。

Tendermint共识算法的特色是拜占廷容错。它最多可以容纳整个网络里面三分之一的验证人犯错,包括无意的犯错或者有意的作恶。投票的时候三分二不是指三分之二的验证人数,而是三分之二的权益。

另外它有即时最终性,这是跟PoW的最大区别;当它生成新区块高度,这个块就是最终的,它将来不会被推翻,所以它会带来比以太坊、比特币高的性能。

它通过应用逻辑和共识逻辑进行整合,通过ABCI接口进行通讯,可以用任何语言编写应用。这个应用做的事情实际上就是状态机控制。它把共识引擎这部分抽象出来,可以用它做公有链,也可做私有链。

Tendermint强调一致性的算法,必须三分之二的投票才能生成新的块。如果网络达不到三分之二的人投票,这个协议就被停了。所以它强调的是一致性而不是可用性,它不允许短暂的分叉。

看点

02

如何利用Tendermint机制开发应用

一是基于ABCI协议直接开发应用。只需确保应用逻辑所用到的开发语言特性是确定的。也就是说这个逻辑在任何一个节点的语言执行环境上执行的时候,都会返回相同的AppHash。这种开发模式的好处是你有最大的控制权,你在应用里想写什么样的逻辑就写什么样的逻辑。联盟链可以采用这种模式开发。但这套协议的缺点是技术难度大,要求开发人员非常熟悉ABCI回调接口,而且应用的所有逻辑都要自己开发。

二是基于Ethermint开发。Ethermint是Tendermint团队开发的另外一个项目,它把以太坊的Go语言库拿过来,通过ABCI接口和Tendermint Core进行了融合,实现了在PoS协议上运行以太坊虚拟机。它的性能很强大,比如在以太坊写的分布式应用,可以直接部署在Ethermint上面,以太坊现有的客户端工具和开发工具都可以直接使用。基于Ethermint开发应用的好处显而易见,开发者可以用熟悉的开发工具和理念;缺点是面临以太坊同样的安全风险。

三是基于Cosmos SDK开发。Cosmos SDK是一个提供了基本区块链逻辑的ABCI应用。它是多代币的区块链,账号可以管理多种代币,同时它还提供一些常见的功能,如比链上治理。它的强大之处在于可以在Cosmos SDK所包含的已有功能、最佳实践和插件架构上快速开发区块链应用。Cosmos Hub就是基于Cosmos  SDK开发的,这种方式适合开发公有链项目,速度很快。

看点

03

Cosmos生态系统

Cosmos的生态系统总结起来就是:Cosmos Hub作为支持多币种的一个枢纽将多个同样基于Tendermint开发的区块链分区(Zone)连接成一体。Cosmos将在今年底或明年第一季度上线“主网”,即Cosmos Hub。伴随主网上线,将会同时上线几个分区,其中一个就是作为公有链的Ethermint,另外一个是OmiseGO,接下来是跟以太坊的桥接分区(Peg Zone)。Hub和Zone之间的通信,通过IBC协议实现。

看点

04

IBC协议

互联链通信(IBC)协议是个非阻塞的异步协议,能保证不同链之间不会在交易处理上产生耦合。它通过Merkle树实现可靠的消息队列,并将队列保存在各个分区里面,实现有序存储,然后通过把消息的Merkle证明作为IBC数据包的一部分发出去。

在两个通讯链上建立双向信任时如何操作呢?这是一种特殊的,需要有权限管理的消息,而且需要人为干涉。相当于一个分区要将所有验证人的公钥告诉它想与之建立联系的另外一条链。当需要验证来自另一条链的消息时,只需拿对方的验证人公钥集合来验证其Merkle证明的有效性就可以了。

IBC协议还会通过一些高级消息类型超时、状态清理、跨链路由和网关以及多种模式中继等复杂情况进行处理。

链币分离

通过IBC可以帮助代币实现跨链使用。以STORJ.IO为例,它在链上原生的代币就是自己的代币,如果STORJ区块链连到Cosmos  Hub上,理论上通过IBC协议就可以把以太币或者其他币转移到STORJ.IO的区块链上使用。这不是币种交换的概念,而是完全可以把一个币转移到另一个区块链上。假设一个以太币通过Cosmos Hub转到另外一个链上,比如STORJ.IO,那么以太币在以太坊就会被锁定或销毁,在STORJ平台上会生成对应数量的以太币,只不过这个以太币严格意义上来说不是原生的以太币,但是它是用STORJ区块链的多币系统生成的一个代表对应的以太币价值和功用的代币符号。当你需要把这个代币再转回来时,就会销毁STORJ上的代币,然后在以太坊对应的账号上生成代币。所以Cosmos在现阶段主要是通过IBC协议实现代币在不同区块链之间的转移和跨链使用。

由此,许可链也可以与公有链进行交互。许可链没有原生代币,如果许可链因为业务需求,需要引入激励机制,那么可以和公有链进行交互,通过Cosmos把代币转到自己链上进行使用。

看点

05

Cosmos——区块链互联网

Cosmos被称为“区块链互联网”,基于刚刚介绍的技术特性,“区块链互联网”呈现出以下几种特点:多样性、互操作性、性能扩展、安全性和自主性。

它的性能扩展包括垂直扩展和水平扩展。水平扩展,因为它是按照应用的边界来划分的一种分片,在减少性能瓶颈上是最符合逻辑的。每一个分区或者Hub上是按照不同的应用来划分的,所以应用的并行处理非常自然。另外从逻辑方面来说,你只需要成为你关心的应用里区块链的全节点,提高工作效率。

多样性和安全性。大部分的生产级应用不需要跑在图灵完备的区块链上,这也是Cosmos的“宇宙观”和以太坊的根本性差异之一。这样做的好处是可以减少攻击界面,因为用Tendermint写的针对某个特定场景的ABCI应用,只需要几个定制交易类型就可以,不像以太坊的整个EVM和智能合约代码都暴露给潜在黑客攻击。分区还可以降低成本,提升效率,并通过微调来优化,这些都是这种的架构带来的好处。

互操作性就是不同链上的应用和智能合约可以通过IBC协议进行交互。可以使得不同的代币经济得以深度整合,不同的代币在一条区块链上可以混合使用,未来可能会实现跨链的智能合约调用。

自主性。举个例子,通过硬分叉分裂出来的以太坊和以太坊经典,它们不可能拥有同样的验证节点集合。按照Cosmos的架构,这两条链各自跑在自己的分区里,它们有不同的验证人,可以实现不同的链上治理和经济激励、经济治理。

合并安全性。对于很小的公有链,要找100个见证人是很麻烦的事。这时可以与Cosmos Hub共享100个验证人,实现公有链的快速自举。

感谢老铁们的陪伴,风里雨里,马里奥等你!

你可能感兴趣的:(马里奥说事系列 之区块链3.0版本的Cosmos)