黄金很重,貌似数字黄金也不轻。比特币不断被人攻击性能差,这是什么意思呢?
比特币系统的交易量大约每秒钟3-7次,而交易确认时间比较长,最少10分钟,推荐时间一小时(6个区块),常见的时间是几个小时。在跨境交易里面,这个时间比现在的电汇快。但是即使跨境电汇,慢也不一定是技术问题,更多是监管问题,如果银行有动力,提升速度是很容易的。
对比其他典型应用,如Visa,Paypal,这个交易容量就显得很弱了。Visa可以到2000次每秒的量级。下图做了一些性能比较,是ByzCoin的作者提供的。
数据库系统就更厉害了,商业化的Oracle可以达到上千万次每秒,开源的MySQL也有两百万次每秒的报道。淘宝据说实现几十万次每秒的交易。这些数据差距达到六七个数量级,这是为什么呢?是因为厂家在推广的时候,有意无意的混淆,单一的进程能支撑的交易量,和很多个并行的进程支持的交易量。在存储数据库等需要一致性的产品中,这种故意的混淆在宣传中很常见。有趣的是,技术交流的时候,大家又都很老实诚恳。
比特币的交易容量是怎么来的呢?它是平均出块时间(10分钟),块大小(1M),和平均交易尺寸(几百字节)三个变量共同决定的,等于(块大小/交易尺寸/交易时间)。而这三个变量本身,分别有他们自己的底层限制因素,出块时间受到网络时延带宽和共识算法的限制,块尺寸收到验证时间的限制(太大的块每个节点验证时间太长,对应用层的DDOS攻击更加敏感,还额外增加广播时延),而交易尺寸是收到合约(是的,比特币有合约)结构限制。通过调节这三个参数,交易容易可以有所提升,但效果有限。而且任何一个参数的调节,都有其对应的风险。
但是,交易容量本身却不是太大的问题。通过切分和并行链,交易量总是可以提升上来的。最简单的比方,是开设很多个比特币网络,比如1000个,交易量不就7x1000=7000次每秒了吗?具体实现起来当然比这个复杂,而且分割会导致一致性风险,但原则是这样的。
真正困难的性能提升,是交易时延,如果从10分钟提升到1秒,那么其他不变,一致性风险不增加的情况下。性能提升600倍,交易数量(单个部署)提升到5x600=3000次以上了。
如何提升交易时延呢?请听下回分解。
附录 技术部分
附图使用的是ByzCoin的图,他们的拜占庭容错区块链,号称能达到700次每秒的单链交易。