前几天,一张火币客服答复用户关于EOS提币慢的截图在网上广为流传。之所以这么火,因为客服是这样解释的:“目前EOS区块网络拥堵,所以审核速度较慢,请您耐心等待,后期恢复之后会加快审核的速度,或者建议您可以更换其他的币种进行提币……”有网友以此称火币为“神奇宝宝”。
本文于2018年7月首发于币乎
EOS作为区块链3.0的主要代表,性能非常强大,怎么会出现区块网络拥堵?大家第一时间看到这个截图,就猜火币是不是偷偷拿用户的EOS去给自己的节点投票了?投票后解除质押需要三天时间,所以故意编个理由拖延时间?虽然火币客服的解释不太妥,但大家应该是错怪他们了。
大家都知道,EOS一开始就提出要实现百万TPS,甚至在第二版白皮书中改为无限的TPS。当然,EOS要达到百万级别的TPS仍需很长一段时间,目前在一条主链和单线程的情况下,TPS大概也就是一千左右。TPS也就是每秒处理的交易量,衡量一个区块链性能的重要指标,目前比特币的TPS是7,以太坊的大约是40。从数据上来看,EOS目前的TPS也是远远高于以太坊。那么以太坊偶尔才出现可感知的拥堵,而EOS目前使用率还不高的情况下怎么可能出现拥堵?
这件事在“EOS主网启动演练”微信群也引起大家讨论,其中就有火币的技术人员,天晓整理了一下聊天内容,给大家介绍一下缘由。
这件事的直接起因跟ADD有关,他们近期对EOS主网进行不设限大规模交易请求的压力测试。这个测试时从7月10日起,EOS的即时运算量在7月11日还超越了以太坊。而火币的技术人员也是在这段时间发现了异常情况。具体内容可以 查看
当ADD开始压力测试时,帐户的未使用的CPU下降到0,测试结束后,CPU恢复正常。下面是出现错误时的提示代码:
据介绍,这个账号是质押了100个EOS,但都不够一个普通交易。要知道,目前很多用户在创建EOS账户对于CPU和NET资源往往只质押了0.1EOS,但平时都可以正常使用,为什么会这样?
原来EOS的CPU是动态调节的,当EOS链主要处于空闲状态时,帐户可以使用比其所质押获得的数量多1000倍的资源;当不空闲的时候,会严格按照1:1的比例分配资源。
简单的说,就是平时大家能用1000倍*你的抵押额度,拥堵时只能用1倍。所以当进行压力测试时,全网帐号可用的CPU将骤降,很多人交易发不出去,交易所用户出现提币交易失败。所以会导致一个用户体验问题,用户觉得自己质押够了,最后突然发现不够,导致大量交易失败。
网友“Allyn”认为这个不是bug,应该算是设计逻辑缺陷,只考虑全网的动态调节,没考虑单账户的动态调节。他建议,前百分之10按照空闲1000倍来计算,当使用超过百分之10之后,按照500倍,超过百分之50之后,按照100倍,超过70之后则50倍,超过80则1:1。“这样的话,单账户就没办法大量占用空闲资源了。”
最后说一句,EOS还是一个新生儿,仍有一些小问题需要解决,这也是进行压力测试的目的之一,从而推动EOS体系不断完善。