新闻开发人员企业区块链解释事件和会议新闻时事通讯
订阅我们的新闻.
电子邮件地址
我们尊重您的隐私
主页博客企业区块链
企业扩展共识:解释IBFT算法
伊斯坦布尔拜占庭式容错(IBFT)如何提高私有以太坊网络的确定性并提高吞吐量。作者ConsenSys 2018年6月22日发布于2018年6月22日
共识算法是区块链的核心创新之一,但也是最令人困惑的问题之一。中本聪(Satoshi Nakamoto)创建了一个工作证明(PoW)版本,该版本被实现为同时保护和验证比特币交易的一种手段。区块链社区建立在这一核心愿景的基础上,以创建权益证明(PoS),授权证明(PoA),PBFT(实用拜占庭容错)以及其他许多旨在在分布式基础上达成共识的字母汤系统,创造了使区块链如此有价值的单一事实来源.
IBFT(伊斯坦布尔拜占庭容错)是一种共识机制,可以替代以太坊网络中的工作量证明。像其他算法一样,IBFT确保对区块链中的交易进行单一的,商定的排序,并为企业带来更多好处,包括结算的确定性。 IBFT原为 首先由Amis Technologies在Geth实施, 在Quorum中实施后不久.
在开始使用IBFT共识机制之前,值得一提的是何时以及为什么要使用IBFT。在公共区块链中,简短的答案很可能您可能不会。但是当涉及到财团或私有区块链时,IBFT开始显得很有吸引力.
PoW算法在硬件和电力方面都非常昂贵。此成本是有意为之的,目的是防止任何人轻易接管网络,因此PoW非常适合完全分散的情况(任何人(包括攻击者)都可以参与)。但是,企业使用的财团/私有链中的节点本质上比公共链中的节点更受信任。这样,PoW共识机制可能会负担过多,而其他机制可能会提供“足够”的信任来运行分布式系统.
同样,股权证明可能与企业关系不大,因为在许可的网络中,为天然气付费并不重要。由于节点不需要(不必)维护网络中的货币,因此PoS会引入额外的要求.
考虑到这些折衷,授权证明(PoA)成为一种可能的最佳解决方案,它利用一种系统,通过使用轮询或其他任意系统,为网络中的节点分配了为链生成新块的特权.
IBFT是PoA的众多形式之一,具有以下优点:
- 立即块确定性. 在给定的链高下,仅提议1个街区。这样,单条链就消除了分叉,叔叔的封锁,并消除了稍后可能在链上一次“撤消”交易的风险.
- 减少块之间的时间. 显着减少了构建和验证区块所需的工作量(尤其是在PoW方面),从而极大地提高了链的吞吐量.
- 高度的数据完整性和容错能力. IBFT使用一组验证器来确保所提议的每个块的完整性。这些验证程序中,绝大多数(〜66%)需要在插入链之前对块进行签名,这使得块伪造非常困难。该组的“领导力”也随着时间而轮换-确保故障节点不会对链产生长期影响.
- 操作灵活. 验证者组可以及时修改,确保该组仅包含完全信任的节点.
在这里,我们以非技术性术语概述了IBFT。对于IBFT的一些原始建议,您可以在GitHub上查看EIP:
- IBFT文档: https://github.com/ethereum/EIPs/issues/650
- Quorum中使用的代码: https://github.com/jpmorganchase/quorum
在本文的其余部分,我们将探讨IBFT的更多技术方面的考虑,讨论在EIP中发现的许多概念,以及我们通过自己的研究中学到的概念.
注意:IBFT代码也可以在以太坊请求请求#16385中找到.
手术
IBFT共识机制包括以下组件:
- 一种 PBFT 启发性群体共识模型.
- 可以从验证组中添加/删除成员的过程.
IBFT要求(巧妙地)修改数据块头以支持该功能的所有方面.
群体共识模型
概述
IBFT使用在以太坊网络上运行的验证节点池(Validators)来确定提议的区块是否适合添加到链中.
验证者的一个节点被任意选择为提议者,并负责以块间隔构建一个块,并与组共享该块。如果绝大多数验证者认为该区块有效,则将其添加到区块链中.
在共识回合完成后,验证者可以选择一个新的提议者,该提议者将负责在下一个区块间隔提供候选区块.
共识机制是一种同步状态机,它负责确保所有验证器将相同的块以相同的高度附加到链上.
如果无法插入块,则更改提议者,然后重新开始该过程.
为了确保状态机只能附加一个块,一旦大量验证者同意插入(但未执行上述工作),IBFT就会阻止更改建议的块,此过程称为“块锁定”.
IBFT共识机制可提供系统稳定性,前提是少于1/3的验证节点行为不正确(由于受到破坏或由于错误的代码)。 IE。为了容忍F个故障节点,验证组必须至少包含3F + 1个节点(超过此数量不会增加系统完整性).
注意:此处F表示系统可容忍的故障节点数.
状态机
状态
- 等待提案. 验证者正在等待当前提议者提供的新块。如果验证者是此轮的提议者,则他们准备提议的块并在预准备消息中发送.
- 准备中. 收到了(有效的)建议区块并通知了验证者对等方;现在正在等待验证者对等方通知他们接受该区块.
- 准备好. 已收到验证者对等方对阻止的接受,并正在等待他们处于类似的位置。在此阶段,建议的块已被“锁定”,并且只有在尝试插入后才能被替换。.
- 轮换. 在达成共识或该区块无法插入之前,该回合已超时。等待所有验证者就下一轮编号达成一致.
转场
- 一种等待中的提案→准备中. 从提议者接收到新的块(Preprepare消息)后(即该块的内容有效,其提议的链插入点也是如此).
- 等待提案→轮次变更. 根据给定的规则集,收到的提案不是有效的区块(例如无效的提案者,不正确的回合编号).
- 准备→准备. 在收到来自验证者对等方的2F + 1通知(准备消息)后,表明建议的块适合插入.
- 准备就绪→等待提案. 在收到来自验证者对等方的2F + 1通知(Commit消息)时,表明它们已准备好将块附加到链中。过渡时,执行将块附加到链的过程(成功).
- 准备就绪→轮换. 根据准备->等待提案,但是,块插入失败.
- 轮次变更→等待提案. 验证人的2F + 1同意使用的下一轮号码.
注意:所有转换为“ RoundChange”的结果都会导致验证器向其验证者对等方发送“ RoundChange”消息.
块锁定
IBFT要求不得创建分叉。为此,一旦大多数人同意了某个区块(即进入“就绪”状态),该区块便会“锁定”.
这意味着在尝试将该块添加到链中之前,不会考虑插入其他块。因此,要么成功插入了该块(一旦在本轮或后续回合中接收到足够的提交消息),要么将该块插入失败,将其丢弃,并在当前链高处建议一个新块.
验证组成员身份
验证组的成员可能会通过投票机制随时间变化。成员可以通过多数票(Floor(N / 2)+1)来添加或删除;每个投票都记录在块标题中.
网络中的每个节点(包括非验证节点)负责跟踪每个验证者的投票计数,以确定当前的验证者,并确保开采区块上的签名落在预期的组内.
鉴于每个表决都包含在块标题中,因此只有给定回合的提议者才能进行表决。因此,重要的是,如果要及时添加/删除节点,则定期更新投标者角色.
节点获得多数票后,他们立即加入/离开验证者组.
IBFT认识到“投票时代”,它定义了一个点,在该点上,所有尚未达到多数票的选票都将被删除,从而迫使重新开始计票。这意味着在计票时,验证人仅需要从最近的纪元开始。默认情况下,投票时代每30,000块发生一次.
投票定义状态更改(即候选人被投票,验证者被投票),未投票给定节点意味着验证者不希望节点更改状态(不需要显式投票即可维持现状).
块头重构
为了在以太坊中支持IBFT,必须对块头进行许多更改。这些更改包括:
- 受益人:标识要对其投票的节点.
- 随机数:指定投票“方向” — AUTH或DROP.
- mixHash:固定的幻数,标识此块已通过IBFT验证.
- ommersHash:必须为空集的哈希,因为在IBFT下操作时没有ommer块.
- 时间戳记:必须至少是父块的时间戳记+块间隔.
- 难度:必须填充0x0000000000000001.
- extraData:包含IBFT特定数据,包括验证者地址列表,ProposerSeal(标识提议者),CommittingSeals(在此区块上报告为“ commit”的验证者列表).
由于每个验证者的CommittingSeals列表是(可能)不同的,因此重要的是,块散列中不包含此信息-即,即使两个块具有不同的CommittingSeals字段,它们也表示相同的信息(即交易等是相同的).
结论
最后,IBFT是拜占庭式容错解决方案,可立即完成交易,从而减少了PoW所需的基础架构.
虽然不太可能在以太坊主网上使用(参与参与者的范围更广,未知),但当在验证者池值得信赖并负责的私有链上使用时,它会带来巨大的好处;它为具有固定节奏和可预测事务处理速率的链提供了理想的解决方案.
本文探讨的过程使人相信,使用IBFT的网络将能够容忍拜占庭式节点,并且如果看到这些节点在网络上施加了控制权,则可以将其恢复。.
订阅我们的时事通讯以获取最新的以太坊新闻,企业解决方案,开发人员资源等信息。指导
区块链业务网络完整指南
网络研讨会
令牌化简介
网络研讨会
金融的未来:数字资产和DeFi
网络研讨会
什么是企业以太坊?
白皮书
中央银行与货币的未来
案例梭哈