2017-07-22

3.共识算法(DPOS)

EOS.IO软件架构中采用目前为止唯一能够复合上述性能要求的区块链共识算(DPOS)。根据这种算法,全网持有代币的人可以通过投票系统来选择区块生产者,一旦当选任何人都可以参与区块的生产。

DPOS:共识算法?全网持币的人可以票选区块生产者,当选人可以参与区块生产?为什么?

EOS.IO里预计每3秒生产一个区块。任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该块。

3秒一块,出不来做费。

EOS.IO架构中区块产生是以21个区块为一个周期。在每个出块周期开始时,21个区块生产者会被投票选出。前20名出块者首选自动选出,第21个出块者按所得投票数目对应概率选出。所选择的生产者会根据从块时间导出的伪随机数进行混合。以便保证出块者之间的连接尽量平衡。

EOS架构中21个区块为一个周期。开始就票选区块生产者,前20名自动选出,第21名按票数对应概率选出。生产者根据区块导出时间的伪随机数进行混合,保证出块者之间的连接平衡。复杂好?!

如果出块者错过了一个块,并且在最近24小时内没有产生任何块,则这个出块者将被删除。这确保了网络的顺利运行。

不是3秒就一块吗?24小时会出多少块啊,没有任何产出,这不是怠工吗?删除保证网络运行。

在正常情况下,DPOS块链不会经历任何叉,因为块生产者合作生产区块而不是竞争。如果有区块分叉,共识将自动切换到最长的链条。具有更多生产者的区块链长度将比具有较少生产者的区块链增长速度更快。此外,没有块生产者应该同时在两个区块链分叉上生产块。如果一个块生产者发现这么做了,就可能被投票出局。

合作而不是竞争,区块分叉,共识将自动切换到最长的链条。如果块生产者同时在两个链分叉上生产块,可能投票被出局。

交易确认

由DPOS共识算法维护的区块链一般出块者都是100%在线的。这就是说一个交易平均1.5秒后,会被写入区块链中,同时被所有出块节点知晓这笔交易。这就意味着只需要1.5秒,一笔交易可以认定为99.9%被区块链接收了。

票选的当然都会在线,一个交易平均1.5秒后被写入区块链,同时进行广播,1.5秒一笔交易就99.9%被区块链接受了。

有一些非常情况下例如,软件bug,Internet拥塞或恶意出块者出现,区块链可能出现分叉。为了确保一个交易是不可逆转的,可以等待15个区块确认。根据EOS.IO软件的配置,在正常情况下15个区块确认平均需要45秒。

意外情况下区块链可能分叉,为了保证一个交易是不可逆转的,可以等待15个区块确认。根据软件配置,45秒会确认成功。

在分叉产生的9秒钟内,出块节点就可能发现这个分叉可能并警告用户。一个节点观察网络的时候如果发现连续2次的丢块事件,这意味着改节点由95%可能性在区块链的分叉分支上。有出现3个连续的丢块以后,该节点有99%的可能性在一条分叉出来的区块链上。可以生成一个预测模型,它将利用节点丢失的信息,最近的参与率以及其他因素来快速地警告用户出现什么问题。

分叉发生的9秒内,出块节点就会发出警告。一个节点观察网络的时候,如果连续丢失2块、3块区块,那么该节点分别有95%、99%在分叉的区块链上。

对这种警告的反应完全取决于业务交易的性质,但最简单的反应是等待15/21确认,直到警告停止。

还有警告机制:15/21

交易证明(TaPoS)

EOS.IO软件要求每个交易都包括最近的区块头的哈西。 这个哈希有两个目的:

1.防止分叉区块链上出现大量交易记录;

2.使得系统能感知到用户是否在分叉出来的区块链上

随着时间的推移,所有用户最终直接确认块链,这使得难以伪造假冒链,因为假冒将无法从合法链路迁移交易。

太难了,理解不了。

你可能感兴趣的:(2017-07-22)