区块链100讲:区块链的TPS性能

Posted by

区块链100讲:区块链的TPS性能

内容来源:知乎

原文作者:老污

原文链接:http://t.cn/RDfq00d

区块链100讲:区块链的TPS性能

最近在做一个区块链系统的底层设计,有一个绕不开的问题是,就是我的系统能提供多少个tps。为此,我收集了一些现有区块链(当然也包括DAG等分布式账本技术)的tps数据。

1

ripple

号称转账神器的ripple,转账快速,并且手续费也很低,所以我本人经常用它来做不同交易所之间的转账。从ripple官网的数据看,大概有1500tps:

区块链100讲:区块链的TPS性能xrp的tps数据,来自ripple官网

2

Eth

以最高的日期算,当日的tps是1349890/24/60/60.0=15.616666666666667。

区块链100讲:区块链的TPS性能eth的tps数据,来自etherscan.io

3

steemit

来自2018年4月的数据,在最高点是180万左右,算下来tps是20.8。

区块链100讲:区块链的TPS性能

4

bitshares

bitshares这个就比较有趣了,因为它在15年时候就号称自己10万tps了,而btc/eth等还在10附近玩耍,查着四个数量级呢,那么它这10万tps是如何得来的呢?

区块链100讲:区块链的TPS性能bts做tps压测的方式

大意是,我们创建了20万个账户,各执行5此次操作,加起来就是100万次操作。在没有任何签名的情况下,我们每秒钟能处理18万次操作,用了更好的cpu之后,能再提高25%,因为我们认为10万tps是妥妥的。还有啊,现实环境中的nasdaq也才6万tps啊,他们的目标也才10万tps。而我们已经轻松的达到了10万tps。另外,我们在有签名的情况下,也能每秒轻松的达到2000 tps(您是不是有疑惑,为何瞬间从10万降到2000了?)。而在当前发布的版本中,我们人为的限制到了1000tps。

我们就会有疑惑了,2000tps是如何测试得到的呢?是否考虑到了p2p网络的延迟呢?看样子,似乎并没有考虑这一点,可能仅仅是内网几台witness(或者说记账节点吧)之间的延迟呢?

区块链100讲:区块链的TPS性能

bts的testnet如何获得了20tps的超高性能

这篇文章有一部分介绍了bts 2.0发布时,在测试网络(p2p网络)测出了20tps的超高性能,并花了大量篇幅来解释为什么离号称的10万tps相差甚远。并不是我们处理交易的能力不行,而是p2p网络太慢了,要达到10万tps,需要千兆低延迟网络连接,并且需要有30MB的网络吞吐,而我们测试环境都只有一些低端的vps节点。

看到才发现,bm这个人真是大忽悠啊。bts一方面采用dpos(从而是中心化的),只有少数节点拥有记账权,在一个节点记账的时候,需要其他节点对它生产的块进行签名,这必然是要走p2p网络的,于是bts开发者大胆假设网络是可以优化的,毕竟想要成为记账节点,怎么也得下点血本来优化一下网络吧。而btc和eth则要分散的多,并且有众多的小节点,区块扩散要慢得多。

号称百万tps的eos,最终又能到多少tps呢?看到数据的时候,还是要多看看多想想,数据是如何得来的,测试的方式是否科学。

5

使用DAG技术的iota

这里引用的一条tweet,说iota在250个节点的网络中能到100tps这个数量级,并且可以发起1000tps的测试(iota应该是节点越多、交易越多反而tps越大):

区块链100讲:区块链的TPS性能

6

btc/bts/steemit/eth统一比较

区块链100讲:区块链的TPS性能

区块链100讲:区块链的TPS性能

btc/bts/steemit/eth每日交易量

整个市场在2018年1月达到最高,从上面的eth图也可以看出,在1月份之后,每日交易量下跌非常明显,说明市场非常低迷。包括bm本人也承认steemit的每日交易量不到2million,也就是tps不到25,而实际上,峰值的tps也不到20,而是只有惊人的18.3个。而号称tps很高的bts,也只有13个tps而已,连测试网络的20个都没有达到。

7

总结

目前区块链系统(不考虑xrp这种中心化的分布式账本和采用DAG的iota),每天的交易量最高的都不超过180万,tps最高也就20附近。我看到微信钱包在最高峰时候能处理20万tps,支付宝在双11的时候时为12万tps,而bts或者说eos之类的分布式p2p系统就号称10万、百万tps,确实有点故意吸引人眼球的意思。

我们以steemit为例,他每天处理了180万笔交易,这个量级对于一个互联网应用而言是很少的,但是却也依然运行良好,原因可能就在于,tps其实指代的都是写入操作,对于steemit而已,很多请求都是读取操作,如果仅仅是读取区块链,那么任何一个全节点都可以读取,这个做sharding就非常方便了。

我们还要想一个问题,公链是否真的那么有价值?现在很多区块链应用都是在eth或者eos之类的公链上开发的,导致eth和eos价格都炒得非常高。但是公链本身性能都不太好的情况下,区块链应用又如何能够跑起来呢?加上一点点攻击就能把整个网络堵死,可用性就太差了。

区块链100讲:区块链的TPS性能

Blockathon|48小时极客竞赛,区块链马拉松等你挑战(成都)

时间:2018年9月14-16日

地点:成都高新区天府五街200号菁蓉国际广场2号楼A座12楼中韩互联网+新技术孵化器

  • 招募50名开发者(识别下图二维码或点击“阅读原文”即可报名)

  • 报名费100元为参赛押金,参赛者个人原因不能到场参加活动概不退款;参赛者全程参与活动,待活动结束后现场退还。9月14日18:00开始第一次签到,9月15日和16日每天早上都要记得签到哦。

  • 主办方免费提供2天的食物、饮料,并为每一位参会者准备一件文化衫

区块链100讲:区块链的TPS性能

始发于微信公众号: 区块链社区HiBlock