【原创】一文知晓EOS技术白皮书第二版的更新内容
EOS第二版即将发布,但是仍然没有加入到master分支正式公布。
在这篇文章里,我会跟你一起看下, 在第二版白皮书中,EOS做了什么改变。
此前公布的白皮书,日期为2017年7月26日,第二版白皮书的更新日期为: 2018年的3月16日。
下文提到白皮书时候,我会用第一版与第二版来分别指代。
摘要的变化
关于性能,相比第一版中的斗志昂扬,第二版的表述要含蓄一些。
第一版中提到,EOS.IO的架构,会分布在数百个CPU或者集群(“hundred of CPU cores or clusters”)中,而第二版,则笼统的称,
会分布多个CPU或者集群(many of CPU cores or clusters)。
另外,第一版里面提到说EOS.IO的区块链架构设计,可以达到数百万TPS(blockchain architecture that scales to millions of transactions per second)。
第二版的表述,则相对委婉, 只是说,可能最终扩容到支持数百万TPS.(that may ultimately scale to millions of transactions per second).
共识机制: 从DPOS到BFT-DPOS
出块节点
-
出块时间从原先的3秒一个块,变成了0.5秒一个块。
-
原先是每一轮出块为21个块,即63秒,现在变成了:每一轮126个块(每个出块节点出6个块,一共21个节点,所以是126个). 但是由于出块时间变短,所以,每一轮仍然为63秒。
-
出块顺序,从原先第一版中提到的随机出块,变成了: 根据21个节点中15个节点达成共识的出块顺序安排来进行。
-
出块人的选择,不再区分为前20个和最后一个。而是,根据投票来决定21个节点。
-
BFT(Byzantine Fault Tolerance, 拜占庭容错算法)的加入,确保没有出块人不能够在同一区块高度或者同一时间戳时在两个区块签名。15个出块人签名后,区块就被认为不可撤销了。 在这一模式下,一秒钟内就可以达成不可撤销的共识。
交易的确定
- 在现有的机制下,广播之后0.25秒内,一笔交易就可以被认为具有99.9%的确定性了。而原先第一版白皮书的表述中,是需要经过1.5s。比原先的速度快了6倍。而在新的异步BFT(aBFT)的算法加入到DOS算法之后,只需要经过1s的时间,交易就可以具有100%的确定性。这一机制,BM有在一个视频里面解释。
TaPoS
相比第一版白皮书的设计,现在只需要将前一个区块区块头hash值的一部分加入到交易之中即可,不再需要hash的全部值。
账户
1. 账户名字,从232个字符的限制,变成了12个字符的上限限制。且只能够从15和a~z中取值。
2. 将所有的Message,替换为了Action. 可能是EOS.IO的团队觉得,Message的提法不很精确,不如action。那么, 译者觉得,Ian Grigg的那篇经典论文《The Message Is The Medium》,可以考虑改成: The Action Is The Medium.
区块结构的变更
1. 第一版白皮书中的区块结构为: Transaction ->
Receiver and Notified Accounts (parallel) -> Message -> Transaction -> Threads (parallel) -> Cycles -> Block
现在的结构变为:
Receiver and Notified Accounts (parallel) -> Action -> Transaction -> Shards (parallel) -> Cycles -> Region -> Block
主要的改变是,将Message改名为Action, 将Threads改为Shards, 并且,在Cycle与Block之间,加入了一层叫做Region.
2. 关于原子交易和顺序执行的问题,第二版白皮书中提到的解决方式如下:
如果需要进行原子交易,比如说一组动作需要传递给多个账户,会为这一组动作(Action)放在同一笔交易之中,而所有的账户会被制定在同一个shard之中,Action顺序则执行。
这部分我的理解不深,为免误导,还是请看原文:
Sometimes it is desirable to ensure that Actions are delivered to and accepted by multiple accounts atomically. In this case both Actions are placed in one transaction and both accounts will be assigned the same shard and the Actions applied sequentially.
社区福利应用,改为工作提议系统
将对社区提供福利的应用(Community Benefit Applications),改为了Worker Proposal System.
除了类别的改变之外,白皮书还提到,对Worker Proposal System的实现,在主网上线时也许并不能完成。但是这部分基金从上线时,就会开始累积。由于Worker Proposal System会用 WASM 来实现,所以,不需要分叉,之后就可以加入到主网之中。
治理和宪法
治理
第二版中认为,治理是社区中成员的如下过程:
-
Reach consensus on subjective matters of collective action that cannot be captured entirely by software algorithms;
-
Carry out the decisions they reach; and
-
Alter the governance rules themselves via Constitutional amendments.
-
有些事实无法通过软件代码来收集,而人们通过搜集这些事实,就主观问题达成共识;
-
执行他们达成的决策;
-
通过宪法修正案,来变更治理规则。
动议通过的比例修改
宪法的审核,需要得到15/21节点的同意,而先设定的17/21. 其他的一些关键操作,比如冻结账户,更改账户代码等操作,现在也是需要15个节点同意,原先是17个节点。
其他
- 增加Generic Multi Index Database API 部分的说明。这部分我后续会写篇文章解读。
- 加入了对隔离见证的实现说明,目前看到的信息,是打算用在跨链通讯上。细节的说明,我后续会另外写文章描述。