随着BTC系统的问世,区块链技术在这10多年的时间里被愈来愈多的人所认知,区块链构筑了数字经济时代的价值网络基础。而区块链公链背后的经济模式、共识机制、密码学等技术问题中,一直存在着一个有着持续热度的“三元悖论”问题(也称“不可能三角”问题),即在区块链公链中,没法将“去中心化”(Decentralization)、“安全性”(Security)、以及“可扩展性”(Scalability)三种特性很好的兼备。算法
事实上,在“三元悖论”中,三种特性都有各自独立的技术发展路线,牺牲某一种特性,并不表明能够换取另一种特性的提升,只是在现有技术条件下,一个区块链系统想要将这三种特性最大化的融合,一般都会有所取舍;并且,若是抛开“三元”中的“去中心化”和“安全性”,那就根本谈不上“区块链“和”系统“,因此咱们看到这些年来,各区块链公链系统在试图突破“三元悖论”问题时,最常优先考虑的,就是经过提升TPS,来优化系统的性能。数据库
因此做为这个专题系列的第一篇文章,我想首先从可扩展性方面出发,讲讲目前可以带来区块链系统“可扩展性“提高的一些方法和技术路线;但愿在阅读这篇文章后,你们再看到相似“千万TPS”之类的宣传口号时,就会有更加深刻的理解。安全
在讲可扩展性以前,咱们先来了解下可扩展性当中的核心指标“TPS“这个概念:网络
TPS(Transaction Per Second)指的是系统平均每秒处理的交易数量,对一个区块链公链系统来讲,TPS是衡量系统性能的重要指标;TPS是计算出来的,即用一段时间的总的交易数除以这段时间的秒数,获得的是一个平均值,这个平均值并不表明系统每秒都会处理等量的交易,系统实际在每一个时间段处理交易的数量是有高有低的,以比特币为例,由于比特币的两个区块间隔时间为10分钟(600秒),若是在这段时间,打包块里面有2400笔交易,那比特币的TPS就是2400/600=4,是的,实际上比特币的TPS确实只有4左右。架构
比特币历史交易数量图(上图来自京东智联云BDS区块链数据服务)并发
做为对比,这里给你们一些数据参考:Visa在1600TPS左右(峰值56000TPS),网联双11活动峰值在10万TPS左右,目前主流的区块链系统以太坊目前在20TPS左右,而中心化的区块链系统XRP也只有1500TPS左右。异步
因此,在回归到现实应用中时,区块链公链系统的TPS是一个没法回避的问题。ide
理论上,当在带宽无限大、数据传输延迟无限小、计算能力无限强的状况下,区块链系统中数据达成共识的效率能够无限高,TPS也就能够无限高;但实际状况中,参与区块链系统大部分用户的带宽、计算机处理能力都是很是有限的,因此对于区块链公链系统设计者来讲,在保证网络的性能最优的同时,将用户网络能耗降至最低,成为了一项很是大的挑战。性能
近几年来,各公链项目方都为了提高系统TPS而在技术上另辟蹊径,行业内也不断出现一些与之相关的专业术语,好比POW、POS、跨链、分片、DAG、异步共识组、零知识证实等。区块链
NSDI上关于异步共识组的论文
而在这些技术中,目前提高区块链公链系统可扩展性(主要是提高TPS)的主流方式大体为如下几种:一是改变共识机制,二是更换DAG网络,三是采用跨链技术,四是采用分片技术。
1、改变共识机制:除了BTC系统所使用的POW(Proof-of-Work工做量证实)共识机制外,业内比较流行的还有POS(Proof-of-Stake权益证实)、DPoS(Delegated Proof of Stake委托权益证实)、Algorand(POS升级版,纯股权证实)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等,若是算上各类“升级版“、”改良版“的话,市面上至少有上百种共识机制可寻,但这些共识机制的出现,大都是为了改善比特币所使用的POW所致使的TPS不足,而在改良的过程当中,各共识机制也都采起了各类各样的权衡与妥协。
因为BTC系统所采用的PoW历经10多年的风霜雪雨依然屹立不倒,因此起初不少共识机制都是在PoW的基础上进行迭代来优化TPS,好比调整区块大小,改变区块结构,解耦区块产生和交易打包过程等,然而这些调整在提升TPS的同时也带来了一些新的问题,好比增长区块大小虽然可使单个区块存入更多的交易,但因为区块变大也会让网络传输延迟变高,从而增长分叉风险;再好比Bitcoin-NG能够在PoW共识下达到很高的TPS,但也会形成个别节点权力过大的问题等。
基于此,PoS、Algorand等彻底违背PoW初衷的共识机制随之出现,这些共识机制旨在颠覆PoW机制的“挖矿”概念,并向用户宣导“系统中最大既得利益者不会去伤害系统”的共识理念(相似于传统企业中的股东机制),因为这些机制多或少的牺牲了去中心化,因此用户基本无须挖矿且没有繁重的哈希计算过程,故系统能够很是快速的使用户参与其中并产生相比于PoW更大尺寸的区块,所以其TPS表现天然远高于PoW(有些公链项目自称可达百万、千万级TPS)。
2、更换DAG网络:区块链的基本结构,是以链的形式串连区块,然而,DAG (Directed Acyclic Graph有向无环图)将链式结构更换为网式结构,取消了交易区块的概念,更换为将每笔交易都与其它多笔交易相连(后一笔交易验证前一笔交易),各交易间相互验证达成共识,从而实现靠交易量提高DAG总体验证效率,最终达到提高TPS的目的。
DAG示意图
不过,DAG的优缺点也都比较明显,先说优势,DAG的主要优势有二,一是在有限带宽的条件下,DAG能够经过异步并发的方式记录更多的数据,从而提高TPS,二是DAG结构避免了传统链式结构在算力过大时的算力浪费,以及易分叉等问题;DAG的主要缺点也有二,一是最后交易的确认时长不可控(依赖不断产生的新确认交易者)致使的稳定性不足,二是安全性方面没有经历过相似比特币经历的大规模验证。
3、采用跨链技术:跨链分为多链和侧链两种方式,多链,顾名思义就是采用多个链并行的方式进行交易,相较于单链方式,多条链并行的TPS必定是大于单链方式的,但随着交易量的增长,跨链数据的互通需求随时增多,一笔资金可能在多个链上进行流转,一个帐户也会在多个链上产生交易,这些会带来管理难度的极大提高,因此,多链并行的实现中,计算TPS每每是简单的累加。随着预言机等跨链技术的成熟,多链势必会有较大的发展前景。
跨链示意图
侧链技术也被称为“链下状态通道(off-chain state channel)”,是在用户间搭建临时线下交易通道,全部中间交易都发生在链下,主区块链上仅验证最终状态,解决同一对用户的频繁交易给区块链系统带来的TPS压力,间接提高区块链系统的可扩展性。好比有两个商户一天内屡次互相交易,可是当一天结束时,却发现双方你来我往了1000屡次交易,但来往金额却恰好相抵归零,这正是侧链技术最适合运用的场景。其表明项目闪电网络(Lightning Network)和以太坊的雷电网络(Raiden)。不过,须要强调的是,侧链虽然帮助区块链系统减小了压力,但它的TPS数量其实不该该计入区块链系统的TPS。
4、采用分片技术:分片技术,即将每一个交易块分解后的各个分片发布到区块链网络中,各分片为并行状态,这样每一个节点没必要下载所有交易数据,从而大大提升区块链系统的处理速度。须要注意的是,分片技术与跨链技术最大的区别是,全部分片仍然基于同一条链,所以,在不一样的分片间高效协同以保持共识的有序性和正确性极具挑战。
区块链与数据库分片对比示意图
分片条件下的TPS计算,应以交易的终局状态达成为准。将各分片瞬时TPS累加进行宣传是常见作法,但缺少实际意义。分片是目前的热点方向,第一个使用分片技术的是Zilliqa,ETH2.0、Harmony等其余项目也一直在努力将分片技术集成到区块链系统中。
能够看到,提升TPS的技术路线各有利弊与挑战,但愿经过京东智联云-区块链公链“三元悖论“专题系列的文章,你们能够从“去中心化”(Decentralization)、“安全性”(Security)、“可扩展性”(Scalability)这三个方面去了解区块链公链系统的特性,以及在实际应用场景中可以更好的挑选一款合适的区块链系统,去解决一些问题。
京东智联云区块链数据服务【BDS】:京东智联云将区块链的链式、非结构化数据经过技术手段进行结构化存储,实时同步到高性能数据库中,并据此推出了一款可视化的区块链数据查询服务(BDS),帮助用户完成简单的条件查询和复杂的SQL原生查询。
产品特色:
产品示例:
点击【阅读】,便可获取区块链主流公链最新数据