Stellar区块链:原理与实践
上QQ阅读APP看书,第一时间看更新

1.7 常见基础协议

本节列出了几个具有特色和代表性的常见区块链基础协议。

1.7.1 BitCoin

BitCoin是由中本聪在2008年提出的,是第一个成功的区块链应用,同时,区块链概念也自此产生。根据中本聪的思路,BitCoin是一种结合密码学、共识机制等原理设计出来的一套开源软件,也是一个点对点传输网络,一个去中心化的支付系统。发行资产总量恒定,约2100万个,通常每4年左右资产发行量减半,如图1-5所示。

图1-5 BitCoin半衰区块信息

BitCoin采用MIT的开源许可,使用C++语言开发,采用PoW共识机制,性能较慢,最高每秒7笔左右的交易量,大概10分钟左右生成一个区块。BitCoin区块链网络是一个7乘24小时不间断运行的高可用网络。当前全球的网络节点数量如图1-6所示。

图1-6 BitCoin区块链网络节点分布图https://bitnodes.earn.com/。

注意

当前,BitCoin的低性能导致其无法满足大规模企业级应用场景需求,但是,BitCoin是区块链的第一个成功应用。

1.7.2 Ethereum

在2013年11月,Vitalik Buterin发起以太坊区块链项目,相对于BitCoin, Ethereum最大的特点是增加了图灵完备的智能合约,通过图灵完备智能合约可以实现更多业务逻辑,更加适应复杂业务场景应用,为基于区块链的各类扩展应用提供了可能。

当前,Ethereum基础协议有GO、C++和Java等多种语言实现的不同版本,是基于协议开发的典范。

Ethereum作为全球大规模区块链网络之一,当前拥有最好的开发者社区。其区块链网络如图1-7所示。

图1-7 Ethereum区块链网络节点分布图https://www.ethernodes.org/network/1。

当前,Ethereum和BitCoin一样采用工作量证明(PoW)作为共识机制。Ethereum的交易确认大概用12秒左右,性能可以达到每秒25笔,采用GPL的开源许可协议。

Ethereum的关键里程碑包括五个:

❏ 预发布阶段:Olympic testnet,2015年5月发布。

❏ 第一个版本阶段:Frontier,2015年7月30日发布。

❏ 第二个版本阶段:Homestead,2016年3月14日发布(π日)。

❏ 第三个版本阶段:Metropolis,当前处于此阶段,其重点变化在于共识机制向PoS进行迁移;

❏ 第四个版本阶段:Serenity,未来发布,此阶段整个区块链网络将完全采用PoS共识机制,网络稳定运行。

Ethereum的重大成功取决于其支持图灵完备的智能合约(EVM),可以对区块链网络进行更多的业务逻辑扩展,以适应不同场景的需求。

1.7.3 Ripple

Ripple是一个开放支付网络,其直接竞争对手是SWIFT(Society for Worldwide Interbank FinancialTelecommunications,环球同业银行金融电讯协会), Ripple建立初衷是解决高昂的国际间汇款成本问题。

各类汇款公司、银行和支付等机构,通过搭建Ripple网关(Gateway)接入Ripple网络中,直接通过Ripple提供的分布式交易及路径支付功能完成法币汇兑。

注意

集中化交易与分布式交易。传统的证券交易所是集中化交易,通过一个统一的中心进行集中撮合交易,具有高性能的特点;而分布式交易无统一的撮合交易中心,而是在区块链上撮合交易,交易过程全程记录在区块链上,具有无须信任中心节点、可审计和可追溯的特点,但性能没有集中化交易系统优秀。

Ripple实现的全球清结算网络具有规则透明、汇率市场化、费用低和交易速度快等特点。

2016年6月13日,Ripple获得了美国纽约金融服务部发放的BitLicense牌照,这也是纽约州发放的首张机构化管理虚拟财产的牌照。

随着Ripple生态的发展,其合作伙伴逐步向银行机构、汇款和数字资产交易等方面进行渗透。

1.7.4 Tendermint

Tendermint是一个区块链基础协议实现框架,本身优秀的模块化设计思想,方便各类区块链基础协议开发使用。Tendermint类似于两类软件:一类是Zookeeper的Key-Value存储系统;一类是区块链技术。

BitCoin、Ethereum、Ripple和Stellar等区块链基础协议的设计采用的是典型的整体设计思想,存在几方面问题:首先需要实现大量的P2P、共识机制、存储等通用基础设施,而且无法重用;其次限制了上层应用的技术栈,例如Ethereum的EVM上面的应用技术栈比较固定(Serpent或者Solidity)。

Tendermint为了应对上述问题,采用模块化设计思想,其特点包括:

❏ Tendermint Core实现了P2P通信网络,方便重用;

❏ Tendermint Core实现了BFT,重点解决拜占庭问题,方便重用;

❏ 外部应用或者编程语言通过ABCI(Application BlockChain Interface)访问Tendermint Core,实现扩展功能与核心功能分离。

其逻辑架构视图如图1-8所示。

图1-8 Tendermint逻辑架构视图

Tendermint提供了P2P网络和拜占庭容错(BFT)实现,此部分模块叫作Tendermint Core,在Tendermint中称为Client端。Tendermint本身不实现具体的业务逻辑,具体的业务逻辑实现在App中实现,在Tendermint中这种App称为Server端。通过此种方式的模块化设计,可以直接用Tendermint实现一个高度可扩展的区块链基础协议。

Client端与Server端采用ABCI接口进行通信,其支持两种实现方式:

❏ TSP(Tendermint Socket Protocol), Socket异步处理方式;

❏ gRPC。

Server端与Client端之间维护着三个连接,通过这三个连接可以对业务逻辑功能进行解耦处理。

1. mempool connection

调用Server的CheckTx接口,查询事务是否符合业务逻辑,序列图如图1-9所示。

图1-9 mempool connection序列图

2. consensus connection

调用Server的DeliverTx接口,此时,验证节点的检查进度已完成2/3,然后进行共识,如图1-10所示。

图1-10 consensus connection序列图

3. query connection

Client端调用Server端的查询接口,得到应用的本地状态,进而更新Client端的状态机。

官方开源社区中已经有Ethereum的参考实现Ethermint。在Tendermint技术社区也已经有基于Tendermint开发的Ethereum实现,项目名称为Ethermint。https://github.com/tendermint。