Tendermint详解

Tendermint详解,第1张

摘要

您熟知并喜爱的区块链有一个相当严格的结构。作为一名开发人员,在这种情况下您有两种选择:在受限的环境中构建应用程序,或者进行代码分叉并创建自己的链。然而,创建自己的链并非易事——您还需要启动网络并决定所使用的共识机制。

Tendermint是用来启动区块链的开源软件,让您可以用任何语言编写应用程序。更厉害的是,它可以与其他区块链进行通信。

创建加密货币或区块链网络需要投入大量工作,远远不止于初始化数据库。它需要在安全性、去中心化和可扩展性之间为激励和权衡取得微妙的平衡。

有些团队已经 探索 了一系列不同的方法,来构建最强大的区块链生态系统,这也在情理之中了。在这篇文章中,我们将详细了解其中一种方法:Tendermint。

如果您对区块链有所了解,就会感觉Tendermint的大部分内容都似曾相识。在深入研究之前,我们首先回顾一些关键概念。

Tendermint是一种 区块链堆栈 。比特币和以太坊等同样也是区块链堆栈。请记住,这并非只关乎区块链数据库本身,还关乎节点的对等网络、它们如何相互作用,以及您通过交易和智能合约可以做到的事情。其目标是在即便不信任其他任何人的情况下,让所有人都统一一种 状态 (比如数据库的快照)。

在很大程度上,如今的主要区块链已经想出了达成这一点的“秘籍”。然而,它们通常依赖于 一体化架构 :这是一个软件工程概念,意味着组件相互连接且相互依赖。您不能从中取走一部分,然后插入到别的架构中。

如果您想保证灵活性,一体化架构并非理想的选择。在相反类型的模型(具有 模块化架构 )中,您可以在不必担心破坏任何架构的情况下调整单个组件。对于一体化架构,您在升级单个组件时必须确保每个组件保持兼容。

现在,我们理解了其中的差别,可以继续来了解Tendermint协议。

您可能已经知道,比特币最大的创新之处在于它解决了所谓的 拜占庭将军问题 。在这里我们不会详细讨论这个问题(如果您感兴趣,请参阅我们关于拜占庭容错的文章)。您只需要知道,它详细说明了参与者必须在分布式环境中进行通信的场景。

这些参与者不知道其他人是否在撒谎,也不知道他们之间发送的消息是否被篡改。即便存在这些问题,如果参与者可以针对一组事实达成一致,则系统会被认为存在 拜占庭容错 。

显然,在去中心化的环境中,正确把握这一点至关重要。不具有拜占庭容错的加密货币并不能真正发挥作用——您需要某种中心化组织进行协调,这就与目的背道而驰。如果很多数字货币一样,比特币通过使用工作量证明(PoW)共识算法来解决这个问题。

我们已经了解一体化/模块化架构之间的区别,也知道去中心化加密货币网络需要具有拜占庭容错能力。接下来我们谈谈我们通常在区块链中看到的三层架构: 应用 层、 共识 层和 网络 层。

共识层和网络层是让网络节点相互通信并尽量就一组事实达成一致的地方。应用层则可让您自行进行 *** 作——好比以太坊的去中心化应用程序和智能合约或者比特币中的自定义交易。

然而,Tendermint是公司的名称(由最初撰写白皮书的开发人员Jae Kwon创立),而Tendermint Core是这家公司正在开发的实际软件。更具体地说,这款软件有两个主要组件:核心共识引擎(Tendermint core)和应用程序接口(ABCI)。

Tendermint Core是一个能够实现容错的系统。本质上,它是一台大型分布式计算机,可在同一时间向每个人显示相同的状态。只要至少三分之二的参与者是诚实的,一切就会顺利进行。但几乎每个区块链都是这样的,难道不是吗?它究竟有什么特别之处?

首先,Tendermint Core使用的共识机制是权益证明(PoS)。每个周期从一组验证者中选择一个随机节点。随后,该节点必须提出下一个区块(在所谓的 循环 系统上进行)。如果其他验证者对它满意,就会添加新的区块,并更新链。结果可以即时确定——与比特币或以太坊不同,它不需要等待确认来确保您的交易有效。

别着急,它还有其他特色!Tendermint Core采用模块化架构,应用层与共识层和网络层分离。简而言之,这意味着您可以将自己的应用程序层插入到堆栈中,而无需担心繁杂的激励机制或共识算法。

这对终端用户来说并不值得大惊小怪。但对于开发人员来说,能够利用现有框架就意味着他们可以直接构建应用程序,而无需建立整个网络。来自区块链的数据可以通过管道传输到集成层,让开发人员可以用任何语言编写软件。

神奇的事情发生在所谓的应用程序区块链界面(或简称ABCI)上。您可以把它想象成树莓派电脑上的GPIO引脚。您可将各种第三方组件连接到这些引脚,从LED到精心设计的植物洒水系统。ABCI以类似的方式定义了区块链以及在区块链上运行的应用程序之间的边界。

应用程序接口和共识机制的分离为分布式应用程序提供了更大的灵活性,可以将任何编程语言合并到它们的业务逻辑当中。

您只需要看看Ethermint这个具体示例就可以知道它的用处:Ethermint采用了以太坊代码库,删除了工作量证明机制,并将以太坊虚拟机建立在Tendermint之上。

这使得一些有趣的 *** 作成为可能。首先,以太坊开发人员可轻松将他们的智能合约移植到新引擎上,或者使用Solidity语言编写新的合约。除了提供以太坊功能之外,Ethermint还可作为以太坊权益证明,让我们一睹Casper在以太坊2.0中实现的样子。

“区块链互联网”的承诺吸引了许多人使用Tendermint协议。互 *** 作性是加密货币领域期待已久的一个补充,因为它意味着数百个单独的区块链将变得交叉兼容。

目前,Cosmos SDK已投入大量工作,Cosmos SDK是一个开源框架,让任何人都能创建特定于应用程序的公共或私有区块链。随后,这些区块链可以通过所谓的Cosmos Hub接入更广泛的Cosmos网络,并在那里与其他区块链进行交流。

很多热门的项目已经使用Cosmos SDK来构建,比如BSC、KAVA、Band Protocol、Terra和IRISnet。

作为一个区块链引擎,Tendermint已经引起了加密货币领域众多利益相关者的注意,包括开发人员和终端用户。

Tendermint 是分布式一致性软件。即使有 1/3 的机器叛变了, 也能保证其余机器上的数据一致。容忍机器以任意方式失败的能力, 包括变得恶意, 被称为拜占庭容错 (BFT)。该理论被提出来数十年了,由于 bitcoin 和 ethereum” 区块链技术” 的成功,才变得流行起来。区块链用点对点和加密认证技术组成了一个现代化 BFT 实例。Tendermint 包含了两个主要的组件:区块链共识引擎和通用应用层接口。共识引擎叫 Tendermint Core,确保每一台机器上的交易列表相同。应用层接口名字是 ABCI,提供能为任何语言处理交易的接口。与其他区块链的解决方案(内置的状态机预先打包块)不同,如 ethereum 的基于世界状态树的键值对存储、bitcoin 的脚本语言处理。开发人员可以在任何开发环境下用任何语言通过实现 ABCI 应用层来复制 Tendermint 状态机。

Tendermint 是一个易于理解的,大部分模块采用异步通信的,拜占庭容错共识协议。该协议可用一个简单的状态机表示,如下图:

协议参加者称为验证节点;他们轮流打包出块并集体对该块打包。在每一个高度上只允许一个块 commit。在一个块无法在该轮被提交的情况下,协议会移动到下一轮,并且新的验证节点会 propose 一个该高度的块。需要两轮投票才能 commit 一个块;这两轮投票我们称为 “pre-vote“ 和 “pre-commit“。在每一轮投票中需要超过 2/3 的验证节点对同一个块 pre-commit 才能最后的块 commit。

验证者在每一轮中 commit 块时会失败,原因如:当前提议者可能离线,或者网络可能很慢。Tendermint 允许跳过验证者,验证者等待一小段时间从 proposer 收到完整的 proposer 块,然后进入下一轮投票。这种对超时的依赖使得 Tendermint 成为弱同步协议,而不是异步协议。然而,协议的其余部分是异步的,验证者只有收到超过 2/3 的投票后才能取得进展。precommit 和 propose 两轮投票机制是一样的。

假设有不到三分之一的验证节点是拜占庭节点,Tendermint 保证不会违反安全性。也就是说,验证节点永远不会在相同的高度提交冲突的块,不会分叉。为此,它引入了一些 “锁定 “规则。一旦验证器预先插入一个块,它将被锁定在该块上,然后,


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11606007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存