Tendermint: 共识概览

Tendermint 是一个易于理解,大部分操作为异步的 BFT 共识协议。下图是一个简单的状态机,它展示了协议遵循的规则:

Tendermint

协议中的参与者叫着 “验证人”(validator)。他们轮流对交易区块进行提议,并对这些区块进行投票。区块会被提交到链上,每一个块占据一个“高度”(height)。提交块可能会失败,如果失败,协议就会开始下一轮的提交,并且一个新的验证人会继续提交那个高度的区块。要想成功提交一个块,需要有两个阶段的投票:“预投票”(pre-vote)和“预提交”(pre-commit)。在同一轮提交中,只有超过 2/3 的验证人对同一个块进行了预提交,这个块才能被提交到链上。

上图右下角有一对夫妇在跳波卡舞,因为验证人做的事情就像是在跳波卡舞。当超过 2/3 的验证人对同一个块进行了预投票,我们就把它叫做一个“波卡”(polka)。每一个预提交都必须被同一轮中的一个波卡所证明。

由于一些原因,验证人可能在提交一个块时失败:当前提议者可能离线了,或者网络非常慢。Tendermint 允许他们证实一个验证人应该被跳过。在进行下一轮的投票前,验证人会等待一小段时间从提议者那里接收一个完整的提议块。这种对于超时的依赖,使得 Tendermint 成为了一个弱同步协议,而非一个异步协议。但是,协议的剩余部分都是异步的,只有在接收到超过 2/3 的验证人集合时,验证人才会采取下一步操作。Tendermint 能够简化的一个原因就是它使用了同样的机制来提交一个块和跳过直接进入下一轮。

基于不到 1/3 的验证人是拜占庭节点的前提,Tendermint 保证了永远都不会违背其安全性 -- 也就是说,验证人永远不会在同一高度提交冲突块。为了达到这一点,它引入了一些 “锁定”(locking)的规则,这些规则对流程图中的路径进行了模块化。一旦一个验证人预提交了一个块,它就被“锁定”在了那个块上。然后,

  1. 它必须为被锁定的那个块进行预投票
  2. 只有在之后的轮中,有了那个块的一个波卡,它才能够解锁,并为一个新块进行预提交。

Stake

在许多系统中,并非所有的验证人都在共识协议有着同样的“高度”(height)。因此,我们对 1/3 还是 2/3 的验证人并不十分感兴趣,而是关心在所有投票力量所占的比例,在个体验证人中,这些比例可能并不是均匀分布的。

由于 Tendermint 可以复制任意的应用程序,定义一种货币,并用该货币来计算投票权力是完全有可能的。当使用货币决定投票权时,这个系统通常叫做权益证明(Proof-of-Stake)系统。通过应用逻辑,可以将验证人的货币持有强制绑定到一个押金账户中。如果他们被发现在共识协议中表现不端,这些钱就会被销毁。这就给协议的安全性增加了一个经济因素,能够让人们量化违反共识假设的成本,这个假设就是只有不到 1/3 的投票权来自拜占庭节点。

Cosmos Network 的设计目的,是在 实现为 ABCI 应用的加密货币中使用这个权益证明机制。

本文译自:Consensus Overview

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏尚国

数字货币钱包安全白皮书

区块链技术的迅速发展,使得数字货币渐渐走入的大众的视线,在2017年底,这股热潮达到顶峰,直接搅动着金融市场与科技市场,大量的数字货币交易流水催生了数字钱包开发...

1393
来自专栏漏斗社区

专属|Spectre漏洞诞生新变体

又到了熬夜看球喝啤酒的快乐日子了!昨晚,有多少小伙们跟斗哥一样,顶着黑眼圈看完了世界杯首场比赛!

1424
来自专栏维恩的派VNPIE

广州线下活动内容分享

vn.py的创始人‘用python的交易员’在周六举办了广州线下活动,在本次活动中主要分享了vn.py框架部署方案和数字货币量化交易两部分的内容。

1663
来自专栏FreeBuf

两小时卷走13000美金!MyEtherWallet DNS劫持事件深度分析

Myetherwallet,是目前最受欢迎的以太坊钱包。4月24日发生的一连串事故,让很多用户在一脸懵逼中钱包被清空,两个小时的时间里,黑客卷走至少13000美...

1832
来自专栏FreeBuf

数字货币钱包安全白皮书

近期,我们对应用市场上流通的热钱包以及冷钱包进行了相关安全审核评估,发现了很多安全问题,360信息安全部依靠通过对各类攻击威胁的深入分析及多年的安全大数据积累,...

1153
来自专栏区块链技术指北

「译」保护你的个人资产

1、购买 Ledger 或者 TREZOR 硬件钱包。 存储 ETH、代币、ETC、BTC 和其他虚拟货币最安全最便捷的方式之一就是使用 Ledger Nano...

3167
来自专栏FreeBuf

Linux应急故事之四两拨千斤:黑客一个小小玩法,如何看瞎双眼

某日,深信服刘同学,一位办事处拥有多年应急经验的老手,像往常一样忙碌而娴熟的处理所在区域的各种安全应急事件。突然,某客户求助,称深信服的安全感知产品检测到了异常...

1491
来自专栏区块链百科,区块链行业报告

分片技术(Sharding):化整为零,分而治之

目前的区块练技术面临着一个巨大的瓶颈,那就是:如何有效地提升区块的吞吐量(TPS)。

1592
来自专栏区块链技术指北

区块链资产安全攻略

这是「区块链技术指北」的第 8 篇文章。 如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我会把...

4379
来自专栏安智客

安全芯片密码检测、密码模块安全检测、与等保2.0

前面我们知道GM/T 0008-2012《安全芯片密码检测准则》将安全芯片密码等级分为3个等级! 而在GM/T 0028-2015《密码模块安全技术要求》和GM...

4695

扫码关注云+社区

领取腾讯云代金券