Qtum 量子链研究院:Tendermint 技术详解(下篇)

回顾:Qtum 量子链研究院:Tendermint 技术详解(上篇)

上篇说到,大部分的区块链应用都是采用整体的设计方法,就是说,这些区块链应用实现成单一的程序,一个程序实现了区块链各层的所有功能,包括P2P连接,交易数据的处理和广播,共识达成,具体的应用功能实现等等。

 

例如比特币,一整套代码就实现了所有比特币的功能。从软件工程的角度来看,这种非模块化的设计是不合理的,这会使代码复用变得困难,代码的分支管理也变得复杂,同时还限制的区块链应用开发使用的语言。

 

针对这个问题,Tendermint对区块链的功能模块进行解耦,将共识和P2P部分从具体的区块链应用状态细节中分离出来,以适用各种分布式应用。

 

Tendermint由两部分组成:区块链共识引擎通用的应用程序接口

 

  1. 共识引擎被称为Tendermint Core,用于确保同一个交易在不同机器上记录的顺序相同。

  2. 通用的应用程序接口也被称为应用区块链接口(Application Blockchain Interface,ABCI),其作用是使交易可以用任何编程语言进行处理。

 

Tendermint Core通过ABCI接口与应用层进行交互,应用程序可以用任何语言编写,开发者可以很方便地开发自己的区块链应用。

 

ABCI(Application Blockchain Interface)

 

Tendermint Core通过一个满足ABCI标准的socket协议与应用程序进行交互。

 

ABCI 包含3 种消息类型:DeliverTx消息,CheckTx消息和commit消息。Tendermint Core将消息发送给应用,应用根据消息进行相应的回复。

 

DeliverTx 消息是应用的主要工作流程。链上的每笔交易都通过这个消息进行传送。应用基于当前状态、应用协议和交易的加密证书,验证接收到 DeliverTx 消息的每笔交易。然后,验证后的交易会更新应用状态。

 

CheckTx 消息类似于 DeliverTx,但它仅用于验证交易。Tendermint Core 的内存池首先使用 CheckTx 检验交易的有效性,并且只将有效交易广播给其他节点。

 

Commit 消息用于通知应用程序计算当前应用状态的加密保证(cryptographic commitment),该加密保证会被放入下一个区块头部。

 

一个应用可能与多个ABCI socket 连接。Tendermint Core 给应用程序创建了三个 ABCI 连接:一个用于内存池广播时的交易验证,一个用于区块提议时的共识引擎,还有一个用于查询应用状态。

 

总结

 

本文主要介绍了Tendermint共识算法和ABCI接口。Tendermint是基于BFT的共识算法,在错误节点不超过1/3的情况下,Tendermint保证安全永远不会被破坏,系统不会在同一区块高度提交冲突的区块

 

因此,区块链永远不会分叉。但是每个投票环节都需要得到超过2/3的validators的投票,在现实世界中有很大可能性系统真的会停止运行,这个问题还需要对应的解决方法。

 

参考文献

  1. Jae Kwon, "Tendermint: Consensus without Mining",https://tendermint.com/static/docs/tendermint.pdf

  2. Byzantine Consensus Algorithm

    https://github.com/tendermint/tendermint/wiki/Byzantine-Consensus-Algorithm

  3. Tendermint,

    https://tendermint.com/docs/introduction/quick-start.html#overview

  4. 简单了解Tendermint,

    http://liuchengxu.org/blog-cn/posts/tendermint    

  5. 深度剖析区块链跨链技术Cosmos(上篇),https://www.itcodemonkey.com/article/4688.html

  6.  Tendermint:拜占庭容错算法,https://zhuanlan.zhihu.com/p/43555521

  7. 区块链时代的拜占庭容错:Tendermint(二),https://mp.weixin.qq.com/s/n_lRygSI_GTrnSct_ZNmxw

  8. 区块链—Tendermint共识算法框架,https://cloud.tencent.com/developer/news/217750

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值