新手教程 EOS 技术白皮书 2.0 之加入拜占庭容错的 DPOS

lome · April 05, 2018 · Last by dnbstarz replied at August 22, 2018 · 16971 hits

一致性算法(BFT-DPOS)

EOS.IO 软件利用唯一已知的分散式一致性算法,该算法被证明能够满足区块链上应用程序的性能要求关于 DOPS。在这种算法下,那些在采用 EOS.IO 软件的区块链上持有令牌的人可以通过持续的批准投票系统选择区块生产者。任何人都可以选择参与块生产,并有机会生产块,只要他们可以说服代币持有人投票给他们。

EOS.IO 软件能够精确的每 0.5 秒生成一个块,并且只有一个生产者有权在任何给定的时间点生成一个块。如果在预定时间没有生成块,则跳过该时间段的块。当跳过一个或多个块时,区块链中会出现 0.5 秒或更多秒的间隔。

使用 EOS.IO 软件,块以 126 个/轮次(每个生产者 6 个,21 个生产者)生产。在每轮的开始,21 个独特的区块生产者优先选择由代币持有者投票。选定的生产者按照 15 个或更多生产者约定的顺序安排。

如果生产者错过了一个区块,并且在过去 24 小时内没有产生任何区块,则他们将被移除,直到他们通知区块链他们打算再次开始生产区块为止。这可以确保网络平稳运行,最大限度地减少由于未被证明不可靠的块生产者而造成的错误数量。

在正常情况下,DPOS 区块链不会遇到任何分叉,因为区块生产者不会竞争,而是合作生产区块。如果有分叉,共识将自动切换到最长的链条。这种方法是有效的,因为块添加到区块链分叉的速率与共享相同共识的区块生产者的百分比直接相关。换句话说,拥有更多生产者的区块链分支的生长速度要比拥有更少生产者的区块链更快,因为拥有更多生产者的分叉会遇到更少的缺失区块。

此外,没有块生产者能够在两个分叉上同时生产块。这样做的块生产者可能会被投票出局。这种双重制作的密码证据也可用于自动删除滥用者。

通过允许所有生产者签署所有块,拜占庭容错被添加到传统 DPOS 中,只要没有生产者签署具有相同时间戳或相同块高度的两个块。一旦 15 个生产者签署了一个区块,该区块被认为是不可逆转的。任何拜占庭式的生产者都必须通过以相同的时间戳或签名签署两个块来产生他们背叛的密码证据。在这种模式下,不可逆转的共识应该在 1 秒内达成。

交易确认

典型的 DPOS 区块链有 100%的区块生产者参与。在广播时间平均 0.25 秒后,交易可以被认为以 99.9%的确定性得到确认。

除了 DPOS,EOS.IO 还添加了异步拜占庭容错(aBFT),以加快实现不可逆转性。 aBFT 算法在 1 秒内提供 100%的不可逆性确认。

交易作为证明凭证(TaPoS)

EOS.IO 软件要求每个事务都包含最近块标题的部分散列。这个散列有两个目的:

1.阻止重放不包含引用块的分叉上的事务;
2.向网络表明特定用户及其股权在特定分支上。

随着时间的推移,所有用户最终都会直接确认区块链,这使得伪造伪造链变得困难,因为伪造者无法将合法链中的交易迁移。

解读

不可改变性是 BFT 机制的基本要求, 而且 BFT 的性能只受网络通信延迟的限制,和节点数量的限制.EOS 的节点数量有明显的优势,而网络通信延迟对于 EOS 的 21 个节点来说更是非常的小.如果在没有拜占庭节点的情况下,BFT 的性能将更加的高.而 EOS 全节点可信是非常容易做到的.而 n/3 的拜占庭节点,将不能达成共识,而 EOS 的确认区块的生产者也降为 15 个,这不仅保证了一致性,还加快了快的确认速度.

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up