时间:2022-02-23|浏览:7308
用戶喜愛的交易所
已有账号登陆后会弹出下载
区块链网络共识算法的进步代表络共识算法的进步代表了更高的效率和安全水平pow和以太坊以及其他链的pos在达成共识后,我们可以发现许多共识来自bft共识得到了改善。然而,创新者的另一个方向是 Tendermint,Tendermint最典型的代表是Cosmos以及使用Cosmos SDK创建的项目,比如Oasis这样的网络也使用 Tendermint。
本文总结了 Tendermint数据,用于整体理解。
Tendermint它是一种安全一致地复制在多台机器上的应用程序,其安全性表明,即使多达1/3的机器以任何方式发生故障,Tendermint也可以正常工作;一致性是指每台无故障的机器看到相同的事务日志并计算相同的状态。
容忍机器以任何方式故障(包括恶意)的能力称为拜占庭容错(BFT)。区块链技术对BFT转换为更强调点对点网络和加密身份验证。交易在块中被批准形成链,实际上优化了区块链数据结构BFT设计。
而Tendermint改进后可以称为易于理解和异步BFT共识协议。本协议遵循以下简单状态机的操作模式:
该协议的参与者称为验证人,他们轮流提出交易块并投票。块在链中提交,每个高度都有一个块。当一个块无法提交时,协议将进入下一轮,新的验证人可以为该高度提出另一个块。
成功提交区块需要两个阶段的投票;称为pre-vote和pre-commit。当超过2/3的验证者在同一轮中提前提交同一块时,该块被提交。
图右下角有一对夫妇在跳polka舞蹈照片,当超过三分之二的验证人提前为同一块投票时,称为polka。每次提交都必须在同一轮中通过polka证明是合理的。
验证者可能由于多种原因未能提交区块,例如当前提议者可能离线,或者网络可能很慢。Tendermint允许他们确定他们应该跳过验证者。因为验证者等待时间的加班使 Tendermint 成为弱同步协议,而不是异步协议。然而,协议的其余部分是异步的,最终验证人只能在收到三分之二以上验证人的意见后取得进展。Tendermint简化元素之一是它使用相同的机制提交块,就像它跳到下一轮一样。
假设不到三分之一的验证者是拜占庭,Tendermint确保它永远不会违反安全性,即验证人永远不会在同一高度提交冲突块。为此,引入了锁定规则,以调整过程图中可以遵循的路径。一旦验证人提前提交了一个块,它就会被锁定在块上。验证人必须投票锁定块,如果下一轮有一个块polka,验证人只能解锁并提前提交新块。
软件层面,Tendermint区块链共识引擎和通用应用程序接口由两个主要技术组件组成。Tendermint Core共识引擎确保每台机器以相同的顺序记录相同的交易。应用程序接口,称为应用程序块链接接口(ABCI),使交易能够用任何编程语言处理。开发人员可以使用与其他预装内置状态机的区块链和共识解决方案不同的Tendermint可以编写任何编程语言的应用程序BFT复制状态机。因此,可见Tendermint易于使用、易于理解、高性能,适用于各种分布式应用。
Tendermint它已经发展成为一可以托管任何应用程序状态的通用区块链共识引擎。这意味着它可以用作其他区块链软件共识引擎的即插即用替代品。
Tendermint Core主要通过满足ABCI协议要求与应用程序通信。Tendermint在应用程序和共识过程之间提供一个非常简单的 API(即 ABCI)分解区块链设计。
ABCI 由以下三种主要消息类型组成,从核心传输到应用程序。应用程序回复相应的响应信息。
DeliverTx区块链中的每一笔交易都是通过这个消息传递的。应用程序需要根据当前状态、应用程序协议和交易加密凭证进行验证DeliverTx新闻收到的每一笔交易。然后,验证的事务需要更新应用程序状态。
CheckTx消息类似于DeliverTx,但仅用于验证交易。Tendermint Core 首先使用内存池CheckTx检查交易的有效性,并将有效交易中继给对方。
Commit消息用于计算当前应用程序状态的加密承诺,以便将其放入下一个区块。
因此,可以总结为,Tendermint Core三个创建到应用程序的应用程序ABCI 连接;一种用于在内存池中广播时验证交易,一种用于共识引擎块提案,另一种用于查询应用程序状态。