EOS主网TPS再创新高,距实现传说中的百万级不远了?
据最新消息,目前EOS主网TPS最高达到3590次/秒,已经超过BTS的3300次/秒,但据EOS高调宣称的百万级仍相距甚远。在公链激烈竞争的这一年,TPS一直是各家宣扬的代表高性能的重要指标,TPS是否真的是越高越好呢?
TPS通俗的定义是系统吞吐量,也就是每秒系统处理业务的数量。假如TPS每秒并发太低,很容易造成网络严重拥堵;提升TPS处理速度,又会牺牲部分区块链的安全性或稳定性。从现实应用来看,百万TPS的处理速度在现有环境中的应用价值并不是那么必须,并且区块链技术不能仅仅依赖提升TPS去解决所有的问题。
业界已经达成共识,目前的区块链处理速度无法满足业务应用的要求。无论是年初的Cryptokitties事件、6月受Fcoin影响的天价Gas费、或是Fomo3D爆发后的拥堵,这类问题接二连三地将以太坊推上舆论的风口浪尖。因此,Sharding(分片技术)解决方案已成为过去两年中最热门的技术之一。
我们应该意识到,区块链的诞生并不是为了盲目的高性能,有太多人走向极端,过度宣扬TPS的重要性,动辄上万,甚至十万百万。很多时候甚至有些用力过猛:就比如一个小小的山村,人们却想要从四面八方建立起通往村庄的16条公路。即使先不考虑可行性问题,如果16条公路都被建成,也不可能有这么多车会在这些公路上行驶,因为村庄里居住往来的就几十户人家。
千位级的TPS已能满足每天处理1亿笔交易的需求
以下是一些主流公链及知名项目的数据:
我们可以看到,用户数量与TPS并不是特别相关,而是与市场需求相关。
首先,开发技术和构建基础设施(节点等)需要一定的时间。TPS不仅是唯一要解决的问题,其他区块链技术也有待突破。需要明确的是,系统的吞吐量和TPS实际上是两码事。区块链作为一个系统,最终量化性能的其实是吞吐量,即单位时间内成功传输数据的数量,这与CPU消耗、外部接口、IO等密切相关。区块链的网络节点更加分散,因此性能通常不如集中式高带宽服务器的性能好。区块链的TPS可能不是处理速度问题的瓶颈。
其次,从使用量的角度来看:假设x是每天的交易数量,所需的TPS是y。我们考虑简单的80/20规则(帕累托二八原则):80%的x交易记录需要在20%的时间内完成,而y需要满足峰值要求。得出:
y1 = x * 80%/(24h * 20%)* 3600)= x / 21600
如果节点完整且用户数量稳定,我们可以进一步考虑平均用户分布,得出:
y2 = x /(24h * 3600)= x / 86400
从上表可以看出,即使公有链每天处理1亿笔交易,千位级的TPS也足够了。目前,区块链正从发展过渡到高速井喷式阶段。用以太坊做参考,目前的峰值仍保持在今年初1月4日,高达1349890笔交易,昨日交易量约为76万笔。目前以太坊每秒30-40/笔交易的速度确实亟待提升,V神下一阶段目标就是探索百位级甚至千位级的TPS解决方案。
对公有链而言,并不是TPS越高越好
当然,如果公有链需要支持Dapps的集中营销,就另当别论了。想想淘宝每年的“双十一”购物活动,全天可达14.8亿笔交易,最高可达18万/秒。除非你认为区块链上的用户将达到双十一那样的狂热,否则不需要高达十万级的处理速度。如果能够建立真正的点对点经济模型,那么交易高峰集中的情况也不太可能发生。
应该注意的是,上面是对交易记录数量的分析,交易记录是指使用区块链进行代币转移或部署智能合约的用户。可以粗略的计算一下,假设一条公链上有很多Dapps,共有1000万用户,每个用户可以使用不同的Dapps每天与链进行多达10次的交互(事实上,大多数人一天都不会有太多消费,也并不是Dapp上的用户进行的每项操作都会发生代币转移)。假设有一个基于区块链的淘宝等效Dapp,用户可能会浏览商品,编辑购物车并与买家讨价还价,但实际成交的订单却很少。
事实上,不同应用的用户数、PV(page view)与TPS都存在一定的函数关系,这需要根据市场需求来具体建模。但系统TPS达到千位级别也是足够承载的了。
还应该注意的是,独立测试的TPS不是最终的TPS。有的项目方为了刷高TPS,购买数百万的设备在一个实验室内进行测试只是起到PR效果或者自娱自乐,没有大规模被使用的公链,讨论TPS是没有意义的。
因此,就公有链而言,并不是“TPS越高越好”,它需要基于一定的市场需求。根据目前的市场情况,TPS过千已经能够满足大多数商业需求,过高的TPS反而会降低安全性并可能导致性能过剩。因此,TPS的速度不是公有链的最终目标。
TPS提速受哪些因素的制约?
对于区块链系统,TPS是每秒生成新事务的记录。矿工将“区块”提交给网络,每个区块链上都包含了一定数量的交易记录。想探寻提升TPS的方法,就要先了解区块是如何生成的?
步骤1:运行共识的节点:节点持续监视系统并启动协商一致的算法。例如,PoW工作量证明机制运用了哈希现金算法
步骤2:广播和验证时间:当节点完成计算时,它将其提交给网络中的对等体,然后在验证后将其连接到区块链,并继续广播直到网络中的所有节点达成共识。类似老师带头并写了答案,答案传递给第一排的同学,第一排的同学验证并传递给第二排的同学......直到最后一排的学生完成验证,达成共识
步骤3: 为了防止区块链受到攻击,通常会在几次甚至几十次安全确认后才进行代币转移。例如,某些交易所需要12次确认。这里,“X次确认”是包含目标事务的区块数,并且有X个区块连续地接到区块链上。X越大,表示区块链越长,攻击者就越难以攻破
这三步是有前后次序的,不能并发。事实上,区块产生的时间仅为第一步与第二步,第三步是前两步的循环往复,用于确认系统的安全。所以,TPS的计算公式为:
TPS = 一个区块内包含的交易数量 / 区块产生时间 = 一个区块内包含的交易数量 / (共识算法运行的时间 + 广播并验证的时间 )
区块链面临的“不可能三角定律”
通过研究上述增强TPS的方法,我们发现增加TPS可以通过减少验证时间的方式,这样就会牺牲安全性或分散性。如果TPS盲目增加,区块链将完全牺牲“去中心化”。与此同时,对矿工的机器配置要求也会更严苛,如果它不能及时上传交易,那么将会产生更多未完成的交易,隐藏的危险也就越大。虽然EOS使用21个超级节点来实现高效率,但它也牺牲了部分“去中心化”和安全性,引入了DDoS等潜在风险。
这就是著名的“蒙代尔不可能三角定律”:效率、安全性和“去中心化”无法同时实现。请记住,升级任何一个指标将不可避免地牺牲其他两个指标。
如果选择去中心化、高效率和低能耗,就必须牺牲安全性。在金融领域,这种解决方案几乎都被一票否决。如果选择去中心化和安全性,放弃高效率和低能耗将不可避免地导致应用和场景的减少,这意味着从所有主要业务的应用程序中撤退。最后,如果选择高效率、低能耗和安全性,它将破坏去中心化的愿景。
“区块链”等于许多人心中的分权,“去中心化”是其最具价值的一个特点,它支撑起了无信用交易。作为第一个区块链应用程序,比特币旨在分散,无需信任任何节点,通过共识机制的复杂设计将信任放入整个系统,从而防止攻击。
“去中心化”的目的是使系统可信和安全,随之而来的可能是交易缓慢、拥堵,但就像开篇所说的,那些吹嘘千、万量级的TPS其实对目前区块链的用户量来说是一种“产能过剩”,现阶段的首要任务还是扩大区块链Dapp的落地和普及。同时我们也有理由相信随着软硬件的不断提升,不可能三角限制将逐渐弱化,行业将迎来总体性能的提升。