什么是Tendermint Core?..
Cosmos是最有前途的项目之一。像Jae Kwon和Ethan Buchman这样的人在他们的团队中,它有很大的潜力。Tendermint Core的核心和灵魂。
Tendermint Core结合了Tendermint一致性算法和p2p八卦协议。因此,当您将所有内容放在软件堆栈中时,您将获得Tendermint Core以及Cosmos-SDK应用程序层。
无论如何,所以在我们进一步讨论之前,让我们来看看为什么Tendermint是这样的必需品。
比特币和区块链
当Satoshi Nakamoto创建比特币时,他制作了第一个分散式加密系统。关于这一发现的真正了不起的部分是他能够解决拜占庭将军的问题,这有助于广域网(WAN)在无信任的环境中达成共识。比特币使用工作量证明算法来处理他们的共识。
话虽如此,比特币的主要贡献很可能是它将整个世界引入区块链技术。
用最简单的术语来说,区块链是一组带时间戳的数据不可变记录系列,由一组不属于任何单个实体的计算机管理。这些数据块(即块)中的每一个都是使用加密原理(即链)来保护并彼此绑定的。
换句话说,区块链是在不一定相互信任的节点上复制的确定性状态机。
通过确定性,我们的意思是如果采取相同的具体步骤,那么它将总是导致相同的结果。
例如。1 + 2将始终为3。
那么,国家意味着什么?让我们来看看比特币和以太坊。
在比特币中,州是每个帐户的余额列表,这是未使用交易输出(UTXO)的列表。通过改变余额的交易修改此状态。
另一方面,在以太坊中,应用程序是运行智能合约的虚拟机。每个事务都通过以太坊虚拟机,并根据其中调用的特定智能合约修改状态。
如果你看一下区块链技术的架构,那么你将有三个特定的层:
网络:事务/信息在整个节点中的传播
共识:允许节点做出决策提供> 2/3节点是非恶意的
应用程序:负责在给定一组事务(即处理事务)的情况下更新状态。给定事务和状态,应用程序将返回新状态。
当前区块链架构存在的问题
事实证明,使用所有这3层从头开始构建区块链真的很难。因此,许多项目倾向于通过分支比特币代码库来构建。现在,虽然这确实节省了大量时间,但事实是他们仍然受到比特币协议限制的束缚。显然,当您使用以其吞吐量问题而闻名的协议时,您无法执行复杂的项目。
当以太坊发挥作用时,事情变得更好了。以太坊实际上为开发人员提供了一个平台,他们可以用它来创建自己的定制代码,即智能合约和项目。但是,与比特币一样,以太坊也会遇到同样的问题。它们都具有单片架构而不是模块化。
单片架构与模块化架构
单片架构意味着一切都是一体化的。当软件被认为是“单片”时,组件彼此互连且相互依赖,并且设计更加独立。在这种情况下,架构更加紧密耦合,并且必须存在相关组件才能执行或编译代码。
虽然这使得系统的创建更加强大,但您无法真正从中获取并创建自定义代码。它不是最灵活的系统。此外,该系统还存在另一个问题。如果需要更新程序的任何组件,则必须重新编写整个应用程序。这不是现在最理想的情况,是吗?
另一方面,我们有模块化架构。与单片机不同,这些层并不是彼此相连的。因此,虽然它可能不那么健壮,但通过使用不同的单独模块来更新整个应用程序非常容易。
由于模块是如此独立,因此模块化体系结构允许您实际更新特定部分,而不会对系统的其余部分造成无法预料的更改。在模块化程序中,迭代过程也更简单,而不是单片过程。
Tendermint的架构和目标
Tendermint采用模块化架构。他们的目标如下:
提供区块链的网络和共识层作为可以构建不同分散应用程序的平台
开发人员只需要担心区块链的应用层,从而节省他们浪费在共识和网络层上工作的所有时间。
Tendermint还包括Tendermint共识协议,该协议是Tendermint核心引擎中使用的拜占庭容错一致性算法
让我们来看看Tendermint的架构将如何看待:
如您所见,应用程序通过称为APCI或应用程序区块链接口的套接字协议连接到Tendermint Core。由于Tendermint Core和在其上运行的应用程序在单独的UNIX进程中运行,因此它们需要具有相互通信的方法。ABCI帮助这两者进行沟通。
那么,ABCI的设计是什么样的?ABCI将有一些不同的设计组件:
成对的请求和响应消息
在申请处理响应时,协商一致请求
它是使用protobuf定义的
共识引擎运行客户端
应用程序运行服务器
有两个正确的实现:异步原始字节和grpc
ABCI非常注重连接。Tendermint Core的三个连接如下:
Mempool连接:这将检查事务是否应在提交之前进行中继。它只能使用CheckTx
共识连接:此连接有助于执行已提交的事务。对于每个块,消息序列是BeginBlock,[DeliverTx,…],EndBlock,Commit
查询连接:帮助查询应用程序状态。此部分仅使用查询和信息
总而言之,Tendermint的主要目标是为开发人员提供一种既实用又具有高吞吐量的工具。以下是Tendermint的特性,使其如此诱人:
不同的项目有不同的需求。有些项目需要有一个开放的系统,任何人都可以加入并贡献,如以太坊。另一方面,我们有像医疗行业这样的组织,他们无法向几乎所有人公开他们的数据。对他们来说,他们需要像许可的区块链那样的东西。
好的,那么Tendermint如何帮助满足这些需求呢?请记住,Tendermint只处理区块链的网络和共识。所以,它有助于:
通过八卦协议在节点之间传播事务
帮助验证者就附加到区块链的交易集达成一致。
这意味着应用程序层可以以开发人员希望定义的任何方式自由定义。开发人员可以定义如何在生态系统中定义验证器集。
开发人员可以允许应用程序拥有一个选举系统,该系统根据这些验证器在生态系统中存放多少本机令牌来选择验证器…担保证明并创建公共区块链
此外,开发人员还可以创建一个应用程序,该应用程序定义一组受限制的预先批准的验证器,这些验证器负责协商一致以及进入生态系统的新节点。这被称为权威证明,是许可或私人区块链的标志。
通过Tendermint Core进行的应用程序可以获得出色的性能。Tendermint Core的阻止时间仅为1秒。它还可以处理250字节事务的每秒10,000个事务的事务量,只要应用程序允许它这样做。
什么是终结?
简单来说,这意味着一旦某个动作被执行,就无法收回。那么,我们以一个简单的金融交易为例。假设你在公司购买一些股票,只是因为他们的系统出现故障,你不应该失去股票的所有权。可以想象,终极性对于金融系统来说是至关重要的。想象一下,做了一百万美元的交易然后第二天,由于故障,该交易不再有效。
就像我们之前提到的那样,比特币和以太坊(直到完全实施Casper FFG)并没有真正具有结算终点。在发生硬盘或51%攻击时,交易有可能被恢复。
另一方面,Tendermint在交易完成后的1秒内即时终结。只要不到2/3的验证器是恶意的,就不会在系统中创建分支。一旦创建了一个块(在一秒钟内),用户就可以放心,他们的交易已经完成。
Tendermint是安全的,并迫使参与者对他们的行为负责。就像我们之前说过的那样,只要不到2/3的验证器是恶意的,就不会分开。如果在某些情况下,区块链会进行分叉,那么就有办法确定责任。此外,Tendermint的共识不仅是容错的,而且是最佳的拜占庭容错
Tendermint的另一个好处是它的用户友好性。正如我们之前提到的,它们具有模块化架构,其中应用层可以适当地定制。这使得现有区块链代码库可以通过ABCI轻松链接到Tendermint。一个完美的例子是Etheremint,它基本上是Tendermint上的以太坊虚拟机代码库插件。
Ethermint与以太坊完全一样,但也受益于我们上面列出的所有积极功能。Metamask和Truffle等所有以太坊工具都与Ethermint兼容。
Tendermint的股权证明实施比传统的工作证明共识算法更具可扩展性。主要原因是基于POW的系统无法进行分片。
分片基本上是水平分区数据库,并创建较小的数据库或分片,然后由节点并行执行。原因是强大的采矿池可以很容易地接管碎片。
Tendermint将允许实现分片,这将大大提高可扩展性。
Tendermint共识议定书
好的,让我们来看看Tendermint共识协议的工作原理。什么是共识协议?
这就是维基百科定义共识决策的方式:
“共识决策是一个群体决策过程,群体成员在这个过程中发展,并同意支持一个符合整体利益的决策。共识可以被专业地定义为可接受的解决方案,即使不是每个人的“最爱”,也可以得到支持。Merriam-Webster将“共识”定义为,首先是普遍协议,其次是团体对信仰或情感的团结。“
简而言之,共识是在一个群体中达成协议的动态方式。虽然投票只是为多数人统治而不考虑少数人的感情和幸福,但另一方面,达成共识可确保达成一项有利于整个集团的协议。从更加理想化的观点来看,共识可以被分散在世界各地的一群人用来创造一个更加平等和公平的社会。实现共识决策的方法称为“共识机制”。那么现在我们已经定义了什么是共识,让我们来看看共识机制的目标是什么(数据取自维基百科)。
协议寻求:识机制应该尽可能多地达成协议。
协作:所有参与者都应致力于共同努力,以实现最先发挥团队利益的结果。
合作社:所有参与者都不应该把自己的利益放在第一位,而不是以个人为团队。
参与性:共识机制应该是每个人都应该积极参与整个过程。
包容性:尽可能多的人应参与共识过程。它不应该像普通投票那样人们不喜欢投票,因为他们认为他们的投票从长远来看不会有任何影响。
平等主义:试图达成共识的团体应该尽可能地平等。这基本上意味着每一票都具有相同的权重。一个人的投票不能比另一个人更重要。
现在我们已经确定了共识机制是什么以及它们应该瞄准什么,我们需要考虑房间里的另一头大象。
哪些共识机制应该用于像区块链这样的实体。在比特币之前,有大量的点对点分散货币系统的迭代失败了,因为在达成共识时他们无法回答最大的问题。这个问题被称为“拜占庭将军问题”。
拜占庭将军的问题
为了在对等网络中完成任何事情,所有节点都应该能够达成共识。但事实上,为了使这个系统发挥作用,它强调了人们为了整个网络的最佳利益而采取行动。然而,正如我们已经知道的那样,当涉及以道德方式行事时,人们并不真正值得信赖。这就是拜占庭将军的问题所在。
想象一下这种情况。围绕着一座设防完好的城堡的军队。他们获胜的唯一方法就是他们作为一个整体攻击城堡。但是,他们面临着一个大问题。军队彼此相距甚远,将军们无法真正直接沟通和协调攻击,一些将军也是腐败的。他们唯一能做的就是将信使从普通人送到将军。然而,信使可能会发生很多事情。腐败的将军可以拦截信使并改变信息。那么,将军们可以做些什么来确保他们在不依赖每个将军的道德规范的情况下发起协同攻击呢?他们如何以无信任的方式达成共识,去做需要做的事情?
这就是拜占庭将军的问题,而中本聪通过使用工作证明(POW)共识机制解决了这个问题。
文章来源:www.v300.cn