随着BTC系统的问世,区块链技术在这10多年的时间里被越来越多的人所认知,区块链构筑了数字经济时代的价值网络基础。而区块链公链背后的经济模式、共识机制、密码学等技术问题中,一直存在着一个有着持续热度的“三元悖论”问题(也称“不可能三角”问题),即在区块链公链中,无法将“去中心化”(Decentralization)、“安全性”(Security)、以及“可扩展性”(Scalability)三种特性很好的兼备。

  • 去中心化“是指任何人都可以作为节点参与区块链系统的生产和验证,节点数量越多,则去中心化程度越高,这也是区块链区别于传统互联网系统的核心特性。
  • 安全性“是指为了获取区块链系统控制权所付出成本的高低,付出的成本越高,则安全性越高,这也是区块链系统能够使参与者形成”共识“的基础。
  • 可扩展性“是指区块链系统处理交易信息的能力,很大程度上取决于交易处理性能,即TPS(每秒处理交易的笔数),事实证明,可扩展性是当今区块链系统无法适用于实际应用场景的最大障碍(比如比特币),造成此结果的主要原因是每笔交易都要在所有节点上达成一致,以及各节点参与区块链系统所付出的成本。

事实上,在“三元悖论”中,三种特性都有各自独立的技术发展路线,牺牲某一种特性,并不代表可以换取另外一种特性的提高,只是在现有技术条件下,一个区块链系统想要将这三种特性最大化的融合,通常都会有所取舍;而且,如果抛开“三元”中的“去中心化”和“安全性”,那就根本谈不上“区块链“和”系统“,所以我们看到这些年来,各区块链公链系统在试图突破“三元悖论”问题时,最常优先考虑的,就是通过提高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是一个无法回避的问题。

理论上,当在带宽无限大、数据传输延迟无限小、计算能力无限强的情况下,区块链系统中数据达成共识的效率可以无限高,TPS也就可以无限高;但实际情况中,参与区块链系统大部分用户的带宽、计算机处理能力都是非常有限的,所以对于区块链公链系统设计者来说,在保证网络的性能最优的同时,将用户网络能耗降至最低,成为了一项非常大的挑战。

近几年来,各公链项目方都为了提升系统TPS而在技术上另辟蹊径,行业内也不断出现一些与之相关的专业术语,比如POW、POS、跨链、分片、DAG、异步共识组、零知识证明等。

NSDI上关于异步共识组的论文

而在这些技术中,目前提升区块链公链系统可扩展性(主要是提升TPS)的主流方式大致为以下几种:一是改变共识机制,二是更换DAG网络,三是采用跨链技术,四是采用分片技术。

一、改变共识机制:除了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)。

二、更换DAG网络:区块链的基本结构,是以链的形式串连区块,然而,DAG (Directed Acyclic Graph有向无环图)将链式结构更换为网式结构,取消了交易区块的概念,更换为将每笔交易都与其它多笔交易相连(后一笔交易验证前一笔交易),各交易间相互验证达成共识,从而实现靠交易量提升DAG整体验证效率,最终达到提升TPS的目的。

DAG示意图

不过,DAG的优缺点也都比较明显,先说优点,DAG的主要优点有二,一是在有限带宽的条件下,DAG可以通过异步并发的方式记录更多的数据,从而提升TPS,二是DAG结构避免了传统链式结构在算力过大时的算力浪费,以及易分叉等问题;DAG的主要缺点也有二,一是最后交易的确认时长不可控(依赖不断产生的新确认交易者)导致的稳定性不足,二是安全性方面没有经历过类似比特币经历的大规模验证。

三、采用跨链技术:跨链分为多链和侧链两种方式,多链,顾名思义就是采用多个链并行的方式进行交易,相较于单链方式,多条链并行的TPS一定是大于单链方式的,但随着交易量的增加,跨链数据的互通需求随时增多,一笔资金可能在多个链上进行流转,一个账户也会在多个链上产生交易,这些会带来管理难度的极大提升,所以,多链并行的实现中,计算TPS往往是简单的累加。随着预言机等跨链技术的成熟,多链势必会有较大的发展前景。

跨链示意图

侧链技术也被称为“链下状态通道(off-chain state channel)”,是在用户间搭建临时线下交易通道,所有中间交易都发生在链下,主区块链上仅验证最终状态,解决同一对用户的频繁交易给区块链系统带来的TPS压力,间接提升区块链系统的可扩展性。比如有两个商户一天内多次互相交易,但是当一天结束时,却发现双方你来我往了1000多次交易,但来往金额却刚好相抵归零,这正是侧链技术最适合运用的场景。其代表项目闪电网络(Lightning Network)和以太坊的雷电网络(Raiden)。不过,需要强调的是,侧链虽然帮助区块链系统减少了压力,但它的TPS数量其实不应该计入区块链系统的TPS。

四、采用分片技术:分片技术,即将每个交易块分解后的各个分片发布到区块链网络中,各分片为并行状态,这样每个节点不必下载全部交易数据,从而大大提高区块链系统的处理速度。需要注意的是,分片技术与跨链技术最大的区别是,所有分片仍然基于同一条链,因此,在不同的分片间高效协同以保持共识的有序性和正确性极具挑战。

区块链与数据库分片对比示意图

分片条件下的TPS计算,应以交易的终局状态达成为准。将各分片瞬时TPS累加进行宣传是常见做法,但缺乏实际意义。分片是目前的热点方向,第一个使用分片技术的是Zilliqa,ETH2.0、Harmony等其他项目也一直在努力将分片技术集成到区块链系统中。

可以看到,提高TPS的技术路线各有利弊与挑战,希望通过京东智联云-区块链公链“三元悖论“专题系列的文章,大家可以从“去中心化”(Decentralization)、“安全性”(Security)、“可扩展性”(Scalability)这三个方面去了解区块链公链系统的特性,以及在实际应用场景中能够更好的挑选一款合适的区块链系统,去解决一些问题。

京东智联云区块链数据服务【BDS】:京东智联云将区块链的链式、非结构化数据通过技术手段进行结构化存储,实时同步到高性能数据库中,并据此推出了一款可视化的区块链数据查询服务(BDS),帮助用户完成简单的条件查询和复杂的SQL原生查询。

产品特点:

  • 涵盖了 BTC、ETH、EOS、LTC、XRP、BCH 等几十个知名区块链项目,自定义了涉及用户、交易、区块等 100+
    独家数据指标,联网即可查询链上实时数据,即开即用,方便快捷。
  • 支持标准SQL查询语句,可轻松实现复杂的查询逻辑;依托京东智联云的软硬件及架构支持,同时具备查询速度快、查询效率高的特点。
  • 支持图形化、可视化界面,通过点击和拖拽的交互方式进行数据查询,可实时生成各类BI图表,定制专属与您的区块链数据仪表盘。

产品示例:


点击【阅读】,即可获取区块链主流公链最新数据

区块链公链“三元悖论”专题之可扩展性(Scalability)相关推荐

  1. ​区块链公链“三元悖论”专题系列之去中心化(Decentralization)

    区块链作为系统去中心化的一种工具,所追求的并不一定是系统的"绝对"去中心化,而是相对于中心化来说,去中心化的程度. 在上一期的内容中,我们提到了区块链公链"三元悖论&qu ...

  2. 区块链公链开发 区块链一条公链开发费用

    公链就是指所有人都可以载入的.所有人都能推送买卖且交易能得到合理确定的.所有人都能参加在其中的共识全过程的区块链技术.公链采用了采取劳动量证实体制(POW).利益证实体制(POS).股权授权证明体制( ...

  3. 区块链公链DApp应用落地数据分析报告(二)

    在上一篇区块链公链DApp应用落地数据分析报告(一)中,我们对公链DApp应用布局的整体行业情况进行了大致的分析,从宏观上衡量,DApp总体类型单一,活跃用户主要集中于抽奖类和高风险类的菠菜项目,一方 ...

  4. 6 个重要模块,带你编写一个基于Golang的区块链公链demo!| 博文精选

    作者 | 肉山大魔王iii 责编 | Carol 出品 | 区块链大本营(blockchain_camp) 好久没和大家一起做实践的环节了,不知道各位是否也手痒痒了呢? 今天给大家带来的是基于 Gol ...

  5. 基于golang编写的区块链公链demo

    源码地址:https://github.com/corgi-kx/blockchain_golang.git     本程序是模仿比特币的功能所编写的区块链公链demo,主要应用到了密码学,共识算法, ...

  6. Go语言,区块链公链,区块链钱包和区块链浏览器技术培训

    为了让广大区块链技术爱好者更好地学习区块链技术,木姜子科技和问我学院联合推出区块链技术培训课程,为适应广大学员的的技术基础情况,我们将课程分为6个阶段.您可以参加其中任何一个阶段的学习,也可参与所有课 ...

  7. 区块链+公链+区块浏览器+钱包APP

    源码 APP源码:https://download.csdn.net/download/yanning1314/14248817 区块浏览器源码:https://download.csdn.net/d ...

  8. 【转】区块链公链的 3 大性能难点、5 大体验障碍

    公链作为区块链世界的基础设施中的基石,极大地影响着上层应用的效率.成本以及用户体验.如果从比特币开始算起,公链一路走来已经 10 年了,但至今为止还远未到技术收敛的阶段.在这第 11 个年头,我细数一 ...

  9. 漫画|区块链之公链的那点事儿

    高清与我的颜值不匹配!朦胧才是我的美! 我是烦立停! 这期漫画跟大家一起学习下 公链. 公链?一开始没有公链都说法.甚至没有区块链的说法- 在看8

最新文章

  1. 报告鼠标和键盘事件的一个程序(转)
  2. 常见linux命令使用方法(二)
  3. 今天突然想到一个问题:地球在转动吗,由东西向西跳与由西向东跳哪个更远...
  4. 在sql2005中加数据库时出现无法打开物理文件
  5. 关于input的change事件触发多次发解决
  6. React+dva+antd的运用
  7. Linux 小知识翻译 - 「端口和端口号」
  8. php 常用文件系统函数,PHP fileperms 文件系统函数
  9. ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
  10. jTessBoxEditor训练3500常用汉字
  11. win10系统右键没有新建文本文件选项
  12. 虚拟化识别共享USB加密狗|银行U盾等解决方案
  13. linux下载flink安装包
  14. 动态调度之记分牌算法
  15. App启动优化-一顿操作猛如虎
  16. AutoJs学习-自动抢单学习
  17. 安卓模拟器自动抓取某红书晒单数据
  18. Java实例——线程
  19. 二叉堆(插入、删除)
  20. linux运维工程师 倒班,运维人员值班制度

热门文章

  1. 第一章 初探Swing
  2. CUDA C 编程指导(二):CUDA编程模型详解
  3. [植树造林小游戏1.1]
  4. 软考是什么?关于软考经验分享
  5. 【蓝桥杯】寒假真题大联赛(研究生/大学A组)
  6. 怎么从SPSS的分析结果中得出回归方程?
  7. errorImg异常图片显示
  8. 增值翻译系列谈(01)——概念界定和辨析
  9. ImageJ自动细胞计数的方法以及批量处理多张图片
  10. 学习笔记——SDRAM学习