# 链下扩容深度解析## 1. 扩容的必要性区块链的未来愿景是实现去中心化、安全性和可扩展性,但通常只能同时满足其中两个,这被称为区块链的不可能三角问题。多年来,人们一直在探索如何在保证去中心化和安全性的前提下,提高区块链的吞吐量和交易速度,即解决扩容问题,这是当前区块链发展的热点话题之一。去中心化、安全性和可扩展性的定义:- 去中心化:任何人都可以成为节点参与区块链系统,节点数量越多,去中心化程度越高,确保网络不受少数大型中心化参与者控制。- 安全性:获取区块链系统控制权的成本越高,安全性越高,链可以抵抗较大比例参与者的攻击。- 可扩展性:区块链处理大量交易的能力。比特币网络的第一次重大硬分叉就源于扩容问题。随着用户数量和交易量增多,1MB区块上限的比特币网络开始面临拥堵。2015年起,比特币社区就扩容问题出现分歧,一方支持扩大区块,另一方支持使用隔离见证方案优化主链结构。2017年8月1日,支持大区块的一方自行开发8MB区块的客户端系统开始运行,导致比特币出现第一次重大硬分叉,诞生了新币种BCH。同样,以太坊网络也选择牺牲一部分可扩展性来保障网络安全性和去中心化,通过对单一区块可容纳的燃料费设置上限来限定交易量。目的是实现无信任共识并确保节点的广泛分布。从2017年的CryptoKitties,到DeFi summer、GameFi和NFT等链上应用的兴起,市场对吞吐量需求不断增加。但以太坊每秒只能处理15-45笔交易,导致交易成本上升,结算时间变长,大部分DApps难以承受运行成本,整个网络对用户而言变得又慢又贵。区块链扩容问题亟待解决。理想的扩容方案是:在不牺牲去中心化和安全性的前提下,尽可能提高区块链网络的交易速度和吞吐量。## 2. 扩容方案的类别我们按照"是否改变一层主网"作为标准,将扩容方案分为链上扩容和链下扩容两大类。### 2.1 链上扩容核心概念:通过改变一层主网协议达到扩容效果的解决方案,目前的主要方案是分片。链上扩容有多种方案,此篇文章不展开,简要列举两种方案:- 方案一是扩大区块空间,即增加每个区块打包的交易数量,但这会提高节点设备要求,提高加入门槛,降低去中心化程度。- 方案二是分片,将区块链账本分成若干部分,由不同分片负责不同记账,并行计算可同时处理多个交易;这可降低节点压力和加入门槛,提高交易速度和去中心化程度;但意味着全网算力被分散,会降低整个网络的安全性。改变一层主网协议可能产生难以预料的负面影响,因为底层任何细微漏洞都会严重威胁整个网络安全,网络可能被迫分叉或中断修复升级。例如,2018年Zcash的通胀漏洞事件:其底层代码存在高危漏洞,代币可无限增发,团队花了8个月时间秘密修补,修复后才公开这一事件。### 2.2 链下扩容核心概念:不改变现有一层主网协议的扩容解决方案。链下扩容方案又可以细分为Layer2和其他方案:- Layer2: State Channels、Sidechains、Plasma、Rollups - 其他: Validium## 3. 链下扩容的方案### 3.1 State Channels#### 3.1.1 概要状态通道规定只有在通道打开、关闭或解决纠纷时,用户才需要与主网交互,把用户间交互放在链下进行,以降低交易时间和成本,并实现交易次数不受限制。状态通道是简单的P2P协议,适合"基于回合的应用程序",如两人国际象棋游戏。每个通道由主网上运行的多签智能合约管理,该合约控制存入通道的资产,验证状态更新,并仲裁参与者间的争议。参与者在部署合约后存入资金并锁定,双方签名确认后通道正式开通。通道允许参与者间进行不限次数的链下免费交易(只要转账净值不超过存入总额)。参与者轮流发送状态更新给对方,等待对方签名确认。一旦对方签名确认,这笔状态更新就算完成。正常情况下,双方同意的状态更新不会上传主网,只有在出现争议或关闭通道时才依赖主网确认。关闭通道时,任一参与者可在主网提出交易请求,如获全员签名批准则立即执行,否则需等待"挑战期"结束才能收到剩余资金。综上,状态通道方案可以大大减少主网计算量,提升交易速度,降低交易成本。#### 3.1.2 时间线- 2015/02: Joseph Poon和Thaddeus Dryja发布闪电网络白皮书草案。- 2015/11: Jeff Coleman首次系统性总结State Channel概念,提出比特币Payment Channel是State Channel的子案例。- 2016/01: Joseph Poon和Thaddeus Dryja正式发表白皮书《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》提出比特币闪电网络的扩容方案Payment Channel,仅用于处理比特币网络上的转账支付。- 2017/11: 第一个基于Payment Channel框架的State Channel设计规范Sprites被提出。- 2018/06: Counterfactual提出详细的Generalized State Channels设计,这是第一个完全与状态通道相关的设计。- 2018/10: 文章Generalised State Channel Networks提出State Channel Networks和Virtual Channels概念。- 2019/02: 状态通道概念扩展到N-Party Channels,Nitro是首个基于该想法建立的协议。- 2019/10: Pisa为解决所有参与者需要持续在线的问题,拓展了Watchtowers概念。- 2020/03: Hydra提出Fast Isomorphic Channels。#### 3.1.3 技术原理传统链上工作流程:Alice和Bob与部署在主网上的智能合约交互,用户通过向链上发送交易改变智能合约状态。缺点是会带来时间和成本问题。状态通道工作流程:1. Alice和Bob从个人EOA存入资金到链上合约地址,资金锁定在合约中直到通道关闭时返回用户;二人签名确认后,状态通道正式开通。2. Alice和Bob可在链下开展不限次数交易,通过加密签名消息相互通信。双方都需对每笔交易签名,以防双花作恶。通过这些消息,他们提出自己账户的状态更新,并接受对方提出的状态更新。3. 如Alice想关闭通道,需向合约提交自己账户的最终状态,如Bob签名批准,合约则根据最终状态将锁定资金释放返回对应用户。如Bob未响应签名,合约则在挑战期结束后将锁定资金释放返回对应用户。悲观情况下的工作流程:1. 两个参与者存入资金,开始交换状态更新。2. 假设某时Bob不响应Alice发送的状态更新签名,Alice可向合约提交自己最后一次有效状态发起挑战,该状态包含Bob之前的签名。3. 合约允许Bob在一段时间内通过提交下一个状态响应;如Bob响应,二人可继续交易;如Bob未响应,合约自动关闭状态通道并将资金返回Alice。#### 3.1.4 优缺点优点:- 即时性:交易可立即完成,无需等待区块确认- 隐私性:只有开启和关闭需要链上操作,其他交易都在链下完成- 可扩展性:链下交易数量不受限制 - 低成本:只有开启和关闭通道需要支付gas费缺点:- 资金锁定:需要锁定一定数量资金在通道中- 持续在线:参与者需要保持在线以响应最新状态- 多方交互受限:只适用于预定义的参与者之间- 通道网络复杂性:资金需要找到连接双方的路径- 不适合复杂计算:只适合简单和频繁的交互场景#### 3.1.5 应用**比特币闪电网络**概述:闪电网络是比特币网络的小额支付通道,技术演变经历:2/2多签构建单向支付通道,增加RSMC后可构建双向支付通道,再增加HTLC后可连接支付通道拓展到多人支付,最终构建支付网络。通过链下小额支付通道,然后借助中间人构成交易网络,可以解决比特币网络扩容问题。使用遵循"存款(建立通道)→闪电网络交易(更新通道状态)→退款/结算(结束通道)"的流程;理论上每秒可以处理一百万笔交易。时间线:- 2015年2月:Joseph Poon和Thaddeus Dryja发布闪电网络白皮书草稿- 2016年1月:发布正式版白皮书并成立Lightning Labs - 2018年3月15日:Lightning Labs发布第一个主网版本LND 0.4- 2021年初:公共容量约4000万美元,约10万用户使用- 2021年6月:萨尔瓦多采用比特币作为法定货币,9月发布基于闪电网络的钱包Chivo- 2022年:Cash App和26个加密货币交易平台宣布支持闪电网络- 2022年10月:Lightning Labs发布基于Taproot的Taro协议(alpha版)- 2022年11月23日:闪电网络共有76,236个支付通道,通道资金5049 BTC($81.8M)生态发展:闪电网络生态从下到上依次为:底层BTC网络---核心基础设施---各种Dapps。核心基础设施包括:- 闪电网络解决方案:个人和企业运行、连接闪电网络的软件程序,市场份额最大的是Lightning Labs。- 节点和流动性服务:提供对用户友好的界面,帮助管理闪电支付渠道。核心基础设施之上是各种支付和金融服务以及应用程序,如Strike允许买卖BTC、Twitter打赏和Shopify商家接受BTC等。截至2022年11月,基于闪电网络的Dapps已增至超20个类别和100多个应用,包括支付、钱包、节点管理、浏览器扩展、播客和流媒体等。当前与节点基础设施相关的技术基础层已基本成熟,钱包支持增加,金融服务和支付集成继续增长,更多娱乐应用在建设,生态系统蓬勃发展。**以太坊雷电网络**概述:雷电网络是基于以太坊的小额支付通道,与闪电网络非常相似,都是通过建立状态通道来对链上交易进行拓展,目的是在以太坊上实现近乎即时、低费用和可扩展的ERC20代币支付。时间线:- 2017年
链下扩容解析:State Channels技术原理与应用
链下扩容深度解析
1. 扩容的必要性
区块链的未来愿景是实现去中心化、安全性和可扩展性,但通常只能同时满足其中两个,这被称为区块链的不可能三角问题。多年来,人们一直在探索如何在保证去中心化和安全性的前提下,提高区块链的吞吐量和交易速度,即解决扩容问题,这是当前区块链发展的热点话题之一。
去中心化、安全性和可扩展性的定义:
去中心化:任何人都可以成为节点参与区块链系统,节点数量越多,去中心化程度越高,确保网络不受少数大型中心化参与者控制。
安全性:获取区块链系统控制权的成本越高,安全性越高,链可以抵抗较大比例参与者的攻击。
可扩展性:区块链处理大量交易的能力。
比特币网络的第一次重大硬分叉就源于扩容问题。随着用户数量和交易量增多,1MB区块上限的比特币网络开始面临拥堵。2015年起,比特币社区就扩容问题出现分歧,一方支持扩大区块,另一方支持使用隔离见证方案优化主链结构。2017年8月1日,支持大区块的一方自行开发8MB区块的客户端系统开始运行,导致比特币出现第一次重大硬分叉,诞生了新币种BCH。
同样,以太坊网络也选择牺牲一部分可扩展性来保障网络安全性和去中心化,通过对单一区块可容纳的燃料费设置上限来限定交易量。目的是实现无信任共识并确保节点的广泛分布。
从2017年的CryptoKitties,到DeFi summer、GameFi和NFT等链上应用的兴起,市场对吞吐量需求不断增加。但以太坊每秒只能处理15-45笔交易,导致交易成本上升,结算时间变长,大部分DApps难以承受运行成本,整个网络对用户而言变得又慢又贵。区块链扩容问题亟待解决。理想的扩容方案是:在不牺牲去中心化和安全性的前提下,尽可能提高区块链网络的交易速度和吞吐量。
2. 扩容方案的类别
我们按照"是否改变一层主网"作为标准,将扩容方案分为链上扩容和链下扩容两大类。
2.1 链上扩容
核心概念:通过改变一层主网协议达到扩容效果的解决方案,目前的主要方案是分片。
链上扩容有多种方案,此篇文章不展开,简要列举两种方案:
方案一是扩大区块空间,即增加每个区块打包的交易数量,但这会提高节点设备要求,提高加入门槛,降低去中心化程度。
方案二是分片,将区块链账本分成若干部分,由不同分片负责不同记账,并行计算可同时处理多个交易;这可降低节点压力和加入门槛,提高交易速度和去中心化程度;但意味着全网算力被分散,会降低整个网络的安全性。
改变一层主网协议可能产生难以预料的负面影响,因为底层任何细微漏洞都会严重威胁整个网络安全,网络可能被迫分叉或中断修复升级。例如,2018年Zcash的通胀漏洞事件:其底层代码存在高危漏洞,代币可无限增发,团队花了8个月时间秘密修补,修复后才公开这一事件。
2.2 链下扩容
核心概念:不改变现有一层主网协议的扩容解决方案。
链下扩容方案又可以细分为Layer2和其他方案:
3. 链下扩容的方案
3.1 State Channels
3.1.1 概要
状态通道规定只有在通道打开、关闭或解决纠纷时,用户才需要与主网交互,把用户间交互放在链下进行,以降低交易时间和成本,并实现交易次数不受限制。
状态通道是简单的P2P协议,适合"基于回合的应用程序",如两人国际象棋游戏。每个通道由主网上运行的多签智能合约管理,该合约控制存入通道的资产,验证状态更新,并仲裁参与者间的争议。参与者在部署合约后存入资金并锁定,双方签名确认后通道正式开通。通道允许参与者间进行不限次数的链下免费交易(只要转账净值不超过存入总额)。参与者轮流发送状态更新给对方,等待对方签名确认。一旦对方签名确认,这笔状态更新就算完成。正常情况下,双方同意的状态更新不会上传主网,只有在出现争议或关闭通道时才依赖主网确认。关闭通道时,任一参与者可在主网提出交易请求,如获全员签名批准则立即执行,否则需等待"挑战期"结束才能收到剩余资金。
综上,状态通道方案可以大大减少主网计算量,提升交易速度,降低交易成本。
3.1.2 时间线
2015/02: Joseph Poon和Thaddeus Dryja发布闪电网络白皮书草案。
2015/11: Jeff Coleman首次系统性总结State Channel概念,提出比特币Payment Channel是State Channel的子案例。
2016/01: Joseph Poon和Thaddeus Dryja正式发表白皮书《The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments》提出比特币闪电网络的扩容方案Payment Channel,仅用于处理比特币网络上的转账支付。
2017/11: 第一个基于Payment Channel框架的State Channel设计规范Sprites被提出。
2018/06: Counterfactual提出详细的Generalized State Channels设计,这是第一个完全与状态通道相关的设计。
2018/10: 文章Generalised State Channel Networks提出State Channel Networks和Virtual Channels概念。
2019/02: 状态通道概念扩展到N-Party Channels,Nitro是首个基于该想法建立的协议。
2019/10: Pisa为解决所有参与者需要持续在线的问题,拓展了Watchtowers概念。
2020/03: Hydra提出Fast Isomorphic Channels。
3.1.3 技术原理
传统链上工作流程:Alice和Bob与部署在主网上的智能合约交互,用户通过向链上发送交易改变智能合约状态。缺点是会带来时间和成本问题。
状态通道工作流程:
Alice和Bob从个人EOA存入资金到链上合约地址,资金锁定在合约中直到通道关闭时返回用户;二人签名确认后,状态通道正式开通。
Alice和Bob可在链下开展不限次数交易,通过加密签名消息相互通信。双方都需对每笔交易签名,以防双花作恶。通过这些消息,他们提出自己账户的状态更新,并接受对方提出的状态更新。
如Alice想关闭通道,需向合约提交自己账户的最终状态,如Bob签名批准,合约则根据最终状态将锁定资金释放返回对应用户。如Bob未响应签名,合约则在挑战期结束后将锁定资金释放返回对应用户。
悲观情况下的工作流程:
两个参与者存入资金,开始交换状态更新。
假设某时Bob不响应Alice发送的状态更新签名,Alice可向合约提交自己最后一次有效状态发起挑战,该状态包含Bob之前的签名。
合约允许Bob在一段时间内通过提交下一个状态响应;如Bob响应,二人可继续交易;如Bob未响应,合约自动关闭状态通道并将资金返回Alice。
3.1.4 优缺点
优点:
缺点:
3.1.5 应用
比特币闪电网络
概述: 闪电网络是比特币网络的小额支付通道,技术演变经历:2/2多签构建单向支付通道,增加RSMC后可构建双向支付通道,再增加HTLC后可连接支付通道拓展到多人支付,最终构建支付网络。通过链下小额支付通道,然后借助中间人构成交易网络,可以解决比特币网络扩容问题。使用遵循"存款(建立通道)→闪电网络交易(更新通道状态)→退款/结算(结束通道)"的流程;理论上每秒可以处理一百万笔交易。
时间线:
生态发展: 闪电网络生态从下到上依次为:底层BTC网络---核心基础设施---各种Dapps。
核心基础设施包括:
核心基础设施之上是各种支付和金融服务以及应用程序,如Strike允许买卖BTC、Twitter打赏和Shopify商家接受BTC等。
截至2022年11月,基于闪电网络的Dapps已增至超20个类别和100多个应用,包括支付、钱包、节点管理、浏览器扩展、播客和流媒体等。当前与节点基础设施相关的技术基础层已基本成熟,钱包支持增加,金融服务和支付集成继续增长,更多娱乐应用在建设,生态系统蓬勃发展。
以太坊雷电网络
概述: 雷电网络是基于以太坊的小额支付通道,与闪电网络非常相似,都是通过建立状态通道来对链上交易进行拓展,目的是在以太坊上实现近乎即时、低费用和可扩展的ERC20代币支付。
时间线: