如今很火的项目EOS的学习,以下主要的内容是基于白皮书

参考: http://chainx.org/paper/index/index/id/20.html

  EOS.IO软件引入了一种新的块链架构,旨在实现分布式应用的性能扩展。这是通过创建一个可以构建应用程序的类似操作系统的架构来实现的。该软件架构提供帐户,身份验证,数据库,异步通信以及在数以百计的CPU或群集上的程序调度。该技术的最终形式是一个块链体系架构,该区块链每秒可以支持数百万个交易,同时普通用户无需支付使用费用。

  写到了成功区块链应用平台的要求:

  • 支持百万级用户
  • 免费使用
  • 轻松升级和BUG恢复
  • 低延迟
  • 串行性能
  • 并行性能

重点部分-共识算法(DPOS):

  全网持有代币的人可以通过投票系统来选择区块生产者,一旦当选任何人都可以参与区块的生产。

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

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

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

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

交易的确认:

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

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

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

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

交易证明(TaPoS)

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

  • 1. 防止分叉区块链上出现大量交易记录;
  • 2. 使得系统能感知到用户是否在分叉出来的区块链上

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

----------------------------------------------------------------------------(以下是更新后的github上白皮书翻译)

  EOS.IO软件利用唯一已知的分散式一致性算法,该算法经证明能够满足区块链上的应用程序的性能要求,即代理权证明(DPOS)。在这种算法下,那些在采用EOS.IO软件的区块链上持有令牌的人可以通过持续的批准投票系统选择区块生产者。任何人都可以选择参与块生产,并有机会生产积木,只要他们可以说服代币持有人投票给他们。

  EOS.IO软件能够精确地每0.5秒生成一个区块,并且只有一个生产者有权在任何给定的时间点生成区块。如果在预定时间没有生成块,则跳过该时间段的块。当跳过一个或多个区块时,区块链中会出现0.5秒或更多秒的间隔。

  使用EOS.IO软件,模块以126个轮次(每个6个,21个生产者)生产。在每轮的开始,21个独特的区块制作者优先选择由代币持有者投票。选定的生产者按照15个(三分之二以上)或更多生产者约定的顺序安排。

  如果生产商错过了一个区块,并且在过去24小时内没有生成任何区块,则他们将被移除,直到他们通知区块链他们打算再次开始生产区块为止。这可以确保网络平稳运行,最大限度地减少由于未被证明不可靠的调度生产者而造成的错误数量。

  在正常情况下,DPOS区块链不会遇到任何分叉,因为区块生产商不会竞争,而是合作生产区块。如果有分叉,共识将自动切换到最长的链条。这种方法是有效的,因为块添加到区块链分叉的速率与共享相同共识的区块生产者的百分比直接相关。换句话说,拥有更多生产者的区块链分支的生长速度要比拥有更少生产者的区块链更快,因为拥有更多生产者的分叉会遇到更少的缺失区块。

  此外,没有块生产者可以在两个分叉上同时生产块。这样做的块生产者可能会被投票出局。这种双重制作的密码证据也可用于自动删除滥用者。

  通过允许所有生产者签署所有块,拜占庭容错被添加到传统DPOS中,只要没有生产者签署具有相同时间戳或相同块高度的两个块。一旦15个生产者签署了一个区块,该区块被认为是不可逆转的。任何拜占庭式的制作人都必须通过以相同的时间戳或区块高度签署两个区块来产生他们背叛的密码证据。在这种模式下,不可逆转的共识应该在1秒内到达。

  典型的DPOS区块链有100%的区块生产者参与。在广播时间平均0.25秒后,交易可以被认为以99.9%的确定性得到确认。

  除了DPOS,EOS.IO还添加了异步拜占庭容错(aBFT),以加快实现不可逆转性。 aBFT算法在1秒内提供100%的不可逆性确认。

交易作为证明的凭证(TaPoS)
  EOS.IO软件要求每个事务都包含最近块标题的部分散列。这个散列有两个目的:

  • 阻止不包括引用块的叉子上的事务重放;和
  • 向网络指示特定用户及其赌注位于特定分支上。

  随着时间的推移,所有用户最终都会直接确认区块链,这使得伪造伪造链变得困难,因为伪造者无法将合法链中的交易迁移。

------------------------------------------------------------------------------------------

https://www.zhihu.com/question/62034483/answer/246790815  区块链朋克

EOS每3秒出一个大块,而目前EOS团队又提出一个方案,将3秒的区块继续分割成间隔为0.5秒的若干小块,这些小块之间不切换记账权。每一个小块一出来之后,就会马上广播。这样的设计可以使得区块更加快速得到确认的同时,尽可能减少因为网络延迟而产生的分叉影响。

此外,EOS还引入了BFT的机制:每当一个小区块在区块链网络内被广播时,其余节点将会立即对这个区块进行确认。经过2/3节点确认的区块将会进入不可逆状态。在这个共识机制下,安全确认的时间为0.5s(区块间隔)+0.3s(区块传播延时)<1s,从而到了秒级的确认性能。此外,如果将小块的出块间隔继续分割,理论上确认所需要的时间,会约等于区块传播的网络延时,甚至可以小于0.5秒。

此外,恶意攻击,除非控制了超过2/3的节点,否则无法恶意区块进入不可逆状态。这里特意提一下,如果恶意节点控制了超过1/2但小于2/3的节点,由于恶意区块不会进入不可逆状态,这样可以留给其它观察者节点和见证人节点足够的时间,将恶意节点投票出局。因此,这种模式也极大的提升了安全性

并行机制

在DPOS的基础上,EOS的链已经可以实现远超BTC或ETH的系统吞吐量,但是离十万或百万的TPS还有相当大的距离。

转载于:https://www.cnblogs.com/zhang-qc/p/8786173.html

EOS.IO技术学习相关推荐

  1. 万向区块链技术研究报告 | EOS.IO技术调研(二)

    区块链技术迅猛发展,新想法.新概念.新名词层出不穷.万向区块链因此推出"技术研究报告"专栏,定期与大家分享在区块链行业创新及热门技术方面的研究成果,带领大家第一时间研究学习新技术, ...

  2. [区块链]-- EOS.IO技术白皮书

    EOS.IO技术白皮书 2017年6月26日 摘要: EOS.IO软件引入了一种新的块链结构,旨在实现分散式应用的垂直和水平扩展.这是通过创建一个可以构建应用程序的类似操作系统的结构来实现的.该软件提 ...

  3. linux文件IO与内存映射:分散/聚集IO技术(scatter-gather)

    前言 根据上文我们学习到的用户空间的IO缓冲区,操作系统为了减少系统调用的次数,节省系统开销,提出了用户空间的IO缓冲区,即为用户空间的文件读写开辟一段可以利用setvbuf配置大小的内存空间来作为文 ...

  4. 听听阿里老哥对算法工程师技术学习路线的建议

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 来源丨https://zhuanlan.zhihu.com/p/192633890 前言 知乎 ...

  5. 5行代码帮你梳理EOS.IO的脉络

    EOS号称Blockchain上的操作系统,且白皮书和开发日志都描述的非常美好,同时也有无数人看好这个项目,但对于一个开源项目来说,再好的愿景,还是需要实际产品的支撑,永远都要记住 Talk is c ...

  6. 【C/C++】从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?C语言、C++学习路线?

    转自羊哥的公众号 这几个问题都是私信里常被问到的,也是我当时学习过程中的一些疑惑.谁说黑乎乎的命令行里运行的程序就没有用!这跟学什么编程语言.后续从事什么编程方向均无关,只要做编程开发,这四个计算机基 ...

  7. 【Python基础知识-pycharm版】第十一节-文件操作(IO技术)

    第十一节-文件操作(IO技术) 文本文件和二进制文件 文件操作相关模块概述 创建文件对象 open() 文本文件的写入 基本的文件写入操作 常用编码介绍 ASCII ISO8859-1 GB2312, ...

  8. 干货:18 张思维导图,后端技术学习路线长这样!

    来源 |后端技术学堂(ID:lemon10240) 作者 | LemonCoder 头图 | CSDN下载自视觉中国 思来想去,学习方向和路线很重要.比起具体的技术细节,可复制的经验.清晰的学习路线, ...

  9. 隆中对,程序员修炼之道,技术学习前进之路

    之前写的 一个IT工薪族的4年奋斗成果  这篇文章,更多针对白领.互联网从业者.技术人员等广泛人群提出来的"职业发展路线",更准确的说法应该是"能力模型". 本 ...

最新文章

  1. c的开始,求最大数。
  2. 匿名内部类创建线程的三种方式
  3. boost::hana::greater用法的测试程序
  4. C++ Bitsets
  5. dojo中的this.own()
  6. SAP Kyma GraphQL storage实现
  7. 图像处理中的通信原理——冈萨雷斯读书笔记(一)
  8. java中二进制怎么说_面试常用:说清楚Java中synchronized和volatile的区别
  9. python编程基础知识体系_【汇总】Python 编程核心知识体系
  10. 算法:Gray Code 格雷码
  11. 出现电脑蓝屏代码0x000000ed怎么解决
  12. Android如何修改手机文件名称
  13. [leetcode题解] 第995题Minimum Number of K Consecutive Bit Flips
  14. keystore java_Java KeyStore getEntry()用法及代码示例
  15. ffmpeg命令下载m3u8原画质视频
  16. 使用windows时卸载office,后想恢复原来的office
  17. 做人必须留的几张底牌
  18. 方德系统装exe文件_国产处理器+自主OS完美运行exe程序?英特尔认为有侵权嫌疑...
  19. 3D空间堆叠PCB设计 ——PCB线路优化项目总结
  20. 现代控制理论2——状态空间分析法

热门文章

  1. 职场人如何做好「公开表达」,提升个人影响力?
  2. 将房子卖了五百万,存在银行,靠利息能过日子吗?
  3. 人到六十岁还是黑头发好吗?
  4. 普通人如何走上复利投资致富的门路?
  5. 高人,不断地在营销, 有收入就是高人
  6. 你真的会发朋友圈吗?
  7. 本田和丰田,你选那个?
  8. 麒麟810相当于骁龙多少?
  9. 你们一年大概可以存多少钱?
  10. MyBatis的搭建流程(idea+maven)