查看原文
其他

启动EOS主链,还差什么

Lochaiching EOS技术爱好者 2018-10-02

版权声明:

以下内容来自微信公共帐号“EOS技术爱好者”,搜索“EOSTechLover”即可订阅,本文作者:Lochaiching。转载必须保留以上声明。仅授权原文转载。



距离 EOS 主链上线的日子越来越近,还不到一个月后的启动流程,到底是怎么样的呢?


根据这个问题,Thomas Cox 在两个月前就已经发表过相关的文章 Once Upon a Time: BIOS Booting an EOSIO blockchain,本号也在当时翻译成中文版《拉开序幕:“BIOS”引导启动EOSIO区块链》


根据全文内容,我用工具把主要内容概括成图,如下:


此文章主要分成六个阶段(包括第0阶段的预备期)。在预备阶段首先从 BP 派出的技术骨干中挑选 22 位形成 Go-Live 团队。到了主链上线的时候,全网进行快照操作,当超过 15 位 Go-Live 成员验证过快照无误时,用随机的算法选出其中一位作为 BIOS 启动节点。这就是预备阶段的工作了。


然后就到了 BIOS 引导启动第一阶段,首先由选出的 BIOS 启动节点抓取创世区块,然后开始引导新链的准备工作,包括用新密钥安装核心的合约,安装(并分配权限)指定生产者的名单等等,做完准备工作后,引导节点将删除在全网中自己的密钥。


第二阶段主要是指定生产者(ABP)来主导。他们开始连接并认证账户及其余额、出块。这部分的 ABP,包括 BIOS 引导节点,其工作是组织选举,等到把自己手头上的工作做完,也就是真正当选的 EBP 接替掉他们之后,ABP 们才能回到被选举的地方等待被选举。


有人会疑惑,这样对 ABP 们不就很不公平吗?然而不是的,这轮选举会有 10 次的更替。第一次被选上的 21 位会接替 ABP 手上的工作,从第二轮开始,之前做 ABP 的节点就开始有机会被选上了。所以这个阶段,包括接下来BP当选第三阶段,是处于相对混乱的状态。


第一轮被选出的 EBP,会开始尝试处理交易。当第二轮选出的 EBP 会换下可能刚刚熟悉上手的第一轮 EBP。而这个过程,将会更替 10 次,才最终尘埃落定,结束战战兢兢、更替不断的“模拟游戏”,得出最新也是最后选出来真正的 EBP。


这个时候,21 个主节点和 49 个备选节点的位置就暂时稳定下来了,开始真正意义上的处理交易。但是,请注意此处的“暂时”。主节点要是掉线或者没有完成应该完成的工作量,很快就会被备选的节点替换下来。此时已经不是战战兢兢、更替不断的“模拟游戏”,而是真正意义上战战兢兢、更替不断的长期马拉松了。


就来到第四阶段宪法部分了。


Thomas 设计的宪法草案目前已经更新到0.3.0版本的第十六条。而真正非草案的宪法会在第四阶段这个时期从执行场景开始确定,由所有的代币持有人投票选出具体的内容,更替掉之前默认的版本。


第五阶段验证生效期,这个时期账户之间转移不了代币,生产者也没有出块的奖励。


以上重新复述了一遍 Thomas 在两个月前关于引导启动主链的流程阶段。


在这两个月的发展进程中,代码提交者 abourget 在 GitHub 中根据 Thomas 的这篇内容写了《关于EOS启动的建议》,本号也分三篇内容进行翻译过(点击下文标题可跳转):

关于EOS启动的建议(Go-Live前的阶段)

关于EOS启动的建议(Go-live阶段)

关于EOS启动的建议(Go-live阶段后的操作)


其中比较多是实操代码的内容。类似内容关注度也随着主链上线时间的逼近,越来越细节化和丰富。


最近相关讨论在 Google Sheet 中也有展开,根据其中的启动模拟16步,我用工具把它画了出来。


我们可以看到第一点,建议的是所有的 BP 都至少准备2个节点,一个是隐藏具体配置的生产者,另外一个(或多个)是在不同标准下测试的节点。从这个第一点可以看出,这份表格内容是提供给真正想要减小风险、增加胜算的竞选 BP 的群体的


而我做的这部分包括接下来呈现的3张图中,右边黄色的延伸部分,是目前模拟流程中操作不清晰,以及需要细节化的内容。还有非常多的部分,是处于模拟的想法中,而这个事情怎么做,由谁主持,谁才有话语权,谁值得技术部分的人群追捧加入,都不是特别清晰的部分。


比如接下来的第二点,“选择信任的网络”。

所以什么才是值得信任的网络呢?
这个需要设定的标准,由谁设定?

由谁发布?

技术操作者会相信我发布的测试报告吗?

他们凭什么相信我的内容呢?



我们在本前面部分可以知道,BIOS 是随机选出来的,用的是已经存在的一种随机算法,这种算法在启动阶段用到的不止一次。选出的 BIOS 需要隐藏起来,只有 BIOS 自己知道,什么时候应该抓取创世区块,然后用它来引导启动链,和让 ABP们找到自己,承接下面的工作。


BIOS 这个点的作用是保护启动链的完整性,要是后面的 ABP 们赶不上这个进度,ABP 就会掉出这个启动的队列,备选的 ABP 会取代掉原本在名单上但是掉队 ABP 的位置。除了后面排列 BP 名单的完整性之外,BIOS 还要设置各种初始的系统规矩、切换到新链上的代币分布,设置一个生产者的最后期限,完成 BIOS 的使命。


所以看到了吗,这是一个真正意义上用技术保证地位的地方。生产者的技术实力要是不够强硬到足以抗衡工作量和各种攻击,就算一时被选上,持续升级的力量不够的话,地位也是岌岌可危、可以随时被换下的。


而这些,BIOS 都需要不公开身份去做,但是其他节点又可以验证其步骤没有错误。对这一点怎么实现的,其实各位是可以做更多的想象和探讨的。


我们可以看到这部分的16步,和 Thomas 的引导启动部分相比,这部分内容主要是细化了Thomas前面的0、1、2阶段的内容。这里的15步才是开始投票,这里才是开始比较混乱的步骤,而这前面,需要细化和清晰的部分,还有待补充。


剩下不到一个月的时间,EOS社区中的全球三大媒体召唤的节点测试小分组,也正在紧锣密鼓地细化和模拟每一个步骤。希望在正式开始之前,能够拿到更多更详细的测试报告和具体的优化解决方案。



注:

ABP:Appointed Block Producer,指定区块生产者;

EBP:Elected Block Producer,被选出的区块生产者;

BIOS:引导启动的.


参考链接:

Once Upon a Time: BIOS Booting an EOSIO blockchain,Thomas Cox;

An EOS BIOS proposal , abourget;

Launch Procedure(Google Sheet)



本文内容不构成本号任何立场


本文图片由Lochaiching制作,Fred美化。

本文作者Lochaiching,首发于微信公众号“EOS技术爱好者”。转载请参照本文文首说明。


相关文章:

解读Thomas设计的投票规则

李嘉图合约究竟讲了什么

通过仲裁流程的例子看社区治理理念


加入我们的知识星球吧!

关于我们 更多联系:

Website:https://eoshenzhen.io

Twitter:https://twitter.com/eostechlover

Steem:https://steemit.com/@eoshenzhen

Buzy:https://busy.org/@eoshenzhen

简书:EOS技术爱好者

Telegram:https://t.me/eoshenzhen


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存