Skip to content

Latest commit

 

History

History
496 lines (247 loc) · 40.6 KB

《读懂区块链PoS共识》第十章 PoS项目例子--EOS.md

File metadata and controls

496 lines (247 loc) · 40.6 KB

EOS

1.1.项目介绍

EOS(Enterprise Operating System),企业级操作系统。通常EOS会和EOSIO软件(EOSIO Software)连在一起说,EOSIO 软件指的是一种强大的去中心化Dapp服务架构。官网上,EOSIO的标语是:

The most powerful infrastructure for decentralized applications

对EOS更为细致的介绍如下

EOSIO软件引入了一种新的区块链架构,其设计能让去中心化应用(EOSIO)可以进行横向和纵向的扩展,同时可以用于发布公有链和私有链网络。这种架构通过一种类操作系统的方法来实现上层应用搭建。EOSIO软件提供账户,验证,数据库,异步通信和跨越数百个 CPU 内核或集群的应用程序调度,由此产生的区块链架构技术有潜力扩展至每秒处理上百万笔交易,消除用户手续费,并且允许快速和轻松的部署去中心化的应用。

EOS为了实现Dapp的底层架构,认为应该满足几个要点:

  • 支持百万用户

现存的区块链系统当中,无法满足大量用户的性能要求,普遍的反应就是交易时间慢,等待时间长,如果一个Dapp想要满足百万用户的良好体验,那么提高区块链的性能是必须的。

  • 免费试用

互联网给人提供了很多的便利,在网站时代,网站主并不会要求浏览人支付网站的使用成本,如带宽,存储,内存等,而网站主会通过广告,增值服务等,获得收入来覆盖成本。EOS认为区块链也应该是这样的,不应该让使用人在交易传递时交手续费,如以太坊的GAS。

  • 支持升级和修复bug

比特币和以太坊都认为"代码即法律",存在很多具有争议的方向问题时,社区分裂,各自追求各自的发展方向是常态。而在分布式运行的网络下,因为Bug,升级在大部分时候无法向前兼容,导致网络被攻击的情况不在少数。那么EOS要解决的就是——分配权利,制定合理的升级规则。

  • 低延迟

低延迟也是现存区块链要追求的一个方向之一,传统支付领域或者应用领域,常规的端交互可能都是毫秒级别的,加上4G/5G的优化,交互会变得越来越快,而现存区块链常常为了安全问题,而让交易确认等待时间过长,亦或是因为数据量无法压缩,导致整个传输过程达到秒级别的速度,实在是无法让区块链在大众中普及。

  • 时序性能

很多算法需要强依赖于时序,时序意味很多顺序并不能被打乱,得按照规定好的顺序来执行,这会导致会花很多时间在等待一个问题上,如果在等待的时间可以处理不冲突的计算,那么性能会提升很多,EOS认为面向企业级的区块链底层,需要有这样的并发处理能力。

  • 并发性能

解决时序,加上了并发处理能力,那么EOSIO软件需要完成多条线路的并发处理能力。当然,并发处理能力越强,系统的效率会提升越多,这也是目前多个区块链系统所追求的指标之一。

EOS于2018年6月上线的主网当中,基本都实现了以上6点,但是实现后的效果相对于白皮书中的描述打了个折扣,比如现在TPS的峰值3000~4000,但是白皮书中描述是百万交易每秒。

另外白皮书中对于Token的描述,再实现后也有所差异,比如1%的Token拥有权,实质上对应的是1%的资源使用量。但是后来EOSIO上出来的种种机制,如Ram交易市场,Rex(CPU交易市场)等都将这种token-资源使用的对应关系打破了,并且重新建立了规则。

虽然和理论有差距,EOS的单秒处理能力还是比较高,很多Dapp项目方偏向于高TPS,所以EOS上的Dapp数量和交易笔数还是有不错的成绩。

Daniel Lamier是这个高度的缔造者。Daniel,大家都称他为BM(Bytermaster昵称的缩写),EOS是BM的第三个项目,前两个项目分别是Bitshares,Steem,Bitshares是去中心化交易所,Steem是去中心化内容分发平台。

EOS和前两者一样,都是采用的DPoS共识,DPoS共识在牺牲去中心化的情况获得了性能上的提高,这个提高使得EOS,Bitshares,和Steemit(Steem上建立的内容平台)在TPS上遥遥领先于其他的公有链,也使得BM获得了一大票忠实的粉丝。

目前EOS有Blockone公司主导开发,BM是Blockone的CTO。

1.2.代币情况

EOS,代币称号为EOS,总量10亿,其中10%留给主导开发的公司Blockone,20%的代币在第一期ICO进行分配,第一期分配持续5天。剩下的70%EOS代币在随后长达1年左右(341天)的时间里,以自然天为单位,开始第二期,第三期,第四期的分配...每天有200万EOS代币,按照投资人投资的ETH,按比例分配。

EOS的ICO从2016年6月26日开始,在2018年6月1日结束,按每天收盘价格算,EOS ICO共筹得了40亿美金。

长达一年的ICO是当时的"创举",也引来了很多非议,开始第一期时,市场上就有不同的声音,对比那些有硬顶,有时效的项目,投资人习惯了这种"快准狠"的投资方式,EOS长达一年的众筹,很多人并不看好。

但在BM和李笑来的加持下,有交易所在第一期ICO完成后就上线了EOS交易。第一期众筹价在6元左右,交易所开盘后EOS一度涨到了41元左右,狠狠的打了很多人的脸,导致接下来的第二期,第三期都是以超过第一期ICO的价格成交。

当然,EOS ICO这一年时间里面,经历了94和2018年4、5月份的大跌潮(2017年9月4日,中国七部委联合发文取缔了ICO和交易所),ICO成本起起伏伏,但总体上来说,EOS的ICO除了给项目方带来了非常大的开发资金外,还做了长达一年的广告,一箭双雕。

BM主导了这次ICO的设计,BM认为长时间的ICO可以给开发团队带来持续的资金支持,同时EOS可以支持一级市场筹,二级市场买的方式,把EOS的定价权交给了市场。最重要的是,任何人都可以在不同时间买到EOS,代表了公平性。

这套设计带着Bitshares的影子,EOS也有Bitshares DAC的影子,所以EOS项目带着BM强烈的个人色彩,而且是未完成的个人色彩。这段经历和BM的历史有关系,之前我写过一篇文章讲过Bitshares的历史,大家关心的话可以在附录看一下《EOS上的DAC》

1.3.代币作用

EOS代币是使用EOS系统/软件资源(如带宽、存储空间等)的凭证,它的数量决定了你能使用多少的资源能力,而这些资源能力决定了你软件的运行速度,承载的用户量。

举个例子,在EOS系统/软件上开发一个去中心化的微信。人用微信来沟通交流,春节发送条祝福语音给你好朋友,这个发送是个信号传输过程,需要用到系统的能力,持有EOS才能拥有这个传输能力;

又比如用微信打电话,网络电话要保证通话质量,不能中断还不能有延迟,这需要系统提供更大的能力保证运算速度,这取决于你拥有的EOS数量;

还有当你想翻看过去朋友圈的照片,系统会帮你记录过去的照片,这里要用到系统的存储能力。存储也需要你持有EOS的数量。诸如此类。

总之,一个软件想要运行在EOS.IO的系统上,同时实现较好的交互体验,需要开发者持有一定数量的EOS,这是最开始EOS白皮书中描述的,可以简单的理解为:假如你拥有1%的EOS代币,那么理论上你就拥有了1%的系统资源使用权。

这套代币-资源使用权的模型理论上来说没有什么毛病,但是现实中,作为一个商业Dapp开发平台,这套模型的有两个大的问题:

  1. 购买系统能力使用权的EOS,其价格波动太剧烈

  2. 系统能力使用权没有掌握在真正需要的人手中

如果按照持有EOS的百分比对应系统资源的使用权,那么EOS的价格一天一个变,剧烈的情况下昨天120,今天40,开发者开发产品,还需要承担如此大的投资波动,会让开发者望而却步。另外很多没有持币的开发者如果想进入EOS开发,需要购买EOS才行,但是很多EOS却掌握在其他投资人手中,投资人对系统资源没有使用需求,这本质上是一种浪费。

后来,为了解决这两种问题,官方引入了多种解决办法,一种是使用Bancor解决的Ram的供需关系,一种是Rex解决CPU的供需关系。社区也引入了EOS租赁方式,解决开发者使用系统资源问题,如Chintai项目。目前,ram因为爆炒遭受诟病,虽然现在已经回归了正常水平。Rex还迟迟没出来,导致EOS交易暴涨的时候,CPU总是爆掉。所以官方的解决方案还并不彻底,而社区项目也没能彻底解决问题,所以EOS代币-资源使用模型并没能达到最优。

下面讲讲RAM和CPU的解决方案:

RAM :即内存,EOS-RAM的使用原理是,开发者通过抵押EOS给系统/花EOS购买RAM,系统分配RAM,当不需要RAM是,释放RAM,然后拿回EOS,抵押,使用和赎回都有锁定周期,抵押者无法及时对市场EOS的价格做反应。

RAM的容量是有限的,提供RAM的21个节点需要考虑成本和当前所需,而不会无限的扩充内存。早期持有EOS的人抵押获得的RAM只能以抵押时的价格出售RAM,导致很多默认抵押的人没有动力释放RAM。基于这个前提,BM用Bancor算法来决定了RAM的供需关系,把价格引入,使得早期购买的RAM可以以当前RAM的价格出售。

但是Bancor的引入导致了新的问题,RAM价格被爆炒,导致真正的开发者面临的是买不起,而不是买不到的境地。BM提出增加RAM供给来变相降低价格,但是并不能影响短期的投机行为,甚至BM还提出了一个RAM衍生品DRAM,希望能将投机引入到DRAM上来,但是实际上并没有推出。

目前,提出的机制并没有很奏效,RAM的价格虽然已经不再火热,但是EOS上新注册一个账户,仍需要非常高的成本。

REX :Rex是一种代币,这种代币作为抵押EOS换成CPU/NET的媒介,以此来抵消目前大部分EOS持有者无成本占用,但不使用CPU/NET的影响,而将相关资源给到需要的人手中。

REX实现的是另外一个Bancor市场,这个自由市场允许人们用EOS购买获得REX,然后用REX租赁得到CPU/NET这个资源,从而从两个方面改变目前"占着茅坑不拉屎"的问题。1是持币人直接投机Rex有手续费限制,Rex按照供给并不能和直接占用CPU/NET联系到一起。2是Rex的总量是随时变化的,而不像RAM的增值一样提前又节点告知,这个投机带来了不确定性。这给Rex租赁CPU/NET带来了合理的操作空间。

开发者这可以通过抵押Rex来获得30天CPU的使用权,CPU按照内置算法进行分配,平均分配给抵押Rex的这部分人。这部分人如果是投资人,可以将获得的CPU/NET转租给别的开发者,获得利润来抵消Rex价格下降导致造成的损失。30天之后,抵押人可以选中续租(以10%的折扣),如果不续租CPU/NET资源会被释放会交易市场当中,同时抵押的Rex自动发送到用户账号。

REX和RAM的市场建立 ,都是解决最初是EOS代币-资源使用模型的不合理性,虽然EOS仍然代表了资源的使用权利,但是已经不是之前简单的抵押-获得-百分比权利的方式了。为了降低资源使用门槛,租赁,交易的市场正在形成,探索阶段暴露的问题也很多。

1.4.发展路线

EOS从ICO第一期完成之后就开始开发,截止2019年1月,总共发布了7个版本,从v1.0~v1.6

  • v1.0 2018年6月2日,完成了EOSIO第一个最小可行性产品(MVP),包括免费交易,低延迟的区块确认(0.5s),拜占庭容错的区块最终确认性,智能合约等功能。

  • v1.1 2018年7月20日,采取1.0的社区使用建议,继续加强EOSIO上的可持续性,包括MongoDB插件,更快的数据同步,数据库的优化等。

  • v1.2 2018年8月15日,持续优化,集成社区插件,包括MongoDB插件的升级,集成外部社区的插件等。

  • v1.3 2018年9月19日,开发工具组件,包括新的智能合约开发工具包,新的WASM等。

  • v1.4 2018年10月18日,支持系统快照,优化云端服务器性能等。

  • v1.5 2018年11月22日,发布多签验证系统,状态历史插件,黑名单系统等。

  • v1.6 2019年1月18日,提高性能,新的开发工具包等。

从EOS上线主网以来,EOS基本是一个月一个版本对外发布,从开发工具包,开发套件,到性能提升优化,安全等都有覆盖到。

EOS原来在Github上的路线图并没有更新,后来EOS的开发并没有明确的Roadmap,现在基本按照社区提议来共治理。

1.5.设计哲学

EOS的设计哲学有两个特别点,追求性能和追求用户体。

  1. 追求最大的性能

EOS对性能的追求来源于商业操作系统的定位,还有是现存区块链与日俱增的性能压力现状。比特币的TPS是7,以太坊的TPS是15,VISA平均是4000TPS,支付宝微信支付平均是20万TPS,EOS白皮书中号称可以每秒处理百万比交易,可见EOS对性能的要求已经远超出我们目前所能接触到的区块链,甚至是现存支付体系。

但是现在EOS上线了7个版本,实际TPS3000~4000左右,虽然还远远达不到白皮书中所述,但是已经远超现存的区块链项目。

EOS针对性能的优化有很多,无非也是从网络层面,消息交互层面,共识层面等下了很多功夫,而作为分布式网络,我觉得共识层面给了EOS的性能带来了很大的提升空间。采用DPoS为共识机制,将验证人节点控制在21个,将候选人选举,出块,验证和交互等一大堆流程做了简化,实现了21个节点的分布式共识,大大加快了性能。

对性能的极大追求,也给EOS带来了中心化诟病,21个节点的分布式,很多人更愿意把它当成是一个内网,局域网,或是一个小的联盟链,而不是真实的去中心化区块链项目。另外,EOS并没有实现白皮书里面写下的期望,TPS更是远未达标。

  1. 追求更好的用户体验

BM在做了2个项目后,对区块链用户体验已经有了一定的见解,所以在EOS实现前,对区块链上的用户体验诟病进行了大量的优化,我挑几个重点来讲讲:

  • 持币-资源模型

创造性的将EOS代币和资源使用按比例对等起来,使得EOS代币的价值变得足够大,让持币人参与社区感觉更加强烈。另外,极大的加强了EOS代币的被购买价值,这也是EOS能完成一年ICO,并能筹到40亿美元的原因了。

  • 账号体系

相对于私钥-公钥-地址这种模式,每个区块链使用者都需要记录下一大堆复杂且难记的字符串,BM引入了账号体系,将账号的地址变成了一段极短且容易的几个字母,常见的都是12个字母,如gesk2seejdd这种。EOS中还有靓号系统,可以注册短于12字母的账号,如EOS,EOSIO这种,方便了用户。现在注册EOS账号就像论坛注册账号一个样。

  • 私钥找回

私钥代表着一个人的Token拥有权,丢失了私钥意味着丢失了Token。普通人很难弄清楚私钥的作用,比作银行密码却不能在丢失后找回,比作私密宝藏却不能保存在网络上,容易丢失,容易被盗,不能截图保存,只能记录在纸上,存银行保险箱?

EOS上,BM做到了恢复私钥的功能,假设你丢失了私钥,那么可以通过设定的方式将私钥恢复,就像找回密码是一样的,这样资产可以重新找回。

  • 仲裁

仲裁是EOS引入治理的一个方式,被盗的EOS可以申请仲裁,仲裁前被锁定的EOS代币可以通过判断来重新决定EOS代币的归属权,这个过程其实是将人为方式引入了区块链,代替了BTC/ETH上代码即法律的原则。这对于解决区块链中Token被盗问题,有极大的帮助,但同时也遭受到了众多非议。

1.6. DPoS

BM在2014年4月3日写下了DPoS白皮书,并与2014年4月5日发布在Bitcointalk上,白皮书地址现在打不开了,后来BM在Steemit上有写过一篇长文,介绍了DPoS的相关细节《DPOS Consensus Algorithm-The Missing White Paper》。

简单阐述,DPoS共识分为选举验证人和出块共识这两部分,选举验证人通过持币人按照持币量权重来投票选举出验证人(Bitshares的验证人个数是101个,EOS的验证人个数是21个)。验证人选举有周期性,每轮周期重新复盘当前投票率,来决定是否要替换掉当前的验证人,这种方式类似我们的人大代表制度。

选举人选出来之后,通过节点自定义的排序顺序(目前据了解是按照节点的名称,按照A~Z的字母顺序进行排序出块),来按顺序出块,验证,打包交易等。

DPoS结合了BFT的算法,在解决分叉问题上,遵循最长链原则,认为大部分人(2/3+1)认同的链即为最长链,EOS系统允许1/3的人作恶,同时与+BFT模式的PoS共识公有链不同的一点就是,EOS还能处理超过1/3的人作恶的问题:投票人重新投票将不合格的验证人投掉,扶植诚实的验证人,那么系统就会恢复运转。

另外,EOS上的DPoS+BFT还有段小历史。

EOS也是早期继承了BFT算法的公有链项目。最早2018年6月15日上线主网时,是结合了叫BFT算法的,叫Pipeline BFT,也就是EOS上的出块人(BP,Block Producer)需要互相确认交易信息,并广播信息后达成的一个共识手段,但是该办法不能达到最优,因为区块确认需要等BP出块轮候时间,所以会存现一定的延时。后续,Daniel Lamier提出了使用新的PBFT来优化这样的延时,所以有了现在的EOS共识。新PBFT共识,作用于减少区块确认速度,保证系统在大部分人诚实的情况下还能平稳运行。但计算21几个节点里面的多少个诚实,多少个作恶显得并不是那么重要,加上EOS没有惩罚机制,所以PBFT的容错机制在EOS中重要性就显得不太一样了。

1.7.性能

eosflare上的数据来看,2019年2月2日,EOS的出块时间在2s以内,TPS实时数据在60~90范围之间浮动,高峰值为2125。

Image text

EOS上的Dapp比较多(博彩类,游戏类和交易所类居多),对于资源的使用集中在Dapp上,目前来看用户在EOS上使用Dapp还是比较顺利,正好是熊市期间,用户数也不会很多,所以现在的性能情况基本能满足用户体验。相对于以太坊来说,还是顺畅蛮多的。

1.8.运行

因为EOS是DPoS机制,所以并不是运行节点的人都可以成为出块节点。出块节点是21个,由持币人投票选出。投票排名在21名外不能成为出块节点,只能称作为全节点。

全节点的作用是保存完整的区块信息,或是是向外提供API,是没有奖励的,义务的。出块节点则可以通过出块来获得奖励。虽然两者作用不一样,但是运行上实际没有太大的差别。

出块节点设置方式:https://developers.eos.io/eosio-nodeos/docs/environment-producing-node

非出块节点设置方式:https://developers.eos.io/eosio-nodeos/docs/environment-non-producing-node

由于是21个节点撑起整个EOS网络,随着网络转账数量的增加,节点的服务器配置也要比一般的PoS区块链要求要高得多。一般PoS对服务器的要求,如果只是仅仅打包交易,验证区块的话,2核/4核处理器,8G内存就足以了,硬盘大小看交易数据,但是EOS对于21个节点要求比较高,加上因为太多节点竞争,节点配置要高很多。

CPU:4核~128核

RAM:64G以上~4TB

基本没有上限,但是又不能太低,之前看到一篇中国超级节点的配置清单,已经过去较长时间了,但是可以作为参考,以下是一些配置情况

1(主)

  • Amazon EC2

  • AWS m4.4xlarge

  • CPU: 16 Core

  • RAM: 64GB

  • SSD: 512GB

1(备)

  • Amazon EC2

  • AWS x1e.32xlarge

  • CPU: 128 Core

  • RAM: 3904G

  • SSD: 2 x 1900GB

  • Network: 25 Gbps

2(主)

  • Dual Xeon,

  • 64 Gb ram

  • 128 Gb SSD

  • 40T HardDisk

  • 2k rpm

2(备)

  • Dual Xeon

  • 64 Gb ram

  • 128 Gb SSD

  • 40T HardDisk

  • 2k rpm

3(主)

  • CPU: Intel(R) Xeon(R) E5 2697 v2 2.7GHz 12 Cores

  • RAM: 128 GB DDR3 RECC

  • Storage: 1 internal 1 TB PCIe SSD, 5 external 2.0 TB Intel P3700 PCIe

  • Network: 1 Gbps

3(备)

  • CPU: Intel Xeon E7 8880 v3 (18core) * 4 = 72 cores

  • RAM: 1- 4 TB

  • Storage: 100+ TB

  • Network: 25 Gbps

  • Nodes: 1 livenet and 1 standby

节点配置都是动态变化的,根据系统需求来配置,用户对此的要求会引导节点进行机器升级,特别当交易量上升时,性能如果跟不上会直接反应在用户体验上。不升级的节点会被发现,那么该节点的投票会流失掉。

1.9.出块人

任何人都可以成为EOS的出块人,前提是获得足够多的投票,并且投票量在前21名。出块人所需要付出的成本就是运行节点所需要的机器配置。

EOS每年增发1%(最早明年增发5%),用来奖励节点出块。出块人运行节点程序,日常对服务器进行维护,就可以稳定拿到收益。又因为EOS的DPoS共识没有Slash机制,节点出块人并没有太大的约束或者直接的威胁,基本上坐上出块节点位置的节点都会比较稳定。

相对于服务器的成本,21个节点瓜分1%的奖励绝对是一笔非常大的诱惑。加上EOS的热度比较高,交易量比较大,交易手续费也是出块节点的另外一块收入。也是因为节点利润比较丰厚,很多团队都加入EOS节点计划中,争夺出块节点的位置。2018年6月份,节点竞争进入白热化,技术团队,资本团队都开始争夺,把一般人当出块节点的方式基本排除在外了。

截止在写本书时,排名前21名的节点分别是(排名不分先后):eoshuobipool, starteosiobp,eoslaomaocom,eosflytomars,zbeosbp11111,atticlabeosb,eosliquideos,eosiosg11111,jedaaaaaaaaa,bitfinexeos1,eosnewyorkio,cochainworld,eos42freedom,eosbixinboot,eoscannonchn,eoshenzhenio,eoscanadacom,eosriobrazil,eosbeijingbp,helloeoscnbp,eosnationftw

节点中以交易所,技术团队为主,主要是来自中国的节点,亚洲节点居多,所以出块节点的位置很稳定,虽然有说不作为的节点会被投掉,但是并没有人能定义什么叫做不作为,只要不是出现影响极为严重的问题,基本不会有问题。目前离EOS主网启动已经过去半年时间,虽然有一段时间的重新计票统计,但是节点的位置变化并不明显。

后来者想成为出块节点,目前是很难的。大量的投票权掌控在交易所手中,节点背后其实代表了大户的利益,所以普通散户,技术想要成为出块节点基本是没有希望的。

1.10.持币人

持有EOS的权利有2个:

  • 投票

  • 使用系统资源

持币人可以通过投票系统,选择出块节点,投票前21名的节点来维护整个网络安全,代表持币人来决定系统发展方向。和其他PoS共识不同的是,持币人投票选出的出块节点,并不会一起获得出块奖励的分成,并将用奖励分红来吸引用户投票的行为定义为贿选,按照EOS的宪法,贿选是不被允许的。

另外,持币人持有EOS,相当于拥有系统资源的使用权,比如计算能力,存储能力等。大部分人都没有使用系统资源的需求,一般是开发者有这种需求,普通人只会在发起交易时需要,但那交易所需要的计算力往往可以小到忽略不计,所以大量持币人可以将自己拥有的权利出租出去获得额外的利息。

获得利息的同时,需要自己承担出租期间EOS价格波动的风险。一般情况下,EOS需要抵押给系统获得资源,或者购买系统资源,来获得使用权,使用权的获得意味着你的EOS会被锁定一定周期,那么在资源释放时,你可能或得不到等值法币的EOS。

另外一点就是,目前EOS生态中,有很多竞猜类的DAPP,很多EOS持有人可以直接使用EOS参与竞猜。EOS上的竞猜类Dapp生态发展,要比其他公链好很多,EOS持有者参与的选择性也很多,某种意义上,这也算是持币人的权利了。

1.11.激励

EOS总量10亿,每年增发5%(原来5%都是奖励给出块节点,后修改成了1%,剩余的4%留在资金池当中,用途待定),即1000万EOS奖励给出块节点。由于节点数量只有21个,排除节点的流动性,按照目前的EOS价格,节点的奖励非常丰厚。

奖励的1%EOS包括0.25%的出块奖励,还有0.75%的投票奖励。其中0.25%只有前21个节点能获得,按照出块的比例。其余的0.75%会按照投票比例分给前100名的后补节点。

Image text

两种奖励,投票的奖励明显要高于出块奖励。所以EOS的激励是倾向于投票的,只要被投票了就可以获得奖励,而获得投票最多的,可以获得额外的出块奖励。这套模型有利于投票的持续性,避免像Bitshares那样的出块节点不作为问题。同时,这么做是为了让那些备用节点有动力持续拉选票,即使没有获得出块奖励,也因为有投票奖励来继续坚持作为备用节点存在。

因为投票的重要性,任何不规范的拉票行为都会被视为不合法。比如将奖励分配给投票人,EOS宪法将此视为贿选,认为这种方式利用了系统规则的漏洞,所以我们看到了,EOS投票人是没有奖励的。

1.12.惩罚

EOS没有对于出块节点的惩罚措施,双签等常见的Slash行为,但在EOS上不存在,EOS通过技术方案避免了分叉情况出现,同时结合投票模型,将出块验证人管理权放给了投票人。EOS认为,任何不作为的验证人都会被发现,并会被投票投掉。

EOS是拜赞庭容错的DPoS机制,所以少数验证人不作为是不会触发系统崩溃的,系统允许一定数量验证人的不作为。

EOS的惩罚机制处理方式居于Cardano和Tezos之间,Cardano完全用数学方法解决区块链分歧和验证人作恶问题,Tezos使用人为定义的惩罚和系统机制保证系统安全,EOS则使用的是部分技术和部分人为定义的投票方式来确保系统运行。

目前为止,EOSIO软件运行平稳,并没有发生太大的事故问题。

1.13.治理 1.13.1.EOS BP

所有的治理都无外乎是对权利的控制。EOS的权利始于持币人,持币人通过投票将权利转移给了出块节点,然后出块节点利用系统赋予的权利,维护网络。这种代议制的处理方式看起来合理,但也因为出块节点在EOS上被赋予的权利过大,导致其被推上了区块链世界的风口浪尖。其中,过大的权利就包括能更改账户代码,冻结账户甚至是修改账户私钥等。

不同于BTC和ETH的代码及法律原则,也不同于Dfinity上AI即法律的原则,EOS上,BP(Block Producers出块节点)即是法律。BP具有系统的最高权力,可阻止盗窃发生,可剥夺人身财产,再往上,除了持币人,没有再高的权利机构可以治理BP。

除了持币人投票选出BP。EOS上一些重大决议都需要通过BP投票解决,比如EOS宪法,EOSIO软件升级等,权利在EOS上通过持币人投票汇聚到BP,然后由BP最终决定并执行。所以BP代表了EOS上的最高权力。

1.13.2.EOS 宪法

除了BP,EOS的宪法是EOS在区块链世界里另外一项标新立异的点。在EOS的白皮书当中,对EOS宪法进行了定义:

EOS.IO 应用使得区块链创建了一个点对点的服务条款协议或者绑定用户到一个合约,这都需要用户对其签名,简称"宪法"。 宪法的内容定义了仅仅依靠代码无法在用户间履行的义务,同时通过建立管辖权和可选的法律来解决相互间的争端。 每个在网络广播的交易都必须将宪法的哈希值作为签名的一部分,从而显性的将签名者绑定在合约中。

宪法还定义了人类可读意图的源代码协议。 这个意图是用来识别错误和功能之间的差异,当错误发生时,引导社区对什么是适当或不当修复。

EOS宪法规定了很多和区块链,用户之间的条约,不长,但是有具体,也有抽象,对很多行为都进行了权责明确,GitHub地址。这是首部区块链宪法,我觉得还是有必要给大家展示出来的,以下是摘自网友laughing_always对宪法的翻译:

本宪法是一个多方合约,由成员因使用此区块链而签订的合约。

第一条 - 禁止发起暴力

成员不得对其他成员发起暴力或暴力威胁。以维护生命,自由和财产为目的的对犯罪的合法起诉除外。

第二条 - 禁止作伪

成员应对由错误的或误导性陈述所造成的损失承担责任,并将丧失从中获得的任何利益。

第三条 - 权利

成员间彼此赋予合约的权利和私有财产的权利,因此,除非业主同意,合法的仲裁员的命令,或社区公投,否则任何财产不得转手。

本宪法不为任何成员创建积极权利,也不会在任何成员之间创建积极权利。

第四条 - 禁止购买选票

任何成员不得提供或接受任何有价值的东西以交换任何类型的投票,也不应有任何成员不当地影响他人的投票。

第五条- 无信托

任何成员和EOS的token持有者均不得承担受托责任,以支持EOS的token的价值。成员不授权任何人代表EOS的token持有人集体持有资产、借入或订立合约。

此区块链无所有者,无管理员亦无受托人。因此,任何成员均不应拥有已发行的EOS的token的10%以上的实益权益。

第六条 - 补偿

每位成员都同意,对违规行为的处罚可能包括但不限于:罚款,封号和其他补偿。

第七条 - 开源

每个在此区块链上提供智能合约的成员均为开发人员。每个开发人员都应通过免费和开源的许可证来提供他们的智能合约,每份智能合约应记录在一份说明各方意图的李嘉图合约中,并指定仲裁法庭来处理合约中产生的纠纷。

第八条 - 语言

在发生纠纷时,多语言合约必须指明一种主导语言。如因错误、误导或模糊不清的翻译而造成了损失,任何翻译的作者都应当承担责任。

第九条 - 纠纷处理

所有由本宪法引起的或与本宪法有关的纠纷,最终均应根据《国际商会仲裁规则》,由上述规则指定的一名或多名仲裁员来处理。

第十条 - 法律选择

处理纠纷事项的法律选择,按优先顺序排列,依次是《EOS宪法》、《衡平法原则》。

第十一条 - 修订

本宪法及其下属文件不得被修订,除非token的持有者发起了投票,这个投票的参与人所持有的token数量不少于15%,并且赞成票数要比否定票数多10%,并且要在120天的时间段内持续30天。

第十二条 - 发布

成员只能将信息发布到其具有发布权的区块链上。 此外,成员自愿同意为所有成员永久且不可撤销地保留一份副本,分析和分发所有的广播交易和派生信息。

第十三条 - 知情同意

所有代表其他成员提供工具以便协助建设和签署交易的服务供应商应向其他成员呈现本宪法的完整的李嘉图合约条款和其他参考合约。如因未向用户披露完整的李嘉图合约条款而导致损失,服务供应商应承担责任。

第十四条 - 可分割性

如果本宪法的任何条款被宣布为不可执行或无效,其余条款将继续有效且可强制执行。

第十五条 - 终止协议

在成员签署的最后一笔交易被纳入区块链3年后,该成员将自动解除本宪法规定的所有可撤销义务。 经过3年闲置的账户,可以拿出来拍卖,收益根据系统合约条款分配给所有成员,然后再重新分配。

第十六条 - 开发者责任

如果软件开发者在表达合约意图时产生了无心之失,成员同意该开发者免于承担赔偿责任,无论这种失误是实际过失还是疏忽过失。

第十七条 - 对价

本宪法规定的所有权利和义务是相互的和互惠的,对所有各方都具有同等重要的价值和成本。

第十八条 - 承诺

当成员签署一项交易时,合约被视为接受,该交易包含一个TAPOS证明,该证明的隐含状态包含该合约的ABI,并且该交易已纳入区块链。

第十九条 - 协议副本

本宪法可以签署生效任意份副本,每一份副本在签署和交付时都可被视为协议原本,但所有副本将一起被视为一份相同的单一协议。

第二十条 - 临时宪法

该宪法是临时性的,旨在保持有效,直至一部永久宪法被写入区块链,并在全民公投中得到批准。

End

  1. 1.13.3.ECAF

不止于宪法,EOS赋予区块链的治理干预是空前的。面对大量的丢币盗币情况发生,EOS上出现了一个新型的治理机构ECAF,一个由社区自发组织形成的仲裁平台,用来处理EOS上发生的一些纠纷,该平台由Thomas Cox和Lan Griggs等人在主网上线前创建。

ECAF在官网上的介绍如下:

解决EOSIO区块链纠纷的EOS社区论坛

The EOS Community's forum for the resolution of disputes on the EOSIO blockchain

ECAF负责接受持币人的仲裁请求,负责的仲裁人根据EOS宪法对案件进行仲裁,并发送仲裁结果给BP执行,BP自觉对仲裁结果进行审核,并决定是否执行。

目前ECAF已经处理了多起案件的仲裁,包括:

  • 864 个仲裁案件

  • 3,479 个仲裁操作,如邮件通知,进一步收集资料等

  • 因为丢失私钥而延迟的仲裁案件比例:39%

(2018年12月数据)

仲裁的过程并不顺利,而仲裁本身也不是一件能顺利完成的事情,通常一件案件的仲裁要得到结果往往需要很长时间,而从仲裁到执行,又会有一定时间的间隔。ECAF有仲裁权但没有执行权的情况下,这种模式的问题比较多,时效性比较差。

对于ECAF的争议也有很多,有些人认为ECAF的权利过大,大到可以侵犯个人财产;有人则认为ECAF的存在阻止了很多区块链丢币盗币情况的发生,是利大于弊的;总之ECAF的争议还在持续中,由此影射出来的一个现象就是,大众对EOS的治理也同样属于争议当中。

从BP到宪法,从宪法到仲裁,我们可以看到的是,EOS的治理其实加入了很多人为处理方式,这些机制将EOS变成了一种大国治理的模式:国民(持币人)投票选出代表(出块节点),代表决定宪法,用来约束代表和国民行为。

这种模式无所谓好坏,就像现在世界上那么多国家,治理的方法都不完全一样,而治理一个国家的方式的确也有很多种,也没人能说得清楚谁对谁错,我想,只有时间才能证明吧。

1.14.问题

目前EOS的问题比较集中,中心化诟病和没实现的性能是投资人最为头疼的点,这些点可能是致命的,严重情况会被竞争公链超过;当然,也有可能是利好的,让EOS在去中心化的时间里面独树一帜。以下,我列举几个我认为目前EOS所面临的问题:

  • 性能不达标

白皮书中描述EOSIO的性能能在每秒处理上百笔交易,目前TPS峰值才打到3900,和理论描述相差太远了,是数量级的差别。

  • 中心化诟病

21个节点出块的方式,遭人诟病较多,很多人觉得21个人太少了,不是开放性参与的区块链缺乏去中心化的精神,所以很多人更愿意将EOS称作为联盟链,而不是公链。但是,我觉得只要EOS的DPoS共识不改,恐怕21这个数量也是不会被修改的。

  • Dapp发展畸形

过多博彩类,竞猜类的DAPP在EOS上出现,仿佛整个EOS生态的发展是靠赌博起来的。赌博公链这顶帽子一旦扣上,相信想摘掉可不是那么好摘的。

  • 过于依赖BM

EOS成也BM,可能败也在BM。这是跟过BM项目的人总结出来的,Bitshares和Steem都曾因为BM的设计爆红,而随着BM的离开而没落。中国人总说,事不过三,但是这未免也太巧合了。去中心化区块链过于依赖一个人,可能导致失败的概率会很高很高。

1.15.未来

目前EOS是一个在生态发展上能赶得上以太坊的项目,高出的性能优势让很多项目都从以太坊迁移到了EOS,这是EOS的机会。虽然说现在EOS上的DAPP发展有点畸形,但是能吸引众多开发者到EOSIO上开发,就已经很不容易了。

未来EOS仍需要在解决去中心化的情况下,完成对性能的极度追求,以此来寻求在性能领域的突破。同时,维护好已存在的生态壁垒,那么EOS的未来应该会是可以期待的。