读EOS白皮书
2018-11-28 本文已影响0人
liuchungui
最近,遇到EOS中执行的transaction后,有可能不会被确认,造成丢失,然后链上的数据发生变化。这个,不是很理解。于是想到了找EOS白皮书看下,看看是否有助于理解。
1、EOS采用的共识算法(DPOS)
(1)EOS中每3秒生成一个块,并且在任何时间点都只有一个被授权的生产者来生成区块。
(2)EOS中,区块通过21名生产者轮流生产,也就是我们所说的21个超级节点。
(3)每一轮,会选出一个唯一生产者来产生区块
(4)被选中的生产者通过从区块取到的时间作为伪随机数来打乱其顺序。打乱顺序是为确保这些生产者与其他生产者保持均衡的流通性。
(5)如果一个生产者错过了一个区块并且在过去24小时没有生产任何的区块,那么它将被从候选中移除,直到它在区块链中通知它要开始再次生产区块的意图。
(6)DPOS区块链一般不会经历任何的分叉,因为它是通过合作而非竞争的方式生产区块。如果出现分叉,共识也将自动切换到最长的链上。
2、交易确认
(1)一个交易从广播开始后,平均1.5秒就可以99.9%被认为是确认了。
(2)一个交易若是得到21个区块生产者中15个给出确认,则这个交易是不可逆的。
(3)在分叉开始的 9 秒内,一个节点就可以警告用户他们极可能正处于分叉中。 在连续丢失 2 个区块后,有 95% 的概率可以确认一个节点处于分叉中。 在连续丢失 3 个区块后就有 99% 的概率确认。
3、股权证明的交易(TaPos)
EOS中需要每一个交易包含最近一个区块头的哈希值。
- 防止不包含区块引用的交易在分叉时重放发生;
- 通知网络对应的用户和他们的股份当前在某个具体的分叉上。
4、账户
账户的长度在2到32个字符之间