扩容和跨链通信协议的综述
扩容和跨链通信协议的综述
扩容
拥堵的区块链网络俨然已经无法满足基本的交易需求,扩容势在必行。扩容指的是区块链领域内如何在“更短的时间实现更多的交易”,增强区块链的可扩展性(scalability)。可扩展性是指系统、网络或进程处理越来越多的工作的能力,或者适应增长而扩展的潜力。
为了整体了解扩容技术的思路,先分析影响扩容的因素和瓶颈,目前,主流对区块链技术的逻辑架构分层是三层结构:Layer 0,Layer 1和Layer 2。
Layer 0: 是节点之间互相传递信息的通信层(传输层)。
Layer 1: 是多层结构(网络层,数据层,共识层),其核心是共识层。
Layer 2: 是搭建在 Layer 1 上的链层(合约层,应用层)。
传输层:为区块链提供底层数据传输支撑。
数据层:封装了底层数据区块、链式结构、哈希函数、Merkle树、非对称加密和时间戳等技术,是区块链底层的数据结构。
网络层:包括分布式组网机制、数据传播机制和数据验证机制等。
共识层:封装了各类共识算法,解决在决策权分散的分布式系统中的共识问题,如 PoW、PoS、DPoS 和 BFT 类共识。
激励层:主要包括发行机制和分配机制等,解决对守约节点的奖励和对违约节点的惩罚问题。
合约层:封装各类脚本代码、算法机制和智能合约等,是区块链可编程特性的基础。
应用层:封装了区块链的各种应用场景和案例,如可编程货币、可编程金融和可编程社会等即搭建在应用层上。
Layer 1 扩容
第 1 层扩容,即链上(On-Chain)扩容,通过优化、改进公链基本协议提升扩展性。具体包括数据层改进方案、网络层改进方案和共识层改进方案。
数据层改进方案
通过提高区块的有效容量扩容:包括增加区块容量、分离交易数据从而提升有效区块容量、修改数据结构链式结构为网状结构等思路,即扩块、隔离验证(SegWit,segregated witness)和有向无环图(DAG,Directed Acyclic Graph)等方案。
扩块
扩块方案即增加区块容量,从而单个区块包含的交易数量相应增加,实现扩容目的。以 BCH 为例,2017 年 BCH 区块大小提升至 8M,今年 5 月又再次提升至 32M。从理论上说,在平均区块间隔固定的情况下,网络 TPS 上限与区块大小成正比,BCH 今年九月进行的压力测试也证明其单个区块的交易承载能力高于 BTC。但由于之前提到的节点处理能力、算力中心化等问题,区块的大小不能无节制随意扩大。因此这种方式一方面对于效率提升有限,另一方面存在可能导致算力中心化的问题。
隔离验证(SegWit,segregated witness)
被打包进区块的交易数据包括数字签名(scriptSig)和其他交易信息,数字签名便占用了全部交易数据 60-70% 的空间,但是数字签名仅仅在验证阶段需要。隔离见证即隔离(segregate)数字签名(witness)与其他交易数据,提升单个区块所能容纳的交易数量,通过“缩小”交易数据变相扩大了区块大小,如 BTC 就是采用了隔离见证的扩容方式。同扩块方案一样,隔离见证对于处理效率的提升也是有限度的。
有向无环图(DAG,Directed Acyclic Graph)
DAG 是无回路的有向图,即从一个顶点沿着若干边前进(有向),但永远不能回到原点(无环)。以 IOTA 为例,节点发起交易时只需要找到网络中的任意两笔交易,验证它们的合法性,指向它们并广播到网络。这笔交易会以同样的方式被验证,被验证的次数越多,交易的状态就越稳定。
DAG 避免了因网络延迟和数据同步造成的时间浪费,可以做到高并发,存在的主要问题包括双花和影子链攻击等。
网络层改进方案
分片(Sharding)
分片是指将区块链分成不同部分,即多个分片,分片可以并行处理事务,从而提升了单位时间内处理交易的数量。
Serenity、Polkadot 和 Cosmos都是分片的思路。
共识层改进方案
共识算法本质上是解决三个问题:
- Who can propose the next change?
- Which set of changes is final?
- What happens if someone breaks the rules?
大多数共识算法的瓶颈在于第1个问题和第2个问题即出块和敲定的紧耦合。
共识层的改进方案包括拜占庭容错(BFT,Byzantine Fault Tolerance)类共识、非 BFT 类共识、混合共识(Hybird Consensus)和其他改进方案。
BFT 类共识
不同于非 BFT 类共识的间接达成共识(即参与者并非直接决定共识的具体内容),BFT 类共识下,参与者通过投票决定共识内容直接达成共识,在参与者数量不是很多的情况下(一般 BFT 网络直接参与共识的节点在 100 个以内),TPS 可以达到 10000。
非 BFT 类共识下存在分叉可能,以 BTC 为例,通常需要 6 个区块才能以很高的概率确认某个交易被网络确认,而在 BFT 共识下,达成一致的共识不会被丢弃,因此 BFT 的响应时间(交易从提出到被确认的时间)也明显优于非 BFT 类共识。BFT 类共识的主要问题在于网络规模、容错率等方面。
非 BFT 类共识
通过降低共识算法复杂度和减少传播节点数量等方式减少验证时间、传播时间及形成共识时间,能够显著提升处理效率。
PoS (Proof of Stake,权益证明)。相比于 PoW (Proof of Work,工作量证明),PoS 以权益(持有通证数量×通证持有时间)代替算力决定区块记账权,减少了 PoW 工作量证明过程的能源消耗,在一定程度上解决了可扩展性问题。但是又带来了马太效应、记账激励、无利害关系攻击(Nothing-at-Stake attack)等新的问题。
DPoS (Delegeted Proof of Stake,委托权益证明)。DPoS 在 PoS 的基础上将记账人的角色专业化,通证持有人通过权益选出多个授权代表(EOS 有 21 个“超级节点”,Bitshares 有 101 位代表,理论上单数节点均可),授权代表轮流记账。这种共识下效率得到了明显提升,但是牺牲了非中心化。
混合共识
顾名思义,混合共识指结合了多种方式的共识机制。
如 Elastico 采用工作量证明+拜占庭容错协议,2-hop 采用工作量证明+权益证明机制,Algorand 采用权益证明+拜占庭容错协议, Casper 采用了 PoW+PoS,EOS 采用了 DPoS+BFT。
其他共识修改方案
动态共识算法:目前,区块链大多只存在一种共识算法,当然也有的区块链采用两种或者多种共识算法串行运行的机制,即混合共识。单个共识机制或者多个共识机制的串行模式都会受到某些攻击威胁,因此设计动态的共识算法是未来的可能改进方向之一。
算法和其他技术的结合:比如Prism,修改数据结构为有向无环图DAG,利用空间换时间的方法,同时产生多条链,再利用设计的投票机制确定最终链,实现了出块和敲定的分离。利用1000个虚拟机,可达到70000TPS。
Layer 2 扩容
状态通道
状态通道解决方案通过将链下交互和链上清算隔离开,能够在保障一定程度的非中心化和资产安全性的同时,实现速度更快、费用更低的交易。从一般到特殊分为通用状态通道、状态通道和支付通道三个层次。
状态通道的扩容原理主要是链下交互、链上清算,避免将每一笔小额交易都放在链上进行,只需要把最终的状态提交到链上即可,减轻了链上的工作量。当双方均无异议可以很快完成清算,实现即时终结性(Instant Finality),此外由于在通道内进行链下交易,可实现较快的交易速度、较低的手续费,以及较好的隐私性。
闪电网络(Lighting Network)和雷电网络(Raiden Network)就是采用了状态通道方案。典型的项目还有 Perun Network(支持链下智能合约的执行)、FunFair(基于状态通道的对赌游戏)。
相比于链上扩容方案,状态通道巧妙地将链上和链下的职能分开,采用该方案无需改变公链结构,结合了链上的安全性和非中心化特性以及,链下的扩展性,但从整体生态来说,由于链上链下通信过程中可能存在的问题,状态通道依然属于安全性、非中心化和扩展性的一种新平衡。相比于其他链下扩容方案,状态通道的隐私性较好,可做到即时性,尤其适合于固定双方的高频互动,其劣势在于需要中间节点”垫付”资金、要求节点实时在线或需引入第三方来监督。
状态通道中的状态指的是区块链账本当前的样子,包括账户名称(或 UTXO 模型的地址)、余额(或 UTXO 模型下的未花费交易输出)、合约数据等。
状态通道是在两方或多方之间开辟一条链下通道来进行状态交换,以实现较低的手续费和即时到账等特性。
利用状态通道交易的流程一般为:
- 交易方在链上锁定一定量的资产,在区块链上记录并开辟状态通道;
- 在通道内进行相互交易和状态更新,但不提交到链上;
- 当任一方想要关闭通道时,提交最终状态到区块链上进行清算。若另一方有异议,可在规定时间内申请链上仲裁。
侧链
侧链这一概念是相对主链而言的,通过将部分操作转移到侧链以解决主链的性能和功能瓶颈等问题。
Plasma是典型的侧链思路,Plasma 是运行在根链(ETH 主链)上的一系列智能合约。Plasma 区块链为树状结构,每个分支为一条子链,一般情况下只将子链区块头的哈希值提交到根链,用于验证区块有效性。当有欺诈证明被提交到根链,区块会回滚并且惩罚区块创建者。由于根链只需要处理子链的少量提交,根链的交易负荷有效降低。
侧链与状态通道的主要区别在于并非所有参与者都要在线更新状态,参与者也不需要把数据提交到根链执行和确认。
类似于法院体系中下级法院可同时处理多起案件,上级法院监督下级法院,当有人质疑下级法院的判决可以上诉。
跨链
相比于侧链,跨链的概念更加广泛,跨链方案的主要目的是实现资产、状态等跨链转移交换,链与链之间不仅仅是主侧的关系。
利用跨链技术实现区块链网络的方案有:Serenity、Polkadot 和 Cosmos。
以 Cosmos 为例,其网络由 Hub (枢纽)和 Zone(分区)两部分组成,每个分区可以拥有多种通证,分区之间通过枢纽进行交易,因此跨链方案除了能够实现资产、状态的跨链转移交换,也可将链上交易转移至链下进行从而减轻链上交易处理压力。
Cosmos 基于 Tendermint 共识,支持交易快速处理。Tendermint 共识过程与 BFT 类共识类似,开始时节点对新一轮的区块进行提议,合格的提议区块在预投票(Prevote)环节获得 2/3 以上投票则进入预认可(Precommit)环节,再次获得 2/3 以上的预认可后即获得正式认可(Commit)。
链下计算
链下计算最初针对 ETH 提出,由于 ETH 存在区块 GasLimit,计算量较大的交易消耗 gas 较多将导致拥堵(比如单个区块只能打包一笔交易)甚至无法执行(单笔交易消耗 gas 超过区块 GasLimit)。链下计算的思路是将复杂的交易放到链下执行,执行结果提交回链上,减轻链上处理压力。
采用此类扩容方案的有:Truebit。
Layer 0 扩容
Layer 0 扩容区别于 Layer 1,是因为通信层与共识层的差异。共识层是区块链的创造物,是去中心化的关键,而通信层则是互联网产物,是成熟产品。在区块链项目中,通信层是共识层的底层,服务于共识层。
Layer 0 扩容通过优化区块链底层数据传输协议提升区块链可扩展性,不改变区块链的上层架构。
Layer 0 扩容的重要技术包括:CDN和SDWAN。
目前采用此类方案的有:Marlin,bloXroute。
例如bloXroute 通过提升节点间区块传播速度,从而在保证非中心化和安全性的基础上显著提升链上可扩展性。该项目通过提供 BDN (Blockchain Distribution Network,区块链分布网络)提升节点之间通讯的速度,改善节点同步情况,各节点通过 bloXroute 提供的 服务器接入 BDN 网络,运行网关作为区块链应用程序和 BDN 的中间媒介。
跨链技术
在Layer 2 扩容中我们就讨论过跨链扩容,但跨链技术不仅仅能做扩容,跨链技术被认为是区块链领域发展的圣杯,是实现链联网的核心关键技术。
跨链技术指的是跨区块链的通信和交互。跨链最基本的意义就是要实现价值的流通,解决不同链之间的价值孤岛问题。同时,跨链技术是区块链实现互联互通(interoperability)、提升可扩展性(scalability)的重要技术手段。通过可靠的跨链交易,能够在去中心化经济中实现真正的网络效应。
通过跨链技术,可以实现以下目标:
- 不同区块链之间的资产转移
尽管第三方交易平台能够提供不同区块链项目资产的转移与交换,但第三方交易平台的引入带来了新的中心化节点,不可避免地存在资产安全性、可信任性等问题.跨链确保了是用技术而非机构或人来提供安全、可靠、高效的链上资产转移途径。 - 实现区块链资产的留置
类似于金融和法律领域的财产留置,区块链资产能够实现链上锁定冻结, 并设定某个区块链上的资产锁定条件、解锁条件,还可以与其他链的特定事件/行为进行关联; - 读取和验证其他链的状态或事件
自以太坊区块链问世以来,基于区块链的智能合约得到快速发展.在某个区块链上部署的智能合约,触发其执行的条件可能需要依赖于其他链的信息和数据,跨链数据访问在该应用场景中具有关键作用; - 提升区块链交易处理能力
区块链的可扩展性三难题基本法则表明,区块链只能兼顾去中心性、可扩展性和安全性中的两项。跨链通信是提供更高扩展性的技术路线之一.
区块链应用场景的不断拓展以及区块链互联互通的潜在需求,促进了跨链技术的持续创新和进步.根据跨链技术的演进和实现方式,以太坊的创始人 Buterin 曾经总结了 3 类跨链技术——公证人机制(notary schemes)、侧链/中继(sidechains/relays)、哈希锁定(Hash-locking)。
基于公证人机制的项目
Interledger 早期版本以公证人机制为主实现不同类型账本的连接;Corda 的特色在于提供更安全的公证人选择(交易参与方共同指定)和操作模式(运行共识机制).
基于侧链(中继)的项目
这类项目占比较高,其中,Pegged Sidechains 是侧链最初的技术原型,提出了双向楔入的概念
RootStock,Elements 基于 BTC 侧链提供增强式智能合约功能。
BTCRelay 与 Loom 均为基于 ETH 区块链的侧链,前者提供跨 BTC 与 ETH 的资产交换及智能合约应用,后者侧重构建基于 ETH 的分布式应用 DApp 开发部署环境。
Lisk 则是通过搭建自有链提供 DApp 开发平台。
Plasma 及其变种 Minimal Viable Plasma,Plasma Cash 设计了集成主链与侧链的树形分层网络框架。
Polkadot 和 Cosmos 则分别设计了 Relay chain-Bridges-Parachains 结构和 Hub-Zone 结构的跨链网络基础平台。
基于哈希锁定机制的项目
Nolan’s atomic transfers 为哈希锁定的技术原型。
Zcash XCAT 已成功演示了 ZEC 和 BTC 的跨链交易。
Lightning Network 致力于成为 BTC 主流链下扩容方案,上线版本已运行上千个主网节点和上万个通道,验证了技术的可行性。
系统内部跨链指跨链技术支持在区块链系统内部的子链(如 nano 区块链内部的账户链、ETH 区块链内部 的 sharding 链、rchain 中在不同命名空间运行的独立区块链)跨链。
系统间跨链指支持不同区块链项目之间的跨链(如 BTCRelay 实现 ETH 与 BTC 的跨链、cosmos 原则上支持所有符合 cosmos 协议的区块链互联等)。
跨链作用范围目前以区块链内部以及不同区块链之间为主,提供区块链与传统系统或协议之间交互的跨链项目较少 (interledger 支持分布式和传统中心化账本互联).
跨链技术在不同时期也呈现出各自的特点.比特币区块链时代期间,主要提出了跨链的几种技术原型,并重点针对BTC区块链容量限制及交易手续费高等问题,发展出闪电网络、Pegged Sidechains等项目或技术;后比特币区块链时代时期,侧重于面向更多种应用场景,例如实现链上资产互换(去中心化交易所)、增强区块链系统的互操作性和可升级性、提供小型区块链系统(包括私有链、联盟链)的安全保障和价值传递等,探索具有更强扩展性的通用跨链技术.
总体而言,跨链技术还处于发展过程中,部分跨链技术目前仅公布了技术思路构想,并正在研发或在区块链测试网中开展局部实验阶段,还没有完全实现方案中所列出的各项功能指标和技术特性,因此对跨链技术的安全性、效率、性能、资源消耗等方面开展横向评估较困难.从公开的白皮书或技术报告来看,上述跨链技术有些为基础协议型,有些为开发设计模式,有些是某区块链的侧链,或仅用于有限个区块链之间互联等,各跨链技术不适于通过同一维度进行分类.