【专访】DPOS共识的进化与应用

Anyo

03-15

分享时间:2019年3月12日

分享嘉宾:孤矢,EOS原力创始人


大家好,我是EOS原力孤矢。我是一个很别扭的角色,因为我从EOS主网没启动就开始骂EOS,骂到今天已经快一年了,但同时我们又边骂边学习,反而发现EOSIO是一个很伟大的协议,而Block.one也是一家很伟大的公司。 


其实今年很多主网都在近期上线,虽然他们说自己是纯PoS,其实很多都用了EOSIO的DpoS。最早的DPoS像BTS现在其实也还在活跃着,然后EOSIO里面其实有一系列的这种姊妹链,大概有十几个里面都用的是EOSIO这套东西。而我们国内像NAS 、TRX 、NEO 其实都用的是DPoS,甚至很多其实直接用的EOSIO,只是说改了一下名字。比如说它把RAM改成能量什么之类的东西,其实都差不多,代码都是一模一样,很多地方都没改。 


有些项目可能总共有七八个节点全是自己官方在运营的,其实是一个互联网的服务,不是一个区块链,是谁大家也知道,对吧?但因为我们社区说我出来不能骂人,所以我现在就提这个现象不提人名。


01、对DPOS演绎最广泛的EOSIO


然后我们就讲讲对于DPoS演绎最广泛的EOSIO。首先我们区分一下概念:EOSIO其实是block ONE 团队写的代码,它不是一个软件,也不是一个系统,它只是代码。 


Block.one是开源项目的开发团队,我们去年6月3号持有EOS的时候,它还叫ERC20,其实是在以太坊上发行了一个通证权益。你可以理解为,就是你给他项目捐钱了,然后人家给你一个积分。至于现有的大家用的EOS,是有一个叫EMLG团队启动的平行主网,它的代币符号就是EOS,也是现在最活跃的EOS主网。然后我们原力也是改进了以后也启动了EOS平行主网,我们用的也是6月3号的创始余额,其实像ENU起步更早,它比EOS还早一点,它是用EOSIO的代码启动的,但是它没有用它的代币规则,因为它启动的时候是为了解决它另外一个问题,就是所谓的人均基本收入的问题,然后它觉得说我做一个DAPP写一个合约解决不了问题,那条链太贵了,所以它启动了一个自己的主链。 


后面Telos对 EOSIO进行了改进,改了一些在选举上的问题,比如一票30投用了不同的权重来计算。EOSIO每天都有新的策略在启动,它其实卖的都不是一条链,而是一套协议。在他推出这套协议后马上会有无数条链在做。 


02、对EOSIO的一些误解


我要澄清一下对EOSIO的一些误解——其实我最早也是这么骂过来的。一开始大家会说EOSIO不是区块链,觉得你这二十一个超级节点权限过大,想怎么玩就怎么玩。这就涉及到你怎么看待什么是区块链的问题。就我个人的理解,我认为区块链它是个不可篡改的公共账本,而去中心化只是一个手段,需要去中心化到什么程度,还得看你实际应用的需求。有人攻击EOS说它只有21个超级节点,不安全。但其实如果有51%的算力控制了比特币和以太坊,它们的账本要改也是可以的。 


另外还是有人说EOS它不够去中心化。那好,比特币社区里谁说了算?总得有人说了算吧。至于谁说了算,谁就会变成某种意义上的中心,这是最去中心化的标准。然后有人说EOS没有固定上限,其实这只是激励模型的问题。没有固定上限这件事实际上是说给谁听的呢?给那些持有比特币,指望比特币能涨到一千万美金的那些人听的。他们思维很懒惰,就觉得我什么都不用改,比特币就能涨到1000万美金。


就发行方式来说,其实EOSIO的发行已经够公平了,它其实就是每天公开释放出来一定数量的币,你愿意花多少钱买,买它就好。它的发行方式比以太坊还要公平,没有什么私募机构这些乱七八糟的东西。有人说EOS不能自由加入和退出,这个确实是有限制的。但是你去做节点,你买台服务器,这个没人限制你吧?你不想做节点又退出来,这个也没问题吧? 


然后说代币没有矿机挖矿来得靠谱。其实,你用矿机挖币,最后计算的也是钱,最后表现出来的效果还不是锁定六个月资金?但是,在EOS里我们不仅可以锁定六个月,还可以锁3天,也可以锁12个月。另外来说政府审查,这件事情我觉得还是好事,EOS迎合监管,这很好。很多人说比特币不要监管,那我就问你,假设你家小孩被人偷了被卖掉了,人家用你家的小孩交易了一笔钱,这笔钱又没法追查,你是什么想法?我不是说要刻意迎合政府的审查;但是,针对那些在商业场景或者经济活动中一些违约的东西,我们确实需要一些治理。 


另外,即使节点联合分叉,你的区块链会留下证据,所以说这件事其实很难被操纵。你看EOS到现在为止也没有分叉,包括我们原力启动的时候,大家会因为要骂我们,所以才说我们是一个分叉,但其实在我们启动之前是没有账本。再说短程和长程攻击,其实现在来说代币抵押里面有很多逻辑是可以重新设计的。以往我们对DPoS的理解或者PoS有很多理解,它都是一篇论文在或者说是一个很小的网络在运行的,没有大规模的实践,所以我们认为它会存在这样或者那样的问题。但实际上很多东西是可以改的,这些问题在实际过程中都有解决的方案。


03、EOSIO对DPOS共识的演绎


实际上EOSIO它对DPoS共识的演绎还是很好的,我刚才讲它是有区块哈希的,你就算做到了节点联合做恶,你也不能说你做到了不被发现。另外就是说区块间隔这个事情其实要比别的要好,当然它的诟病也是说你指定这个节点出块,如果这个节点连续出六个块,这个节点作恶了就麻烦了,但是这个事情可以节省带宽,可以降低延迟。 


而且它借鉴了传统处理器以及流水线架构,它其实是理解成很多的计算资源,而且它给并发留了一个口子。当然你看最近BOS它把不可抵抗的时间直接降低到了三秒钟,这个问题就是带宽成本技术上升,就可能节点根本就支撑不起,是感觉确实速度快,但其实节点是撑不起的。本来EOS就已经很贵了,一个节点大概一年要12万美金左右。21个节点算一下还是很贵,我这里面要说一下,就是说杨光博士说比特币能耗高,浪费资源不环保,我觉得是环保,我并不觉得PoW有问题,因为如果你自己跑到矿场那边去看看,矿工如果用我们城市里正常的用电,它根本就不盈利了,它一定是在那些比如说丰水期的水电,有很多电本来要被白白浪费的,它用这些电建立起了比特币的整个的体系,所以我觉得比特币是它是消耗电比较大,但是它不浪费。 


这是我的看法,而且再说了我们区块链系统哪个不浪费,你要跟人家一台节点记账,你21台,别人几千个几百万个大家都浪费。你如果要跟那个比的话大家都浪费,但是你要做到的是说你付出这么高的代价要干嘛。你看现在EOS很多开发者也很傻逼,就是说我啥都往链上传,但是EOS没有这一块的激励,不是说你优化合约,你往链上传的东西少一点,它就给你激励。没有,所以开发者就说大家一起堵,因为没有激励,所以这是它遇到的一些问题。 


它的不可逆块,其实可以缩短到一秒。另外我们来说说它最牛逼的一点,就是它做出来了。你会发现,商用的时候我们不说你论文写的怎么样,或者你理论怎么分析。商用的时候,大家第一个想到的就是tps。其实我们团队是最早开始攻击EOS网络的,但是我们失败了,我们研究了很久,我们抵押了10万个EOS,这个账户到今天还是很知名的,但是我们失败了。EOS说的是说你有多少币你就有多少整个网络的资源,但节点不可能按照你规定的最高配置来。在早期启动的时候,很多节点它的配置是没有达到官方的配置要求的,所以说这个时候你可以抵押大量的EOS,然后整个网络就只能给你一个人用。接着节点就去升级,然后节点会针对我们这种垃圾账号做一个制裁,但其实本质上是合法交易,不算是作恶,我是用合法的交易来测试网络的极限的。EOS到今天说实现4000TPS这个极限记录,这是我们保持的,到今天也没有人破过。


另外,既然这个系统是需要治理的,其实超级权限的存在我觉得是OK的,我以前其实最诟病这个。以前在一票30投的情况下,一个节点或者一个持币大户是可以控制整个网络,但是你如果是一票多投或者说一票三投一票五投,最后实际上还是分散在几个人的权力在手中的,那EOS里面即使没有超级权限,大于2/3节点共识啥都能改,我刚才说区块链不可篡改,但没有说不能修改,你达成共识就可以修改。所以说他的超权限其实是给了一个多签,它是一个状态,你选上节点,2/3的节点,在这过程中你通过了才行,并不是我们传统的理解的有一个人在BM拿了一个章,这章啥都能盖,不是这样的。


王立新之前给了我一个标题:EOS会不会凉?我觉得不会。EOS社区目前为止还是很强大的,至少在用DpoS机制的链里还是最强大的。他们开发了什么,其他DpoS币种就抄什么。这没的说。


04、EOSIO的发展状况


从去年6月3号开始,EOISIO就一直在运行。其实如果没有我们团队采取这样的行动的话,EOSIO启动可能会晚一点,因为我们要启动主网,所以整个社区就用不成熟的代码行动,而且居然能活到今天,这确实是一件很厉害的事情。


而且EOS重新定义了很多事情,以前大家会觉得说EOS不是区块链,BM也没有学术背景,然后他之前干的项目都干得不好,然后或者说他21个节点怎么样,但是今天大家会觉得说EOS好像也是区块链。最简单的就是我跟“EOS奶王”玩,我们俩天天骂架,但是我们俩私底下见面的时候,我说其实你看我们原力这些实践在EOS上是可以去改进的,奶王说社区里现在谁都说了不算,你让我去干嘛。其实EOS有时候会像POW一样让你无奈,就是你有些好东西你改不上去。不过好在现在有七八条侧链已经部署上了,正在部署还有几十条侧链,这套东西开发者很喜欢。 


现在我们来谈谈EOS待解决的问题。一个是说EOS现在的不可逆块时间还是太长了,但是这个设计其实是合理的——你当然可以降低不可逆块时间,但是你带宽成本很高,你可以先降到一秒钟,但你的成本太高了,所以它现在这个东西他不是说不给降,而是说在想更好的方案。另外就是并发,白皮书里面所谓的百万tps,其实在没有解决并发问题的情况下,是没有办法达到的。不过这个问题也已经在解决之中了。这个东西解决了以后,大部分商用的东西就可以用EOSIO来做共识。


EOS还有一些其他的问题。例如经济模型有问题,以及奖惩机制不得当。去年市场开始下行,根据DPoS或者说EOSIO里的设计,随着币价降低,节点的收益也会逐渐降低,最后甚至会到一个入不敷出的状态。但如果你看PoW,它就不存在这个问题。这个时候比如说币价跌到这个份上,电价便宜了你还能挖一挖,电价贵你肯定就不挖了。然而,在现实世界中,总是有人会找到更便宜的电和机器去挖比特币,这是比特币比较好的地方,而EOSIO它就没有这种机制,只有一个个超级节点。 如果光靠节点收益的话,就在这个点其实还是赔钱的。


好在EOS社区比较强,就是它的社区都愿意赔钱。但你不得不承认这一点——其实BM也无奈,本质上我们不应该只靠社区,而是应该改善经济模型来平衡节点收益。有些节点他可能也不愿意这样做,因为他本来可以利用它的资源服务其他客户,赚到更多的钱。


另外大的诟病的就是它的资源模型。夸张一点说(高峰期的时候),我要转0.7个EOS,我还要抵押1万的EOS,这是不是很好笑?所以说这是个很严重的问题,我们原力是在这个上面加了个工程手续费,CPU和NET手续费,RAM是从你投票分红里面去分配。当然其实抵押依然是最终能保护系统RAM的一个机制,最近他们在上线一个叫REX的模型,其实可以缓解这个问题。


最后我们来聊一聊惩罚机制。这两天大家都在讨论一件事,就是由于一个黑客袭击,有人丢了很多币。而那个记账的节点作出的判决就是继续交易,但节点本身不会因为自己的错误受到惩罚。惩罚机制在EOSIO里非常少见,这是需要改进的一点。


05、EOSForce对EOSIO的改进


EOSIO如果在下个月启动的话,或者在下下月启动的话,远比今天就是去年六月份启动到现在要好的多,因为当时启动的时候整个系统其实都不够完善;不过话说回来,6月3号启动并不是一件坏事,毕竟我们可以在运行中暴露问题解决问题。


不过,我觉得如果要彻底解决原有的那些问题,BM需要在新开发的这些版本上做一个硬分叉。我觉得BM是有胆子去做这件事的。为什么我会有这样的一个预测呢?因为一票30投,导致某个大交易所控制了整个EOS,这很恶心。 


我之前做过推演。但是我没想到现实社会里会发生这样的事情,就是说一个大交易所拿着用户的币然后控制所有节点,以至于其他人没有办法对网络进行改进,整个网络都是朝着对该交易所有利的方向走。如果EOS要发展壮大,所以说我觉得修改资源模型、节点和DAPP奖励机制,这些功能还是要加一下的。一票30 投也必须废除。


EOS必须要硬分叉一次,我觉得半年之内必须要分叉。


06、EOSForce对EOSIO的改进


现有EOS社区它更多的是通过治理来解决大家技术上的一些难题,比如说EOS里有个ECAFE,然后还有一个公投系统,还有21个超级节点的节点议会。但本质上,EOS现在链上最大的权力来源就是这2/3的节点。 


我们也没说比人家好多少,但是我们很简单,没有宪法也没有那么多组织,链上规则是啥就是啥。链上规则就是2/3节点说了算,然后2/3节点就一票一投的投票人选出来。如果你这个节点不作为,我把你撤掉就好了,然后我投别的节点上来去干活。我们的系统也加了一些东西,我们有一个新的协议会去检测这些不在线的僵尸节点,比如说有些备选节点,它其实有收益的,但是他可以选择不在线,我们大概每30分钟会检查一次,系统会自动检查它一次。你检查它如果在线的话就给他有奖励,不在线时没有奖励。


对于交易堵塞的攻击,我们加了API去查它离那个区块高度有多远,如果太远的话它就可以回来。交易堵塞攻击实际上是链上的问题,不是开发者的问题,大部分EOSIO上面合约的漏洞是开发者自己不小心造成的。其实链上一个普通用户去买资金盘,然后把币打到它的地址里去,然后你让超级节点把币给他要回来,这就好比你充话费充给别人了,你根本就要不回来了,这不是链的漏洞,这是你个人傻逼对不对?很多问题大家觉得是链的漏洞,其实不是。你说以太坊DAO的危机,是链的问题吗?回头你说为什么ETC能活到今天,从链的逻辑来讲没有人作恶,就你自己合约写垃圾被盗了,所以很多社区的人会觉得说V神牛逼他也拯救了大家。什么叫作恶?不是说你做资金盘在链上,那不叫做恶,做恶是说你没有按照协议的规则或者利用协议的漏洞在攻击整个系统。只要是协议允许的范围内,你都不是作恶。 


EOS治理自然也存在很多问题,一票30投就是一个很傻逼的行为。2/3的节点其实可以把整个工作系统否决掉。请记住,现在是一票30投。而投票不分红,这又导致本来就参与投票的人就不多,怎么办?不分红谁来投票?而1票30投又导致一个节点,即那个最大的节点说了算。我说了不算,其他节点说了不算,这些公投系统、ECAFE说了都不算,那个控制着最大票仓的人说了才算。谁也不敢得罪他,否则他下次不投你,把其他人投上去。而现在,40%的投票都来自于这些大交易所大户的抵押。这就是最大的问题。


针对现有RAM的问题,其实我们不认为抵押租赁、抵押操作这一步有什么问题,我觉得这个设计很好,但是现阶段资源问题没有解决。所以我们暂时用CPU、NET收动态手续费,而RAM是通过投票分红来租赁RAM解决的。BM可能觉得说这就是房地产,大家去买卖,价格由市场决定。我们认为是行不通的,因为在中国就是这样,结果那么多房子大家住不起。不如把整个RAM改为归全民所有,然后租赁赚的归也是归全民所有,大家都同意,大家租出去去用。这里还是由市场机制来解决它。 


07、原力在做什么


我们社区现在不论成立秘书处来帮大家去提交各种提案也好,或者说改进一些东西也好,其实都是社区自己在搞,1票1投,说实话我们在里面真的是没什么话语权。我们把自己定义为打工仔,在开始的时候设计了这个系统,但是从这个系统启动以后,整个社区它通过它1票1投选出来节点,然后去替投票人们发言。如果它的节点不作为,投票者也可以换。


我们也在持续改进投票系统,比如说以往是我投给了A节点,我要撤销要投给B节点,我可能是需要三天时间,因为投票有分红的情况,他不愿意撤销,我会损失我三天的分红。我们把它改了,你投票抵押以后你投给A节点,你也可以随时换到B节点,也可以随时放到C节点,但是你如果要撤票,你要撤销这一笔的话,你还是需要三天时间,让它换选更高效,我们也看了一下对系统没什么大的影响,所以我们就这样做了。 


我觉得在EOS上更多的不是理论,大家都是边干边看边改,包括说启动主网的时候也时间很赶。EOS启动主网可能跟BCH一样,它的启动的时候并没有经过反复设计和调试。我讲一下启动的时候是怎样,我们从17年年底就在想EOS主网启动好像没人干,然后到了二三月份的时候还是没人干,然后我问很多在竞选节点的人,我说你们知道主网怎么启动吗? 


其实到5月27号的时候都没人知道,但我们那个时候我们做出来了,因为我们终于跑顺了,我们说我们要启动。那时候我们看到了DPoS的高效,一票30投在那个时间点发挥了巨大的作用,所有的节点联合起来说,不能被原力抢了这个主网,然后大概用了14天就把主网启动了。其实我们提前准备了大概半年多,结果还比人家迟了,所以它还是很好的,DPOS很高效,你想想代议制民主,我下面的人,你下面的人,那么一号召就做起来了,但是一票30投确实是不好,在我们运行的过程中是不好。 


我们基于先改进后启动的理念,在6月17号启动EOSForce,运行到了今天。我们没有白皮书,我们当时提出了改进方案,然后就上线了。所以大家就很懵逼,因为以前的团队的话可能先发个白皮书,做完私募做完ICO,可能两三年东西出不来,我们是先上线,我们到现在都没有白皮书,因为我们团队出生的时候我们的链就出生了。我们未来会支持程序化启动多种公有链,就我们现在做到的是说你可以用我们的程序启动一个EOSIO,也可以启动一个基于手续费模型的EOS原力,这都是开源的,然后你还可以基于EOSIO启动一个免资源模型的链。其实EOSIO它在商业上为啥这么受欢迎,因为它稍微改动下就是联盟链。


我们接下来会上线一个中继链,满足基于EOSIO启动一些公链之间的互操作的需求。同时我们还会探索DPoS如何100%公平发行的问题。这件事其实挺难的,因为既然是一个DPoS了,网络启动的时候没有币怎么做节点,没有节点怎么去分发代币,这个真的是一个先有鸡还是先有蛋的问题。 

推荐阅读

关注
加载更多