HashKey 崔晨:解析公链多层结构趋势和互操作性
从互操作性角度,波卡等原生型多层结构要优于 Layer 2 等后天型,因为前者可实现信息流转和智能合约调用。
区块链技术应用一直以来都是人们最关注的话题,而作为承载应用的公链,其性能决定了应用的上限,关于公链的技术进展同样受到关注。以太坊之后诞生的竞争公链,包括以太坊的升级,都致力于提高系统性能。在此前提下,多层(链)结构在公链中成为众多公链的选择,例如多层架构和链下扩容方案。对于多层结构,层级之间的互操作性是实现可用的基础,更重要的是位于不同层的资产要达到统一的安全性。本文主要对目前流行的多层区块链结构进行分析,说明安全来源和互操作性问题。
公链多层阶段的趋势
公链及智能合约的诞生给区块链应用提供了载体,但应用场景也受限于公链。区块链大规模应用的障碍之一是可扩展性(Scalability),即区块链的性能。可扩展性会限制区块链交易吞吐量,导致拥堵和交易费上涨,以太坊就常常面临这个问题。扩容是解决网络拥堵的根本方案,多层结构就是实现扩容的主要方式之一。通过多层结构,数据可以在不同的网络分区并行处理,提高系统的处理效率。例如以太坊的 Layer 2 扩容方案,以计算过程放到链下进行,最终结果传回链上的方式,增强区块链的信息处理能力。公链多层结构有不同的表现方式,有平行链和中继链、分片、Layer 2、主网和子网等。
公链中的数据和价值流转需要主网出块者达成共识,根据主网中的节点对多层结构是否感知,可以分为原生型多层结构和后天型多层结构两种模式。原生型多层结构的例子是 Polkadot,在设计之初就明确了信标链上的验证者负责维护网络安全以及平行链间的通信。在后天型多层结构中,主网对其他层级没有感知,不负责其他层上的任何功能,需要各层自行保证资产安全。无论是哪种类型的多层结构,它们的作用都是在保证资产安全和互操作性的前提下,实现整个系统的扩容,提高公链的处理效率。
公链多层结构的资产安全和互操作性问题
不同类型的公链结构在实现多层结构安全的方式有所不同,原生型多层结构需要上线时就对跨层机制和确保安全方面有完善的设计,在上线后很难改动。后天型多层结构会在主链的基础上进行改动,自行保证安全并且不需要主链参与,实施发现缺陷后可以及时更迭技术,更为灵活。在保证不同层间安全的前提下,多层结构的互操作是可用性的基础。与安全保证类似的,原生型多层结构中会预设跨层接口,而且互操作性的范围更广,后天型多层结构需要额外的桥连接才能实现跨片区的交互。
原生型多层结构
Polkadot
Polkadot 是一种异构多链结构,表现为中继链加平行链的方式,网络中共有三个角色,验证人(Validator)、提名人(Nominator)和收集人(Collator)。提名人可以将自己的 DOT 抵押给验证人,验证人负责维护中继链,中继链与多个平行链相连,每个平行链都会被分配一定数量的验证人,收集人负责收集平行链上的信息并生成验证证明发送给验证人。应用全部运行在平行链上,在网络需要扩容时,只需要增加平行链的数量。
图 1:Polkadot 架构,内圈是中继链,外面连接的是平行链
中继链负责维护平行链的安全以及之间的信息传输,分别通过验证证明和 XCMP (跨链信息传递)实现。平行链与中继链共享安全的同时需要共享状态,他们通过 BABE 和 GRANDPA 达成共识,只要超过三分之二的节点投票支持,区块就可以被认为是最终性的。为了保证网络安全,平行链中的信息会由验证人证实已经执行过后,才会记录到中继链上。收集人向负责的验证人提交候选区块和状态转换的验证证明,如果平行链区块是无效的,则会被验证人拒绝。最终是验证人维护整体网络安全,验证人数量越多网络越安全,与平行链上收集人的数量无关。转化状态证明的验证必须使用验证人储存在中继链上的已注册的状态转换函数。为了防止验证人和收集人共谋,验证人会每隔一段时间进行随机分配。
XCMP 负责实现两条平行链的互操性,通过中继链上的验证者解决信息跨链问题。XCMP 由发送者和接收者组成,发送者的收集人会将跨链信息放入出站列中,负责的验证者验证后将其添加其进入接收者站列,接受者的收集人会看到这条信息后执行要求,并构建候选区块。接收链上的收集人最后将区块交给验证者,经由验证人验证消息已经被处理后,纳入中继链完成一次跨链。中继链既保证安全又协助跨链,因此 Polkadot 可以视为一个整体。
Cosmos
Cosmos 通过 Hub 和 Zone 的形式来实现多层结构,网络通过增加 Zone 实现扩容,Zone 也可以成为 Hub 再连接上其他 Zone。相对于来说,Zone 就是网络中的分片, Zone 与 Zone 之间可以通过 IBC (区块链间通信)协议实现通信。
图 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 等。
状态通道
状态通道和闪电网络类似,将交易转移到通道中进行,等待通道内的交易结束后,再将资金转移到主链上进行清算。为了保证交易双方的资金安全,用户可以随时把资金撤走。在这种模式下,用户每进行一次资金转移都需要经过双方签名确认,最终版的签名代表了通道内的最终状态。用户需要凭借双方签名的证明提出提现请求,如果一方用户提交了请求,在规定时间内另一方拿出证明表明前者并非使用最新的交易结果,则提出质疑的一方获得所有资金(罚金机制);否则按照提出方的结果进行分配。