Data Analysis for IMEOS on-line testing of EOS

imeos(40)
Published in
#eos
Words
2653
Reading
12 min
8y

由 IMEOS & HelloEOS 联合出品的《EOS线上开发课程》之课前小测试:EOS信仰度测试,从4月30日测试活动开启后,一度挤爆了答题系统,传遍EOS各社群,受到了众多EOS粉丝的广泛参与。

数据截止至05月02日下午16:00,参与测试一千多人次,并且答题人数还在不断增加。目前成功通过测试,进入【 EOSgeek 】知识星球人数近百人。

我们这次采用答题+收费的形式来设门槛,筛选掉对技术不够有追求的和伸手党。收费的钱全部用来做开发者的周边产品和活动经费,IMEOS & HelloEOS 还会补贴开发者。

我们希望这不是单方面的教课,而是一起来共建EOS开发者社区,未来会在EOSgeek这个开发社区诞生和孵化无数优秀的DAPP。IMEOS和HelloEOS作为行业的先行者,会把经验和资源贡献给社区有极客精神的开发者。

我们还成立了EOS生态基金,来孵化和支持EOS早期的开发者。我们不是心血来潮,EOSgeek开发者社区将是一件与时间做朋友的事情,会持续的、保持社区质量,不追求快而大,坚持小而美。

数据分析

数据统计方面,本次测试截至目前,及格率61.2%,平均得分67分(及格分数60)。本次题目难道中等,但整体分数并不是很高,绿油油的韭菜就隐藏在我们身边。

其中145人次获得满分100分,高手在民间。暂时排名第一的是微信号为xiu******ngO_o用户,用时13秒,平均一题仅用1.3秒(小编想问,你看清楚题目了吗?!)!

答错一题,得到90分有189人次,你们也是棒棒的噢!

反观低分榜,答对3题以下的有92人次,其中有5位童鞋未对一题,你们就是传说中的韭菜吗,哈哈!(快来人啊,一起来欺负他们)。

题目分析方面,这次测试题库总共有20道,随机抽取10道进行测试。

答对次数最高的题分别是以下五道:

大家整体答对率都在83%以上,前两道分别都是与大神BM有关,看来大家对EOS的生父BM有着相当的了解。

答错最多的题目分别是:

错误率超过一半的题目有三道,90分的童鞋你是不是就是被这三道题拦住了通往满分的去路。

问题解析

1.EOS的共识机制是?答案:DPOS+BFT

很多童鞋的选择是DPOS,但其实这是BM在BTS和Steem上采用的共识机制。EOS刚刚发布时,也是只采用了DPOS机制,而后为了让EOS有更好的性能,BM对DPOS进行了改进,加入了BFT(拜占庭容错)。

传统的DPOS

采用随机的超级节点出块顺序,出块速度为 3 秒,交易不可逆需要45秒。为什么需要 45 秒呢?因为 DPoS 下,超级节点生产一个新区块,才表示他对之前的整条区块链进行了确认,表明这个超级节点认可目前的整条链。而一个交易要达到不可逆状态,需要 2/3 以上的超级节点确认,在 EOS 里就是 14 个超级节点。我们假设一个交易被包含在 1000 号区块中,需要其他13个超级节点轮流出块至 1013 号区块,这样才能“收集”到14个超级节点对此交易的确认(包括生产1000区块的超级节点)。2/3 以上的超级节点确认的交易,就是不可逆的交易了,这就是 45 秒确认时间的由来。

拜占庭容错(BFT)

为了改进传统的 DPoS 算法,借鉴了 PBFT(Practical Byzantine Fault Tolerance,拜占庭容错算法)的机制。在传统 DPoS 共识机制中,让每个超级节点在出块时向全网广播这个区块,但即使其他超级节点收到了目前的新区块,也无法对新区块进行确认,需要等待轮到自己出块时,才能通过生产区块来确认之前的区块。

在新的机制下,每个超级节点出块时依然全网广播,其他超级节点收到新区块后,立即对此区块进行验证,并将验证签名完成的区块立即返回出块超级节点,不需等待其他超级节点自己出块时再确认。从当前的出块超级节点看来,他生产了一个区块,并全网广播,然后陆续收到了其他超级节点对此区块的确认,在收到 2/3 超级节点确认的瞬间,区块(包括其中的交易)就不可逆了。交易确认时间大大缩短,从 45 秒缩短至 3 秒左右(主要为等待生产区块的时间)。这种机制可以称为初级版的 DPOS-BFT 共识机制。

DPoS-BFT

为了挖掘 EOS 系统的性能,BM在以上基础上又进行了修改。首先,他将出块速度由 3 秒 缩短至 0.5 秒,理论上这样可以极大提升系统性能,但带来了网络延迟问题:0.5 秒的确认时间会导致下一个出块者还没有收到上一个出块者的区块,就该生产下一个区块了,那么下一个出块者会忽略上一个区块,导致区块链分叉(相同区块高度有两个区块)。比如:中国超级节点后面可能就是美国超级节点,中美网络延迟有时高达 300ms,很有可能到时美国超级节点没有收到中国超级节点的区块时,就该出块了,那么中国超级节点的区块就会被略过。

为解决这个问题,BM将原先的随机出块顺序改为由超级节点商议后确定的出块顺序,这样网络连接延迟较低的超级节点之间就可以相邻出块。比如:日本超级节点后面是中国的超级节点,再后面是俄罗斯的超级节点,再后面是英国的超级节点,再后面是美国的超级节点。这样可以大大降低超级节点之间的网络延迟。使得 0.5 秒的出块速度有了理论上的可能。

为了保证万无一失,不让任何一个超级节点因为网络延迟的意外而被跳过,BM让每个超级节点连续生产 6 个区块,也就是每个超级节点还是负责 3 秒的区块生产,但是由最初的只生产 1 个变成生产 6 个。最恶劣的情况下,6 个区块中,最后一个或两个有可能因为网络延迟或其他意外被下一个超级节点略过,但 6 个区块中的前几个会有足够的时间传递给下一个超级节点。

再来讨论 DPOS-BFT 的交易确认时间问题:每个区块生产后立即进行全网广播,区块生产者一边等待 0.5 秒生产下一个区块,同时会接收其他超级节点对于上一个区块的确认结果。新区块的生产和旧区块确认的接收同时进行。大部分的情况下,交易会在 1 秒之内确认(不可逆)。这其中包括了 0.5 秒的区块生产,和要求其他超级节点确认的时间。

EOS 系统规定,一旦区块达到不可逆状态(2/3超级节点确认),就无法在此之前进行分叉,保证了交易的永久可信。另外,即使多数超级节点想分叉区块链,也只能以相同的速度(0.5秒)与主链竞争,就算主链只剩下一个超级节点,分叉链也永远不会追上主链,保证了系统的稳定。

——以上文段节选自:【许晓笛】详解 EOS 的新共识机制 BFT-DPoS

2.六月份EOS上线的版本为? 答案:单线程

6月的主网上线并不是EOS的终点,而是一个新的起点。Block.one团队会在保证单线程1000 tps的性能和功能稳定的前提下,再继续开发多线程EOS网络。

3.以下哪种不是EOS的底层语言?答案:Solidity

image

除了Solidity不是EOS的底层语言,C,C++,WebAssembly都是目前EOS支持的底层语言。ETH是支持Solidity的。

4.EOS的备用节点有几个?答案:100

image

EOS总共会产生121个节点,其中21个为超级节点,100个为备用节点。

5.EOS超级节点投票什么时候开始?答案:主网上线后

image

很多童鞋错误选择为主网上线前。EOS主网上线前,各个节点只是进行宣传和推广,EOS持有者真正进行投票需要等到EOS主网上线后,投票才会正式开始。

总结

如果你热爱EOS,相信EOS的代表着未来,那就应该投身其中,而不只是关心它的价格。EOS生态真正逐步完善,越来越多的人已经开始参与到这场浪潮中来。EOS未来的辉煌,属于所有添砖加瓦的人。《EOS线上开发课程》就是想让你站在当下,看见未来!

IMEOS目前发布语言为中文优先,过后我们会尽快发布英文版本,同时也欢迎任何语言的翻译,告知我们即可。

Data Analysis for IMEOS on-line testing of EOS | Ecency