从互操作性角度,波卡等原生型多层结构要优于 Layer 2 等后天型,因为前者可实现信息流转和智能合约调用。

撰文:崔晨, 就职于 HashKey Capital Research
审核:邹传伟,万向区块链首席经济学家

区块链技术应用一直以来都是人们最关注的话题,而作为承载应用的公链,其性能决定了应用的上限,关于公链的技术进展同样受到关注。以太坊之后诞生的竞争公链,包括以太坊的升级,都致力于提高系统性能。在此前提下,多层(链)结构在公链中成为众多公链的选择,例如多层架构和链下扩容方案。对于多层结构,层级之间的互操作性是实现可用的基础,更重要的是位于不同层的资产要达到统一的安全性。本文主要对目前流行的多层区块链结构进行分析,说明安全来源和互操作性问题。

公链多层阶段的趋势

公链及智能合约的诞生给区块链应用提供了载体,但应用场景也受限于公链。区块链大规模应用的障碍之一是可扩展性(Scalability),即区块链的性能。可扩展性会限制区块链交易吞吐量,导致拥堵和交易费上涨,以太坊就常常面临这个问题。扩容是解决网络拥堵的根本方案,多层结构就是实现扩容的主要方式之一。通过多层结构,数据可以在不同的网络分区并行处理,提高系统的处理效率。例如以太坊的 Layer 2 扩容方案,以计算过程放到链下进行,最终结果传回链上的方式,增强区块链的信息处理能力。公链多层结构有不同的表现方式,有平行链和中继链、分片、Layer 2、主网和子网等。

公链中的数据和价值流转需要主网出块者达成共识,根据主网中的节点对多层结构是否感知,可以分为原生型多层结构和后天型多层结构两种模式。原生型多层结构的例子是 Polkadot,在设计之初就明确了信标链上的验证者负责维护网络安全以及平行链间的通信。在后天型多层结构中,主网对其他层级没有感知,不负责其他层上的任何功能,需要各层自行保证资产安全。无论是哪种类型的多层结构,它们的作用都是在保证资产安全和互操作性的前提下,实现整个系统的扩容,提高公链的处理效率。

公链多层结构的资产安全和互操作性问题

不同类型的公链结构在实现多层结构安全的方式有所不同,原生型多层结构需要上线时就对跨层机制和确保安全方面有完善的设计,在上线后很难改动。后天型多层结构会在主链的基础上进行改动,自行保证安全并且不需要主链参与,实施发现缺陷后可以及时更迭技术,更为灵活。在保证不同层间安全的前提下,多层结构的互操作是可用性的基础。与安全保证类似的,原生型多层结构中会预设跨层接口,而且互操作性的范围更广,后天型多层结构需要额外的桥连接才能实现跨片区的交互。

原生型多层结构

Polkadot

Polkadot 是一种异构多链结构,表现为中继链加平行链的方式,网络中共有三个角色,验证人(Validator)、提名人(Nominator)和收集人(Collator)。提名人可以将自己的 DOT 抵押给验证人,验证人负责维护中继链,中继链与多个平行链相连,每个平行链都会被分配一定数量的验证人,收集人负责收集平行链上的信息并生成验证证明发送给验证人。应用全部运行在平行链上,在网络需要扩容时,只需要增加平行链的数量。

HashKey 崔晨:解析公链多层结构趋势和互操作性图 1:Polkadot 架构,内圈是中继链,外面连接的是平行链

中继链负责维护平行链的安全以及之间的信息传输,分别通过验证证明和 XCMP (跨链信息传递)实现。平行链与中继链共享安全的同时需要共享状态,他们通过 BABE 和 GRANDPA 达成共识,只要超过三分之二的节点投票支持,区块就可以被认为是最终性的。为了保证网络安全,平行链中的信息会由验证人证实已经执行过后,才会记录到中继链上。收集人向负责的验证人提交候选区块和状态转换的验证证明,如果平行链区块是无效的,则会被验证人拒绝。最终是验证人维护整体网络安全,验证人数量越多网络越安全,与平行链上收集人的数量无关。转化状态证明的验证必须使用验证人储存在中继链上的已注册的状态转换函数。为了防止验证人和收集人共谋,验证人会每隔一段时间进行随机分配。

XCMP 负责实现两条平行链的互操性,通过中继链上的验证者解决信息跨链问题。XCMP 由发送者和接收者组成,发送者的收集人会将跨链信息放入出站列中,负责的验证者验证后将其添加其进入接收者站列,接受者的收集人会看到这条信息后执行要求,并构建候选区块。接收链上的收集人最后将区块交给验证者,经由验证人验证消息已经被处理后,纳入中继链完成一次跨链。中继链既保证安全又协助跨链,因此 Polkadot 可以视为一个整体。

Cosmos

Cosmos 通过 Hub 和 Zone 的形式来实现多层结构,网络通过增加 Zone 实现扩容,Zone 也可以成为 Hub 再连接上其他 Zone。相对于来说,Zone 就是网络中的分片, Zone 与 Zone 之间可以通过 IBC (区块链间通信)协议实现通信。

HashKey 崔晨:解析公链多层结构趋势和互操作性图 2:Cosmos 网络架构

每个 Zone 和 Hub 都是一个独立的区块链,网络的安全性由每条链自行维护,每条链上都设有独立的验证者节点,他们通过共识保障链上财产。Cosmos 网络多层结构交互独立,这有别于 Polkadot。在构建 Zone 时,Cosmos 提供了模块化的开发工具包 Cosmos SDK,允许开发者直接使用 Tendermint BFT 共识算法。Tendermint 的容错率为三分之一,并且在共识时可以实现同一区块高度上不会出现两个区块,避免了网络分叉以此实现安全。

Cosmos 中的 Zone 通过 IBC 机制进行信息交换,IBC 类似于互联网的 TCP 协议,目的是实现信息的可靠传输,需要共识算法的最终性防止双花,Tendermint 是最符合其要求的共识算法之一。在跨链实现前,双方需要了解对方的区块头信息,相当于保存了对方的轻节点。发送方在链上执行相关操作后,会生成相关证明传送给接收者。接收者验证后发送者的操作后,会执行下一步骤。

后天型多层结构

对于后天型多层结构,原本就存在的区块链结构称为 Layer 1,后来在区块链本身上搭建的多层结构称为 Layer 2。并非所有链下方案都可以算作 Layer 2 层,否则中心化交易所也能算作多层结构。只有在机制设计上能完全保证用户资金安全的方案才可以归入 Layer 2 方案,例如状态通道、Plasma、Rollup 等。

状态通道

状态通道和闪电网络类似,将交易转移到通道中进行,等待通道内的交易结束后,再将资金转移到主链上进行清算。为了保证交易双方的资金安全,用户可以随时把资金撤走。在这种模式下,用户每进行一次资金转移都需要经过双方签名确认,最终版的签名代表了通道内的最终状态。用户需要凭借双方签名的证明提出提现请求,如果一方用户提交了请求,在规定时间内另一方拿出证明表明前者并非使用最新的交易结果,则提出质疑的一方获得所有资金(罚金机制);否则按照提出方的结果进行分配。

虽然状态通道的设置保证了资金安全,但影响了可用性和互操作性,而且状态通道内很难实现智能合约。用户无法对状态通道外的人转账,只能与通道内的人交互。通道只允许双方存在,如果想与其他人交易,只能再设立一个通道或者通过其他人作为路由节点进行交易。每条通道内都要锁定一定资金,这样的话影响全网的资金利用率,并且要求节点长期在线。

Plasma

Plasma 由智能合约和默克尔树结构组成,通过在以太坊主链(或者称根链)上创建一条或多条子链实现扩容。每个 Plasma 子链都是由独立的节点运营,他们可以通过不同于主链的共识算法验证和产出区块。运营者将交易数据以默克尔树的形式储存,并且将默克尔根发布到以太坊主链上,这样其他人能快速验证原数据是被储存在 Plasma 链中。

用户在 Plasma 链上的进入和退出需要智能合约处理,这个智能合约包括了状态转换规则,用户可以随时与智能合约交互自行加入和退出 Plasma 链。因此在检测到 Plasma 链上运营者的作恶行为时,可以主动将资金退回到主链。在退出时,用户除了要向以太坊提交期交易记录的证明外,还需要提交保证金且有一定挑战期的限制。如果用户提交了错误的记录,需要有人在挑战期对其进行证明并扣掉他的押金。

与状态通道不同,Plasma 允许将子链中的资产发送给不在子链上的用户,只需要用户在子链中提现,所以在 Plasma 链上的资产与主网没有互操作性。而且不同的 Plasma 链由不同智能合约设立,他们之间也很难实现资产跨链和互操作性。

ZK Rollup

Rollup 是一种链下解决方案,主网中的计算放到链下进行,将可验证的结果传回链上,并且能够保证数据可得性。和 Plasma 一样,在链下交易前也需要用户将资金转入 Rollup 地址中。ZK Rollup 的验证者提交链下数据者需要附属一个证明,其内容的正确性可以快速得到主链验证。但有效性证明的成本与交易的复杂度有关,如果对智能合约的操作进行验证,成本会剧增。因此 ZK Rollup 很难支持通用智能合约,限制了它的使用场景。目前 ZK Rollup 的研究团队在开发适用在其上的标准智能合约。

Validium 是一种类似于 ZK Rollup 的技术,同样通过有效性证明验证交易。不同的是 Validium 的数据储存在链下,需要运营者负责数据储存。运营者的存在让 Validium 更中心化,但有助于扩展链下效率,因此 Validium 更适用于低信任环境的高频交易场景。

Rollup 是主链上扩展出的 Layer 2 层,目前只能实现跨层资产转移,通过验证证明的方式保证 Layer 2 层的资金安全。由于资产跨到了 Layer 2 层,所以很难实现跨层的智能合约调用。不同的 Rollup 之间也很难实现互操作,目前的跨链方案多为设立双边资金池的方式。

Optimism Rollup

Optimism Rollup 与 ZK Rollup 同样采取了 Rollup 的方式,面临相同的互操作问题。与 ZK Rollup 的验证证明方式不同,Optimism 在保证资金安全上参考了 Plasma 模式,使用的是欺诈证明。链上信息发布者需要提交押金,并等待挑战期。其他人可以在链上提交欺诈证明揭露发布者发布了错误的数据,如果属实则会对交易进行回滚,并没收发布者的押金。挑战期结束前没有人挑战成功的话,就可以认为数据是正确的。即将上线的 Arbitrum Rollup 是 Optimistic Rollup 的一个变种,也设有挑战期的限制。如果有人认为数据是有误的,则要缴纳保证金并提交证明,链上合约会对其进行仲裁。他们之间最大的差异在于上传到链上的数据有所区别,在解决争端时的链上成本会不同。Optimistic Rollup 会在链上执行一次完整的合约调用,消耗较高成本,Arbitrum Rollup 缩小其中的争议范围,降低了链上解决争议的成本。

多层结构的区别与联系

很多公链都呈现出多层结构,根据区块链上验证者对其他层是否感知,它们在实现方式上有所不同。对于原生型多层结构来说,除了资产之外,在虚拟机存在的情况下,还可以在不同层中实现智能合约的调用。在多层结构中实现更多的互操作性有利于扩大生态规模,实现模块化的功能,节约开发成本,并且层级间的互通能够提高资金利用率。后天型多层结构中主链验证者不会响应 Layer 2 层上的请求,不过 Layer 2 层在非必要情况下也不会与主链进行交互,因为会占用主链资源,影响 Layer 2 的扩容效果。由于没有类似于原生型多层结构中的中继者或达成统一协议,在 Layer 2 之间实现互操作性是非常困难的。

后天型多层结构在资金安全问题上会涉及到更复杂的问题,需要用户资产在链下能够实现和主链相同的安全性。在目前 Layer 2 的设计方案中,都保证了无论 Layer 2 上是否存在验证者,用户在链下的资产都可以随时提回链上,需要通过各种机制设计保证用户资产的安全性。下表是对不同多层结构在互操作性、跨层方式和层中角色方面异同的总结。

HashKey 崔晨:解析公链多层结构趋势和互操作性表 1:多层结构的异同

思考与总结

多层结构通常是公链实现扩容的方式,将原本在一条区块链上交易的信息分散到多层中,通过并行处理提高效率。多层结构有两种表现方式,原生型和后天型,他们在验证者对多层结构的感知上有所区别。

在原生型和后天型多层结构中,信息通过不同的方式进行跨层传递。原生型多层结构例如 Polkadot 和 Cosmos 分别通过中继链和协议的方式实现跨层,对多层结构有严格的限制,Polkadot 要求平行链的结果由中继链共识决定,Cosmos 要求使用 IBC 协议的双方达成一致的共识安全,例如双方都使用 Tendermint 算法。Polkadot 中继链的验证者负责平行链的信息传递和资产安全,可以将多层视为整体。Cosmos 的多层结构则较为独立,每层均有独立的验证者。后天型多层结构只能通过资产映射的方式进行跨层,映射资产的安全性源自用户可以自行加入和退出 Layer 2,保证用户掌握控制权。为了实现链下交易与主链同等的安全性,不同 Layer 2 方案设计了各种机制。例如状态通道中需要用户交易后更新签名状态,Plasma 将原始数据的默克尔根发布在主网上,Rollup 将压缩后的交易传回主网,交易方或第三方可以直接验证。

在更广义的互操作性上,原生型多层结构要优于后天型,因为他们可以实现信息流转及智能合约的调用。而后天型多层结构中由于信息源自链下,主链上验证者没有感知,在 Layer 2 和验证者之间不会存在直接交互。对于不同 Layer 2 而言,由于都是从主链上延展出的结构,跨层互操作性的难度不亚于两条异构链之间互操作。目前实现的资产跨层是双边资金池的方式,距离真正的互操作性还差很远。总之在区块链应用大规模部署前,多层结构依然是公链的趋势,接下来还将在互操作性以及生态扩展方面进行完善。