什么是Tendermint Core?有史以来最全面的指南

什么是Tendermint Core?…

阅读时间:17分钟

Cosmos是目前最有前途的项目之一。在团队中拥有Jae Kwon和Ethan Buchman这样的人,它具有很大的潜力。 Tendermint核心在于其灵魂.

薄荷的终极指南

Tendermint Core结合了Tendermint共识算法和p2p八卦协议。因此,将它们全部集成到软件堆栈中时,您将获得Tendermint Core和Cosmos-SDK应用程序层.

无论如何,所以在继续之前,我们先来看看为什么Tendermint如此必要.

比特币和区块链

中本聪(Satoshi Nakamoto)创建比特币时,他创造了第一个去中心化密码系统。这一发现真正令人瞩目的部分是他能够解决拜占庭将军的问题,这使广域网(WAN)在不信任的环境中达成了共识。比特币使用工作量证明算法来达成共识.

话虽如此,比特币的主要贡献很可能是它向全世界介绍了区块链技术.

用最简单的术语来说,区块链是带有时间戳的一系列不可变数据记录,这些记录由不属于任何单个实体的计算机集群管理。这些数据块(即数据块)中的每个数据块均使用加密原理(即链)进行保护并相互绑定.

换句话说,区块链是一个 确定性状态 在不一定彼此信任的节点上复制的计算机.

确定性的意思是,如果采取相同的特定步骤,那么它将始终导致相同的结果.

例如。 1 + 2将始终为3.

那么,状态是什么意思?让我们看看比特币和以太坊.

在比特币中,状态是每个帐户余额的列表,这是未用交易输出(UTXO)的列表。通过更改余额的交易修改此状态.

另一方面,在以太坊中,该应用程序是运行智能合约的虚拟机。每个交易都通过以太坊虚拟机并根据其中所调用的特定智能合约修改状态.

如果您看一下区块链技术的体系结构,那么将涉及三个特定层:

  • 联网: 事务/信息在整个节点中的传播
  • 共识: 允许节点做出提供的决定 >第2/3个节点是非恶意的
  • 应用: 负责在给定一组交易(即处理交易)的情况下更新状态。给定一个事务和一个状态,应用程序将返回一个新状态.

对于视觉提示:

薄荷的终极指南

当前区块链架构的问题

事实证明,从所有这三个层开始完全构建区块链确实是一项艰巨的工作。因此,许多项目都倾向于通过分叉比特币代码库来构建。现在,虽然确实节省了很多时间,但事实是,它们仍然受到比特币协议限制的束缚。显然,当您使用众所周知的吞吐量问题的协议时,就无法执行复杂的项目.

当以太坊开始运作时,情况会好得多。以太坊实际上为开发人员提供了一个平台,他们可以使用该平台来创建自己的自定义代码(也称为智能合约和项目)。但是,与比特币一样,以太坊也遭受同样的问题。它们都具有整体式架构,而不是模块化.

整体架构与模块化架构

整体式架构意味着一切都由一件组成。当软件被认为是“整体的”时,这些组件是相互连接和相互依赖的,并且设计更加独立。在这种情况下,架构之间的耦合更加紧密,并且必须存在所有关联的组件才能执行或编译代码.

尽管这样做可以使系统的创建变得更强大,但是您不能真正从中衍生系统并创建自定义代码。它不是系统中最灵活的。另外,此系统还有另一个问题。如果程序的任何组件需要更新,则整个应用程序都必须重新设计。现在,这确实不是最理想的情况,是?

另一方面,我们具有模块化体系结构。与Monolithic不同,这些层之间没有相互链接。因此,尽管它可能不那么健壮,但是通过使用不同的单独模块来更新整个应用程序非常容易.

由于模块是如此独立,因此模块化体系结构允许您实际更新特定部分,而不会引起系统其余部分的意外更改。与单块程序相反,在模块化程序中,迭代过程也更加简单.

Tendermint的架构和目标

Tendermint利用模块化架构。他们的目标如下:

  • 提供区块链的网络层和共识层作为可构建不同分散应用程序的平台
  • 开发人员只需要担心区块链的应用层,节省了他们在共识和网络层上浪费的所有时间。.
  • Tendermint还包括Tendermint共识协议,该协议是Tendermint Core引擎中使用的拜占庭容错共识算法

让我们看看Tendermint的架构如何:

薄荷的终极指南

如您所见,应用程序通过称为APCI或应用程序区块链接口的套接字协议连接到Tendermint Core。由于Tendermint Core和在其上运行的应用程序在单独的UNIX进程中运行,因此它们需要一种可以相互交谈的方法。 ABCI帮助这两个人进行交流.

那么,ABCI的设计是什么样的? ABCI将有一些 独特的设计组件

#1消息协议

  • 对请求和响应消息
  • 请求由共识提出,而应用程序负责响应
  • 它是使用protobuf定义的

#2服务器/客户端

  • 共识引擎运行客户端
  • 应用程序运行服务器
  • 有两种适当的实现:异步原始字节和grpc

#3区块链协议

ABCI非常面向连接。 Tendermint Core的三个连接如下:

  • 内存池连接:这将检查在提交事务之前是否应该中继事务。它只能使用CheckTx
  • 共识连接:此连接有助于执行已提交的事务。对于每个块,消息序列为BeginBlock,[DeliverTx,…],EndBlock,提交
  • 查询连接:帮助查询应用程序状态。此部分仅使用查询和信息

总而言之,Tendermint的主要目标是为开发人员提供不仅实用而且具有高吞吐量的工具。这是使Tendermint如此诱人的属性:

#1兼容的公共或私有区块链

不同的项目有不同的需求。有些项目需要有一个开放的系统,任何人都可以加入并做出贡献,例如以太坊。另一方面,我们拥有像医疗行业这样的组织,它们无法向所有人公开其数据。对于他们来说,他们需要像许可的区块链这样的东西.

好的,Tendermint如何帮助满足这些需求?请记住,Tendermint仅处理区块链的联网和共识。因此,它有助于:

  • 通过八卦协议在节点之间传播事务
  • 帮助验证者就追加到区块链的交易集达成共识.

这意味着应用程序层可以自由地以开发人员希望定义的任何方式进行定义。由开发人员决定如何在生态系统中定义验证者集.

  • 开发人员可以允许应用程序具有一个选举系统,该系统根据这些验证者在生态系统中投入的本机令牌数量来选举验证者。.aka股权证明并创建公共区块链
  • 此外,开发人员还可以创建一个应用程序,该应用程序定义一组有限的预先批准的验证器,这些验证器负责处理共识和进入生态系统的新节点。这称为授权证明,是许可或私有区块链的标志.

#2高性能

通过Tendermint Core制作的应用程序可以期待出色的性能。 Tendermint Core的阻止时间仅为1秒。只要应用程序允许,它还可以每秒处理250字节事务的10,000个事务。.

#3终结

什么是结局?

简而言之,这意味着一旦执行了某个动作,便无法收回该动作。因此,让我们以一个简单的金融交易为例。假设您购买一家公司的一些股票,只是因为他们的系统出现故障,那么您不应失去股票的所有权。您可以想象,对于金融系统而言,确定性至关重要。想象一下进行一百万美元的交易,然后第二天,由于故障,该交易不再有效.

就像我们之前提到的那样,比特币和以太坊(直到完全实施Casper FFG)才真正没有结算的确定性。遇到硬分叉或51%的攻击时,交易有机会被还原.

另一方面,Tendermint会在交易完成后的1秒钟内给出即时确定性。只要在少于2/3的验证程序中是恶意的,就不会在系统中创建分支。一旦创建一个区块(在一秒钟之内),用户就可以放心他们的交易已完成.

#4安全

Tendermint是安全的,并迫使其参与者也对其行为负责。就像我们之前说过的那样,只要少于2/3的验证者是恶意的,就永远不会伪造嫩薄荷。如果在某些情况下,区块链确实分叉,则有一种确定责任的方法。此外,Tendermint共识不仅具有容错能力,而且具有最佳的拜占庭容错能力

#5易于使用

Tendermint的另一个优点是它的用户友好性。就像我们之前提到的,它们具有模块化的体系结构,可以在其中适当地定制应用程序层。这使得现有的区块链代码库可以通过ABCI轻松链接到Tendermint。完美的例子是Etheremint,它基本上是Tendermint之上的以太坊虚拟机代码库插件.

Ethermint的工作原理与以太坊完全相同,但也受益于我们上面列出的所有积极功能。所有以太坊工具(例如Metamask和Truffle)都与Ethermint兼容.

#6可扩展性

Tendermint的权益证明实施比传统的工作量证明共识算法更具可扩展性。主要原因是基于POW的系统无法进行分片.

分片基本上是对数据库进行水平分区,并创建较小的数据库或分片,然后由节点并行执行。原因是强大的采矿池可以轻松接管碎片.

Tendermint将允许实施分片,这将大大增加可伸缩性.

Tendermint共识协议

好的,让我们研究一下Tendermint共识协议的工作原理。什么是共识协议?

维基百科是这样定义共识决策的:

“共识决策是一个小组决策过程,小组成员在此过程中发展,并同意支持整个决策的最大利益。共识可以在专业上定义为可以接受的解决方案,即使不是每个人的“最爱”,也可以得到支持。 Merriam-Webster将“共识”定义为首先是普遍同意,其次是群体对信念或情感的团结。”

简单来说,共识是在小组中达成协议的动态方式。尽管投票只是为多数人的规则而定,而不考虑少数人的感受和福祉,但另一方面,达成共识可以确保达成一项协议,该协议可以使整个集团受益.

从更理想主义的角度来看,共识可以被散布在世界各地的一群人用来创建一个更加平等和公平的社会.

实现共识决策的方法称为“共识机制”.

现在,我们已经定义了共识是什么,让我们看一下共识机制的目标是什么(数据来自维基百科).

  • 寻求协议:共识机制应使小组尽可能达成共识.
  • 协同合作:所有参与者都应致力于共同努力,以取得将小组的最大利益放在首位的结果.
  • 合作社:所有参与者都不应将自己的利益放在首位,并且团队合作比个人更多.
  • 参与式:共识机制应使每个人都应积极参与整个过程.
  • 包括的:尽可能多的人应参与共识过程。这不应该像普通投票那样,人们真的不喜欢投票,因为他们认为从长远来看他们的投票没有任何影响力.
  • 平等主义者:试图达成共识的团体应尽可能地平等。这基本上意味着每一票都具有同等的权重。一个人的投票比另一个人的投票重要.

既然我们已经定义了共识机制是什么以及它们应该针对什么,那么我们需要考虑会议室中的另一头大象。.

像区块链这样的实体应该使用哪种共识机制.

在比特币之前,有很多点对点去中心化货币系统的迭代失败,因为它们在达成共识时无法回答最大的问题。这个问题被称为“拜占庭将军问题”.

拜占庭将军的问题

为了在对等网络中完成任何工作,所有节点都应该能够达成共识。事实是,要使该系统正常工作,它将很多重点放在人们为了整个网络的最大利益而采取的行动上。但是,正如我们已经知道的那样,在以道德的方式行事时,人们并不真正值得信赖。这是拜占庭将军的问题出现的地方.

薄荷的终极指南

想象一下这种情况.

一支完善的城堡周围有一支军队。他们获胜的唯一途径是,如果他们作为一个单位一起进攻城堡。但是,他们面临一个大问题。军队相距遥远,将军们无法真正直接沟通和协调进攻,有些将军腐败.

他们唯一能做的就是从一个将军到另一个将军。但是,使者可能会发生很多事情。腐败的将军可以拦截信使并更改消息。那么,将军们可以做些什么来确保他们发动协同进攻而又不依赖于每个将军的道德准则?他们如何以一种不信任的方式达成共识来做需要做的事情?

那就是拜占庭将军的问题,中本聪通过使用工作量证明(POW)共识机制解决了这个问题.

什么是工作量证明?

让我们检查一下上面示例中POW如何与上下文一起工作。假设一位将军想与另一位将军交流。您如何看待它会下降?

  • “ nonce”被添加到原始消息。随机数是一个随机的十六进制值.
  • 然后,此新消息被散列。假设将军事先同意,他们将只发送消息,该消息在经过哈希处理后以4个“ 0”开头.

    如果散列没有给出期望的0,那么将更改现时,然后再次对消息进行散列。该过程一直重复,直到收到所需的哈希值为止.

  • 整个过程非常耗时,并且需要大量的计算能力.
  • 现在,当他们最终获得哈希值时,将向信使提供原始消息和随机数,并告知信使与其他将军通信。那么,如果有人尝试截获该消息怎么办?好吧,还记得哈希函数的雪崩效应吗?邮件将发生巨大变化,并且由于不再以所需的数字“ 0”开头,因此人们会意识到该邮件已被篡改.

因此,将POW放在加密挖掘的上下文中:

  • 矿工试图解决密码难题以向区块链添加一个区块.
  • 该过程需要大量的精力和计算能力.
  • 然后矿工将他们的区块展示给比特币网络.
  • 然后网络通过简单地检查散列来检查块的真实性,如果正确则将其附加到区块链中.

因此,发现所需的随机数和哈希值应该很困难,但是检查其是否有效应该很简单。那就是工作量证明的本质.

现在,您可能想知道,矿工们为什么要牺牲时间和资源来开采比特币?好吧,事实证明他们有相当健康的经济动力:

当您发现一个区块时,您将获得12.5个比特币的区块奖励。奖励每210,000个方块减半.

挖出一个方块后,您便成为该方块的临时独裁者。您是负责将交易放入区块中的人,因此有权收取交易费用.

那里的比特币数量有限,确切地说是2100万。因此,是什么阻止了这些矿工一次挖出所有比特币?

事实证明,随着时间的推移,比特币的开采越来越难。此功能称为“难度”,随着您继续进行挖掘,挖掘的难度不断增加.

这就是为什么如今单身矿工仅使用他们的计算机来开采比特币几乎是不可能的原因。矿工现在已经联合起来,创建了“矿池”以将他们的计算能力集中在一起,并作为一个整体进行开采。这些池使用专门为挖掘比特币而创建的ASIC(专用集成电路).

战俘问题

工作量证明算法存在三个主要问题。之前我们已经详细讨论了这一点,所以我们将做一个概述。.

  • 能源浪费:比特币消耗的能量超过爱尔兰和斯洛伐克共和国。这种巨大的能源浪费是比特币的原理之一。为了浪费而浪费.
  • 集权:正如我们已经告诉您的,比特币使用ASIC进行采矿。这样做的问题是ASIC昂贵,并且拥有更多资金的资金池往往拥有更多的ASIC,因此,挖矿能力也更高。因此,比特币并没有像它想要的那样分散.
  • 可扩展性:POW的体系结构阻止了可伸缩性。比特币每秒仅管理7笔交易。对于现代金融系统来说,这根本不够用.

输入嫩薄荷

因此,为了解决工作量证明共识系统的许多问题,计算机科学与系统工程专业的毕业生Jae Kwon创建了Tendermint。 Tendermint是纯粹基于BFT的协议,以无权限设置构建,并以权益证明(PoS)作为底层安全机制.

由于复杂性,Tendermint花了将近4年的时间才能完成.

Jae Kwon和Tendermint首席技术官Ethan Buchman受Raft和PBFT的启发,创建了一个共识系统,该系统可以满足拜占庭将军的问题. 它是

“建模为确定性协议,在部分同步下运行,这可以在网络和各个进程本身的延迟范围内实现吞吐量。”

好吧,我们知道有很多复杂的词语可以相提并论,但是为了理解Tendermint共识是什么,以及为什么以它的设计方式进行设计,您需要了解其中一些复杂术语的含义。您将看到它们如何像复杂的拼图一样彼此链接.

#1 FLP不可能

FLP(菲舍尔·林奇·帕特森)不可能状态指出,共识算法只能具有以下3个属性中的2个:

  • 安全
  • 保证解雇或活跃
  • 容错能力

薄荷的终极指南

图片来源: 中等的

换句话说,FLP不可能 状态

“如果要对至少一个故障具有弹性,那么在异步分布式系统中,终止和协议(活动性和安全性)都无法以时间限制的方式满足(它们证明了它们对一般容错的结果,这比拜占庭式故障要弱容忍,因为它只需要一个故障停止节点-因此BFT包含在FLP不可能声明中)。

因此,基本上,异步WAN几乎不可能达成共识,因为节点没有特定时间来接收,处理和响应消息。这显然是一个大问题,因为对于像比特币这样的大型节点网络,假设它们将要同步是极其不切实际的.

好的,同步性将成为一个问题。但是,研究人员Dwork,Lynch和Stockmeyers在这里用他们的论文“存在部分同步的共识.这被称为DLS共识.

#2 DLS共识和部分同步

DLS论文指出,在同步系统和异步系统之间,存在一个“部分同步”的特殊系统。由于此部分同步系统可以给定上限时间,因此将能够设计可行的BFT协议.

根据DLS的说法,设计协议的真正挑战是使协议在部分同步的系统中正常工作.

因此,让我们看看比特币和以太坊等流行的去中心化协议在这方面如何工作.

比特币的已知上限大约为10分钟。因此,每10分钟产生一次交易。此时序假设被强加在网络上,以便节点有10分钟的完整时间来收集信息并通过八卦传送信息.

什么是状态机?

另一方面,我们有以太坊,通过将上块的时间保持在15秒来对它们的块和网络进行同步假设。在如此低的阻塞时间下,它们比比特币更具可扩展性,但是,它们实际上并没有那么高效。以太坊矿工产生很多孤儿区块.

#3活力与终结

终止是一个属性,它指出每个正确的处理器最终都应做出决定。我们现在拥有的大多数共识算法都依靠同步模型来确保其安全性和终止性。它们具有已知的固定范围和规则,因此,如果不坚持,链条会分叉成多个协议

当然,存在在异步网络中可用的共识协议,但是按照FLP不可能定理,它们不能是确定性的。带我们去….

#4确定性与非确定性协议

通常,纯异步共识协议依赖于不确定性成员(例如Oracle),这涉及高度的不确定性和复杂性.

那么Tendermint如何处理所有这些因素?

Tendermint是一种大多数异步的,确定性的BFT共识,其中验证者有赌注,表明他们的投票权。在FLP不可能三角图中,与活动相比,它更喜欢容错和安全性(一致性).

嫩薄荷在同步和异步之间不断摆动。这意味着,尽管进度取决于进度假设,但进度的速度并不取决于系统参数,而是取决于实际的网络速度.

另外,如果少于1/3的验证器损坏/粗心大意,Tendermint绝不会在存在异步的情况下分叉。这就是Tendermint具有拜占庭式容错能力的原因。就像我们之前说过的,Tendermint专注于安全而不是活泼。因此,如果超过三分之一的验证器是恶意的,而不是网络伪造的,Tendermint区块链将只是暂时停止,直到更多的2/3验证器达成共识.

Tendermint也是完全确定性的,协议中没有随机性。通过定义的数学函数,系统中的所有领导者均以确定性版本进行选举。因此,我们实际上可以在数学上证明该系统的行为符合其应有的行为方式.

Tendermint –权益证明系统

在权益证明(POS)系统中,我们有某些人称为“验证者”。这些验证器锁定了系统内部的股份。在那之后,他们有责任押注他们认为将被添加到区块链旁边的区块。当添加区块时,他们将获得与其所成比例的奖励.

好的,这就是通用POS的工作方式。现在,让我们研究一下薄荷的工作原理.

首先让我们熟悉将要使用的一些术语:

  • 网络由许多节点组成。连接到特定节点的节点称为其对等节点.
  • 共识过程在特定的块高H处进行。确定下一个块的过程包括多轮.
  • 该回合包含许多状态,它们是:NewHeight,Propose,Prevote,Precommit和Commit。每个状态都称为“循环”或“步调”.
  • 据说节点处于给定的高度,圆形和台阶处,或者位于(H,R,S)处,或者简称为(H,R)以省略台阶.
  • 投票或预提交某事意味着广播某票的预投票或预提交表决.
  • 当一个障碍得到 >在(H,R)处有2/3的投票,这被称为锁证明变更或PoLC.

什么是状态机?

可以这么说,状态机是Tendermint协议的引擎。下图为您提供了一个很好的外观:

什么是状态机?

好的,这是怎么回事?

还记得每个回合经过的状态吗? NewHeight,Propose,Prevote,Precommit和Commit.

其中,“提议,投票,预提交”由一个回合组成,而其他两个则是特殊回合。在理想情况下,状态转换将像这样:

新高度 -> (提出 -> 预选 -> 预先提交)+ -> 犯罪 -> 新高度 ->…

但是,这可能并不总是有效。在提交该块之前,可能需要进行多次回合。以下是可能需要进行多次回合的原因:

  • 指定的提议者可能缺席.
  • 建议的区块可能无效.
  • 阻止没有及时传播.
  • >验证者节点未及时收到2/3的投票.
  • 即使要进行下一步也需要+2/3的投票,但至少有一个验证者可能对其他内容投票或恶意投票。.
  • >即使可能已收到预投票,也未收到该区块的2/3的预提交.

每个状态期间会发生什么?

好吧…现在让我们研究每个州,看看整个事情是如何融合在一起的.

提出

在这一阶段,指定的提议者,即所选择的节点提议要在(H,R)处添加的块。此阶段以以下两种方式之一结束:

提案被提出,进入预选阶段.

提议者选择区块的时间到期,无论如何进入预投票阶段.

预选

现在我们进入投票阶段。在此阶段,每个验证者都需要做出决定.

  • 如果验证者以某种方式将其锁定在上一轮的提议区块上,他们会自动注销并广播该区块.
  • 如果验证者收到了当前回合可接受的提议,则他们签名并广播该提议区块的预选票.
  • 但是,如果他们发现提案中有问题或根本没有收到任何提案(例如,如果提案者的时间用完了),那么他们会以“零”的投票方式签字.
  • 在此阶段没有块锁定发生.
  • 在此期间,所有节点都通过八卦协议在整个系统中传播选票.

预先提交

现在,我们进入称为“预提交”的“回合”的最后一步。进入此阶段后,验证者将通过广播自己的投票来预先作出决定。可能会发生以下三种情况之一:

  • 如果验证者收到 >对于特定的可接受块,有2/3的投票,然后验证器签字并向块广播其预提交。他们也被锁定在那个块上。一位验证者一次只能锁定一个区块.
  • 但是,如果验证者收到的NUL预选票超过2/3,则他们解锁并预提交转向“ NIL”.
  • 最后,如果他们根本没有获得2/3的超级多数,那么他们就不会签名或锁定任何内容.

在整个阶段中,节点会不断地在整个网络中谈论预提交问题.

最后,如果提议的块获得了超过2/3的预提交,那么我们将进入“提交”步骤。但是,如果他们没有达到那个阶段,那么他们将进入下一轮的“提议”阶段.

犯罪

提交状态不是“回合”的一部分。与NewHeight一起,它是两个特殊回合之一。在提交状态期间,将检查两个并行条件以查看它们是否得到满足.

  • 首先,验证者必须接收网络已预先提交的块。完成后,他们签收并广播其承诺.
  • 其次,他们必须等待,直到收到至少2/3的块预提交.

    完成后,该块将提交到网络.

新高度

只需将块高度增加1即可显示已添加块.

选择验证器

正如您现在可能已经了解的那样,选择初始的验证器集对于Cosmos起作用至关重要。因此,如何准确选择它们?

不同于任何人都可以随时成为矿工的比特币,Tendermint系统只能接受这么多的验证器。由于验证器需要单独执行很多功能,因此增加验证器的数量只会导致延迟.

这就是为什么Cosmos决定在创世日(即筹款日)选择100个验证人的原因。验证人的数量每年将增加13%,直到10年后(确定为300个).

薄荷的终极指南

那么结果如何?

正如宇宙白皮书所述:

“ Tendermint具有出色的性能。在分布于五大洲7个数据中心的64个节点的基准中,在商品云实例中,Tendermint共识可以每秒处理数千个事务,而提交延迟为一到两秒。值得注意的是,即使在严酷的对抗条件下,验证器崩溃或传播恶意制作的选票,也能保持每秒处理超过一千笔交易。”

下图支持上述索赔:

卡斯珀vs薄荷

与Tendermint一起,Casper是POS协议的另一种流行实现.

尽管Tendermint专注于安全性,但Casper的重点是活泼,而FLP则不可能。所以,卡斯珀在叉子期间会发生什么?

Casper FFG将允许继续构建区块链,同时具有所有节点将意识到该链未最终确定的特性。因此,区块链可以保持可用性而没有任何终结性。验证器链可以选择移至分叉链。如果超过2/3的验证者投票,则他们切换链.

另外,Casper具有著名的削减机制。任何形式的恶意攻击都会导致验证者立即削减其股份.

投标结论

所以你有它。希望我们能为您提供尽可能多的有价值的信息。您如何看待Tendermint及其潜力?在下面的评论部分关闭!

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me