区块链领域最受关注的一个方面是“性能”,或者说“TPS”,比起来有种“不服就跑个分”的感觉。跑分项包括TPS(每秒处理交易数)、并发能力(同时承担交易量)、交易响应时间等。然而,相比每秒能发送200万封电子邮件、支持数百万用户同时登录一个社交平台的互联网服务来说,区块链的速度简直是太!慢!了! 甚至有人调侃说“区块链,不就是最慢的分布式数据库吗”(这句话可以展开多方面解析,本篇先讨论慢的问题)
区块链技术前景无限美好,可如果没有高性能表现作为支撑,无法运行快速的、执行复杂的智能合约逻辑,快速的完成交易事务,那些令人振奋的前景就只能是摘不到的镜中花,捞不着的水中月。
#举个例子
数钱,比如数一个亿(是不是好刺激~)
1、如果一个人数,慢,但好在专注,全力以赴,在可见的时间内可以数完。这叫单线程密集计算。
2、如果N个人一起数,每人平分,分头同时数,最后汇总总数,所用时间基本上是第一种情况的1/N,参与的人越多,所需时间就越少,TPS就越高。这叫并行计算和MapReduce。
3、如果N个人一起数,但由于这N个人互相不信任,得彼此盯着,首先抽签选一个人,这个人捡出一叠钱(比如一万块一叠)数一遍,打上封条,签名盖章,然后给另外几个人一起同时重新数一遍,数好的人都签名盖章,这叠钱才算点好了。然后再抽签换个人检出下一叠来数,如此循环。因为一个人数钱时别人只是盯着,而且一个人数完且打上封条和签名的一叠钱,其他人要重复数一遍再签名确认,那么可想而知,这种方式肯定是最慢的。这就叫区块链。
但换个角度,方式1,一个人数有可能会数错,这个人有可能生病或休假,导致没有人干活,更坏的结果是,这个人可能调换假币或者私藏一部分钱,报一个错的总数。
方式2,N个人中会有一定比例数错,也可能其中一个人休假或者怠工,导致最终结果出不来,更可能因为人多手杂,出现部分人偷钱、换假钱、报假数……
方式3,很慢,但是很安全,因为所有人都会盯着全过程进行验算,所以肯定不会数错。如果其中有人掉线,可以换人捡出新的一叠钱继续数,工作不会中断。所有数过的钱上面都有封条和签名,不会被做手脚,万一出错了也可以找到责任人进行追责。这种