# TPS的整理 - **区块链的性能说明** 区块链的性能主要看: TPS,去中心化,安全性。 并不是TPS越高越好,TPS越高提升了效率相对而言,去中心化与安全性可能就会降低,这个是一个无法兼顾的铁三角。 当然除了TPS吞吐率,系统响应时间RT(Response Time)也是一个重要指标。TPS吞吐率影响系统响应时间RT,系统确认时间是另外一个相关指标,简单而言,就是等待交易确认的时间。还有一个更重要的原因是因为当前的共识算法POW速度不够快,虽然目前有些是提升POW的方法,以及选用POS,DPOS,PBFT能提升,比如有些用到了石墨烯技术(EOS,BTS),以及DAG技术(IOTA),这些在一定程度上是提升不少的并发量以及性能,但是区块链的应用不单单只追求TPS,还是要根据具体的市场需求来决策。 区块链节点的软硬件配置如何,包括网络带宽,内存容量,磁盘是否是SSD,磁盘IO速度,磁盘容量,CPU频率,CPU内核数量,操作系统等。简单而言,在一个有限的局域网内所统计出来的高TPS,往往在全球的广域网下难以重现,因为网络延迟往往使得TPS会大打折扣甚至无法形成共识,稳定出块。 - **TPS的计算** **这里是根据不同的应用场景来计算的** 1) 递增时间窗口N:随着测试进行,不断增加窗口的长度N。用当前系统处理的所有事务数量除以当前的窗口长度。TPS = Sum(Tx) / N。 2) 分段窗口w:将时间轴按窗口长度为w进行分段。分段统计各个w窗口内所处理的事务数量,再除以w时间窗口。 TPS = Sum (Tx in window w) / w。 3) 滑动窗口sw:将时间轴按窗口长度为w进行滑动。分段统计各个滑动的w窗口内所处理的事务数量,再除以w时间窗口。 TPS = Sum (Tx in sliding window w) / w。 4) 总的来说 TPS = 一个区块内包含的交易数量 / 区块产生时间 = 一个区块内包含的交易数量 / (共识算法运行的时间 + 广播并验证的时间 ) - **百万级别TPS的打造** 迅雷链 2018/4 已完成且有公开验证了 多链框架,有点类似分片技术 EOS 2018/12 正在进行中 以太坊 2019/7 正在进行中 - **每秒的TPS** **这里的数据可能没有那么的实时性,因为TPS的变化是受很多因素影响的** 1. BTC/ETH 10tps左右 2. BTS (bitshares) 号称10万tps,目前最高也就几千tps(3000多tps)左右,一般最理想也就 20tps左右,它也采用的石墨烯技术(高并发,可扩展性强)。 3. EOS 号称100万tps,目前最大也就几千tps(3000多tps)左右,(理论上是可以并行链处理,并发同时进行)。 4. VISA 2000tps 现在可能更高了 5. STEEM(stemmit) 20tps 6. RIPPLE 1500tps(开启了几百个节点-250个) 7. IOTA (使用DAG技术的iota) 目前iota在250个节点的网络中能到100tps这个数量级,并且可以发起1000tps的测试(iota应该是节点越多、交易越多反而tps越大) - **QPS,TPS** QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS:是Transactions Per Second的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数, TPS理解如下: 1、Tps即每秒处理事务数,包括了 1)用户请求服务器 2)服务器自己的内部处理 3)服务器返回给用户 - **提高TPS的方法** 目前提升TPS成为各个公有链系统的当务之急,大家都在积极地研发各种算法来提升系统的TPS。常见的方法分为如下几类: - **增大区块** 这是最简单而行之有效的方法。通过增大区块,更多的Tx被打包在同一区块内,在出块时间固定的前提下,更多的Tx被打包就意味着更高的TPS。例如,BCH对BTC的区块扩容。增大区块在单次共识过程中会增加节点间的通讯代价,因而也无法无限扩容。 - **提升区块的出块频率** 当单区块内被打包的Tx数量恒定后,提升区块的出块频率显然可以更好的提升TPS。例如从10分钟出一个块,提升到15秒出一个块。然而过多的提升出块频率,往往会牺牲系统的稳定性,尤其是在广域网时延较大的情况下。 - **采用更高性能的计算机(节点)** 包括专用的矿机。通过硬件加速,将常用的耗时的软件计算硬件化,从而达到提升处理速度的目的,例如各种比特币矿机。 - **侧链、链下与状态通道** 侧链是一个相对于主链的概念。大家所针对的主链往往是比特币、以太坊等需要进一步提升性能,而短期内又难以改变的区块链系统。侧链与链下的基本思想是,另外建立一条相对高速或安全性相对较低的侧链,把小额的高频的交易放在侧链进行快速确认,待真正需要结算的时候再回到主链上进行最终确认。状态通道是闪电网络的发明,它为账户两两之间建立的独立的通道,从而达到快速交易的目的。并利用通道的传递性,构成了各个通道的网络,从而实现任意两个账户间的快速互转。 - **分片(**目前以太坊可能要采用的这个**)** 分片是一种典型的 “分而治之”计算处理方法。基本思想是将区块链网络中的节点动态分为若干个不同的分片。将系统单位时间内所接收到所有Tx分到不同的分片中。分片技术具体可细分为对token和对智能合约的分片。绝大多数的分片技术只能做到token级别。对于智能合约的分片,由于涉及到较为复杂的状态分片问题,目前没有特别好的解决方法,有部分项目提出了一些受限环境下的状态分片解决方案。 - **原生多链** 原生多链是一种典型的并行化方法。区别于传统的比特币和以太坊单链结构,多链系统的结构通常包含1个主链和若干条子链,多链可同时出块,从而使得区块计算并行化,达到极大提升TPS的目的。原生多链的思想虽然容易理解,在实际开发过程中需要核心解决主链与子链的可互操作性(Interoperability),否则主链极容易成为多链系统的瓶颈,从而影响多链系统的水平扩容能力。 - **新的共识算法** 从POW向POS方向转变。典型的POS算法包括DPOS和BFT类的算法。例如EOS等都基于DPOS算法。新生代的区块链3.0系统,往往采用BFT类算法,例如Algorand,Definity,COSMOS/Tendermint,PCHAIN等。传统的PBFT算法存在着通讯复杂度过高的问题,通常是N2因而往往只适用于联盟链场景。目前各个新BFT算法往往通过引入动态性或随机性来达到减少通讯代价的目的。PBFT的另一个问题在于内部的4次共识,虽然不用像传统的POW算法需要等到6个区块来达到最终性。PBFT虽然具备单块内即时共识的特质,但内部仍然需要4次共识。COSMOS/Tendermint创新的把PBFT算法的内部4次共识缩减到了2次共识。而PCHAIN的PDBFT则进一步将内部的4次共识缩减到了1次共识,从而极大地减少了节点间的通讯代价。 - **我的总结** - 目前区块链系统(不考虑xrp这种中心化的分布式账本和采用DAG的iota,空气币,垃圾币),每天的交易量最高的都不超过百万级,tps最高也就20附近。 - 微信钱包在最高峰时候能处理20万tps - 支付宝在双11的时候时为12万tps - 而bts或者说eos之类的分布式p2p系统就号称10万、百万tps,确实有点故意吸引人眼球的意思。 我们以steemit为例,他每天处理了180万笔交易,这个量级对于一个互联网应用而言是很少的,但是却也依然运行良好,原因可能就在于,tps其实指代的都是写入操作,对于steemit而已,很多请求都是读取操作,如果仅仅是读取区块链,那么任何一个全节点都可以读取,这个做sharding就非常方便了。 我们还要想一个问题,公链是否真的那么有价值?现在很多区块链应用都是在eth或者eos之类的公链上开发的,导致eth和eos价格都炒得非常高。但是公链本身性能都不太好的情况下,区块链应用又如何能够跑起来呢?加上一点点攻击就能把整个网络堵死,可用性就太差了。 ###### tags: `区块链` `TPS`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up