接触区块链的朋友经常会听到这样几句话,比特币的TPS只有7,以太坊可能稍微好一点,TPS大约在10-20,EOS可以将TPS做到100万等等,这其中的TPS经常用来对比公链的好坏。
基本概念
那什么是TPS呢,专业一点的解释,就是“系统每秒钟能够处理的业务数量”,通俗的定义,就是“系统的吞吐量”。
具体计算方法是:
TPS = 并发数/平均响应时间
对于比特币而言,并发数就是一个区块链里包含的数据大小,目前一个区块的大小是2118。
平均响应时间就是打包一个区块的时间,也就是10分钟,600秒。
那么比特币的TPS=2118÷600=3.53
对于以太坊来说,一个区块的数量取决于“币龄”的多少,平均响应时间也不固定,同样取决于奖励多少,粗略估计,TPS大概就是每秒十几笔。
举例说明
最贴近生活中的例子就是支付宝了,我们日常生活中一般都会用到它。尤其是当双11或者其他购物节的时候,大家都会在零点买很多东西。
双11那一天支付宝如临大敌,因为在零点那一刻开始,会有无数消费者会在同一时间进行交易,如果TPS每秒并发太低,很容易造成网络拥堵严重,你的支付可能都不会被确认。
根据有关数据统计,双十一抢购,支付宝全天完成14.8亿笔交易,峰值18万/秒,要远远高于目前EOS的几千。
还有一个例子就是网游了,玩过网游的都知道,早期腾讯代理的游戏就一个感受:卡,非常卡,延迟高的可怕。有时候还会出现排队的情况,这其中一部分原因也是TPS过低导致。所以腾讯的每一款游戏都会分很多很多区来分流。
TPS越高越好吗
自从EOS宣称可以将TPS达到百万级别后,整个区块链世界仿佛都在向更高的TPS发起冲击。
大众也普遍认为高TPS=优秀的公链,然而事实却并没有这么简单。
问题就出在TPS的概念误解上。这个TPS是一个人造概念,并不是原生数据。
这里先科普下什么是原生数据,帮助大家更好的理解。
原生数据就是直接得出的数据,比如我们的电脑磁盘转速、网速、CPU赫兹数等。
而人造数据是通过两个数据计算得来的,也就是经常说的人造数据。
前面我们在概念里也说了,TPS是通过并发数和响应时间计算得到的,即平均每秒的处理交易数。
这里需要注意的是这个平均,并不是说在响应时间里我一直保持这个TPS,有可能前面小一些,后面大一些。
那么问题来了,这个响应时间是我们人为选择的,那为什么偏偏选择10分钟呢?
有人可能会说,因为比特币的出块时间就是10分钟啊。
那么有没有可能存在一种极端可能。
就是比特币前面9分59秒都处于休息状态,最后一秒将区块生成。
那么这个响应时间就变成了1秒,TPS就变为2118了,与之前计算的3.53形成天然之别。
由此可见,人为制造的指标存在很多可以背后操作的空间,单纯的以TPS来看性能显然是不合适的。
如何正确认识TPS
首先就是不要被高TPS给忽悠了,毕竟行业普遍水平都是几百,你突然来个差好几个量级的,就算你使用了先进的算法改进,但是硬件设备性能、安全等等需求不可能统统满足。
鉴于此,需要对TPS正确看待,分情况讨论。
比如说公链,设计大量用户和节点,肯定需要高并发的TPS来满足底层技术要求。
但是反过来,应用最多的私链和联盟链,并不需要高TPS,你需要的仅是满足行业需求即可。
比如目前京东的溯源防伪领域,理论上7000左右就足够了,平常需求可能就3000左右。
所以将来可以将TPS做出一个行业标准来,方便大家在此基础上进行搭建应用。
目前支付宝在双11的时候TPS大约在12万左右,那些号称几十万级别TPS的,不知道野心是有多大,区块链作为一个刚刚起步的领域,目前也确实用不到那么高。
总之,未来需要关注的不仅仅是TPS要多高,需要在并发量、区块链结构、安全性能等综合优化方面一起进步,更重要的是满足市场需求。
网友评论