首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EOS技术白皮书学习笔记(一)-摘要,背景,共识算法

摘要

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

我是这样理解这个摘要的^.^:

大家好,我是EOS.IO。我的基因是区块链,我立志长大后要成为一个超级大的平台,我的理想是所有人都能在我的平台上轻松的搭建区块链应用。从小我就为了这个目标而努力,并且做了很多事情,例如:提供帐户,身份验证,数据库,异步通信以及在数以百计的CPU或群集上的程序调度(不懂没关系,我都为你做好了,您只要用就行了)。在我这个平台上每秒可以支持数百万个交易,同时普通用户不用付钱。

其实我有点像安卓系统或者苹果系统,开发者在我这里开发软件,而普通用户可以直接用。又有点像微信,微信提供了账户,支付系统等各种基础设施,然后你们在上面开发小程序就可以了。是不是很牛逼,那就支持我吧。

1. 背景

区块链技术源于2008年推出的比特币,自那时以来,企业家和开发人员一直在努力推广该技术,以便在单个块链平台上支持更广泛的应用。

现在已经有许多针对特定场景的应用了,例如:BitShares(去中心化交易所【2014】)和steem(社交媒体平台【2016】),这两个应用已经成为日活跃用户上万的成功应用。

这两个应用的性能已经非常高,用户体验和我们平常经常访问的新浪、淘宝等网站差不多了。

但是呢,这样的应用并不多。区块链应用没有广泛传播,其主要的原因是现有的区块链平台使用费用高昂,性能有限。

要创建EOS的想法,就是在这样的背景诞生的。

2. 区块链应用的要求

要解决费用高昂,性能有限等问题,成为一个成功的区块链应用平台块,应该满足以下要求:

1、支持百万级别用户

2、免费使用

3、轻松升级和Bug恢复

4、低延迟

5、串行性能

6、并行性能

以上6点是保证用户在使用软件过程中保持操作顺畅的基本条件,缺一不可。想想要是你打开一个软件需要等10秒,好不容易登录进去了,又一卡一卡的,你会继续用下去吗?要是我,肯定立马卸载,从此再也不想看到这个软件了。普通用户对软件的基本要求就是操作顺畅,然后才能谈下一步,从这一点看以上要求很重要。

3.共识算法(DPOS)

要满足上面提到的性能要求,到目前为止只有一种技术能够做到,那就是区块链共识算法(DPOS)。这种算法为什么这么叼,它的原理又是怎样的呢?

它的中文名叫做股份授权证明机制(又称受托人机制),它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

根据这种算法,全网持有代币的人可以通过投票系统来选择区块生产者,只要被选中,谁都可以参与区块链的生产。

EOS.IO里预计每3秒生产一个区块,相比目前市值最大的比特币10分钟产生一个区块已经快了200倍。任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该快。

区块是什么,干嘛用的呢?

现实世界记录交易数据一般用账本,账本里的每一页都记录交易数据,而这一页就相当于区块链里的区块,许多区块组成了一个大的账本,这个账本就是一条链。于是,转为计算机类的语言,交易(数据)写在区块里,区块是一种记录交易的数据结构。其实区块链是一个数据库(系统),一个放在非安全环境中的分布式数据库系统。(数据库是存储数据用的)

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

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

交易确认

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

在区块链里,一笔交易要被确认,需要被大部分节点肯定并记录,因为网络以及其他未知因素的影响,就会导致区块链的应用会有延迟和数据吞吐量的问题,而EOS所说的1.5秒就可以被确认,如果真的能做到这样的效果,真的是很牛逼了。

在应用使用过程中,有一些非正常情况,例如:软件bug,网络堵塞或恶意出块者出现。对于这些情况EOS也做了相应的处理,确保一个交易是不可逆转的。

交易证明(TaPoS)

当一笔交易被确认后,系统就会把交易信息记录到区块里,以便以后审查。当然这里还有许多问题需要处理,例如:如果每个人都有一个账本,难保有人会篡改账本内容。EOS是这样处理的:EOS.IO软件要求每个交易都包括最近的区块头的哈西。

这个哈希有两个目的:

1.防止分叉区块链上出现大量交易记录;

2.使得系统能感知到用户是否在分叉出来的区块链上

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

EOS技术白皮书github链接:https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md

中文翻译链接:https://www.jianshu.com/p/f65bf7691482

这篇文章是学习笔记,旨在理解大意,详细内容还需要看官方文档,还需要对区块链原理、智能合约和其他相关概念有所熟悉,这样才能深入理解EOS以及它的强大。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121G0AQKB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券