一般来讲,Layer1 特指一种可在大范围内,尤其特指全球范围内达成业务一致性(或称“共识”)的区块链网络系统。而相应地,Layer2 则是基于 Layer1 之上,在相对更小范围达成一致性的网络系统。典型的 Layer1 系统包括以太坊、比特币以及 Nervos CKB 等,典型的 Layer2 协议有状态通道、Plasma等。
对于 Layer2 来说,Layer1 承担了两个角色,首先是资产的来源,其次是仲裁的法官。Layer1 的用户基于对 Layer2 的有限信任将部分资产转移到 Layer2 上享受高速、低成本的服务,并在异常发生时利用 Layer1 对争议进行仲裁。其中,我们将区块链上的资产定义为代币、NFT 以及其他可明确所有权的数据或状态信息。
2018年以来,Layer2 技术的前沿技术发展迅速,各种 Layer2 方案不断涌现。本文尝试给出一种通用框架,对 Layer2 方案在不同功能点的取舍进行分析,以方便用户在不同的应用场合有针对性地选择。
Layer2 业务流程的生命周期
典型的 Layer2 业务流程包括五个主要步骤:规则设置、进入、状态迁移、退出以及挑战与应答。
规则设置
在规则设置阶段,参与 Layer2 业务的各方会就状态迁移规则、挑战应答规则进行设置。该步骤通常表现为在 Layer1 部署一个智能合约,或者交易多方互换数字签名。其本质在于各方提供一个不可否认的承诺(commitment),以便在挑战与应答阶段对争议进行判定。
早期的状态通道技术通常要求预先在 Layer1 上部署一个判定合约对规则和状态进行约束。近期以 Counterfactual 为代表的虚拟合约方式则仅要求参与者对规则进行链外签名认可,当用户对交易结果产生争议时再将其部署到 Layer1 上。这种方式大幅降低了通道建立的成本,但 Plasma 类的 Layer2 协议仍然需要在 Layer1 上部署规则合约以便定期接收 Layer2 对状态的 commitment。
进入
用户的资产从 Layer1 进入到 Layer2 需要用户触发 Layer1 的资产锁定动作,以确定其不会被两层网络双花。锁定后的资产将产生资产锁定证明,该证明在 Layer2 上被验证后即实现了资产的进入。假设 Layer1 具备足够的可用性和安全性,那么资产锁定证明的生成和内容的可靠性是无需置疑的。所以本操作的关键在于 Layer1 上的资产锁定证明如何在 Layer2 达成共识。
对于支付通道/状态通道等点对点交易的 Layer2 协议来说,共识仅限于交易双方或有限几方之内(由多跳连接的更多参与方本质上也是两方共识的组合),参与者愿意执行进一步业务即证明对对方的资产锁定证明达成了共识。
对于 Plasma 等多对多交易的 Layer2 协议来说,除非所有的参与方都对某个资产锁定证明进行签名并通知所有人,否则无法确认所有人对该动作达成共识。此时,退而求其次,可由 Layer2 的 Operator 对该资产锁定证明进行签名,来宣布该动作在 Layer2 达成了共识。显然,存在某些情况一些参与方对该行为并不认可,他们可以执行退出动作离开这个共识区,或者把 Operator 的签名提交到 Layer1 上进行仲裁。同时,也存在 Operator 有意或无意地忽略了用户的资产锁定证明,并没有对其签名、在 Layer2 上广播的情况,此时用户也应该可以执行退出动作。最终留下来的参与者表明其对锁定证明无异议,即对此达成了与 Layer1 安全性一致的共识。
状态迁移
Layer2 用户的每一笔交易都应该使得 Layer2 的总状态发生正确迁移。这一步骤涉及三个关键行为:每笔交易的发生是否达成了共识,每笔交易的结果是否达成了共识,该共识的达成是否受到 Layer1 的监督。
与进入阶段类似,参与方对共识的接受与否取决于自己与所有其他参与方的认可或自己与 Operator 的认可。点对点交易的 Layer2 只需要获得对方的签名,并确认该签名符合设置阶段的业务规则即可。而多对多交易的 Layer2 则必须由 Operator 提交共识结果,并且将共识结果的摘要提交到 Layer1 作为 commitment 以便该行为接受 Layer1 监督和仲裁。
该步骤的几个关键点在于,参与方应能够对影响到自己资产的状态迁移进行检验;参与方应能够验证 Operator 提交到 Layer1 的 commitment 与自己获得的状态迁移信息的一致性,并可获得足够的数据生成证明并提交到 Layer1 进行质疑;当参与方交易被 Operator 过滤时,它的资产应可以安全地退出。其中前两个点都涉及 Layer2 的数据可用性问题,后一个点涉及 Layer2 的服务可用性问题。一旦服务或数据不可用,用户可以随时退出;在数据和服务可用前提下,Operator 的作恶行为可以由 Layer1 约束。
退出
Layer2 的退出机制非常复杂,类型也非常多。但其本质都是退出人将资产状态及其证明提交到 Layer1 上,通过预定规则和已经由 Layer1 认可的状态 commitment 的验证解锁资产。退出流程依赖于已经达成共识的规则和状态 commitment,并受后续挑战与应答阶段的约束,其本身的要点在于退出次序和退出的即时性。
对于需要引入 Operator 为 Layer2 共识结果以及 Layer2 锚定到 Layer1 的 commitment 进行背书的协议来说,总是存在某些情况无法证明 Operator 给出的共识结果是错误的。因此需要一个公正的退出次序能够保障诚实用户优先退出。然而,恰恰是因为我们无法证明某人“诚实”才引入了退出的次序问题,所以这里指的诚实用户优先退出指的是所有的诚实用户都必须时刻关注 Operator 的行为,并在其行为失序时立刻发起退出,然后按照这些用户退出状态所在的时点的先后次序进行依次退出。
用户提交的退出动作涉及的资产可能与其他用户的资产有关,Layer1 往往无法确定用户提交的退出动作是否是对应资产的最终状态,这就需要等待其他用户对该动作的挑战。挑战的流程决定了退出动作的即时性。理论上,如果 Layer1 可以确定该动作就是对应资产的最终状态,该资产就可以即时退出。例如要求 Operator 在 Layer1 上抵押不小于当前用户所有资金余额的资金,并在每次向 Layer1 提交状态空间 commitment 时都向每一个用户发送一个当前余额的证明。那么用户就可以在最新的 commitment 上提交一个即时的、无需等待挑战的退出请求。
挑战与应答
挑战与应答发生在 Layer1,利用了它作为 Layer2 仲裁者的角色。对应的挑战内容为所有在 Layer1 上发生的与 Layer2 有关的交易,包括 Layer2 共识状态的 commitment 以及用户对退出状态的主张。
对共识状态 commitment 的挑战意味着挑战者不认同 Operator 提交到 Layer1 的共识结果,这种不认同或者源自于挑战者获得了不同的状态结果,或者来自于挑战者无法获得足够的数据以得到对应的状态结果。针对第一种情况,挑战者可以提交新的 commitment,并给出足够的证据证明其正确性。针对第二种情况,挑战者可以提交一个数据申请,要求 Operator 披露完整数据。
但由于数据可用性,或者 Operator 签署冲突的共识结果等问题,上述挑战可能无法得到符合诚实用户利益的结果。此时,应允许用户选择最近一个用户认可的状态点进行挑战。如果 1) 用户由于自己疏忽导致超过了最后一个自己认可的状态点的退出提交时间;或者 2) 预定义的设置规则并不允许用户对 Operator 提交的共识 commitment 信息进行挑战,那么用户将蒙受损失。前者正是 Plasma 方案遇到的用户体验批评,后者则是多签跨链方案遇到的安全诟病。
结论
本框架从 Layer2 交易业务流程出发,分析了局域共识的 Layer2 与全局共识的 Layer1 之间进行资产转移的必要步骤。指出确保 Layer2 的安全性要求第一 Layer2 要能够达成共识,第二 Layer2 的共识结果必须由 Layer1 接受。
对于点对点交易的 Layer2 协议来说,达成共识只需要双方交换对共识的签名即可。对于多对多交易的 Layer2 协议来说,达成共识不得不引入 Operator 的角色,并由 Operator 将共识结果的摘要提交到 Layer1 备查。我们还应该发现,Layer2 Operator 的数量对该流程并无本质影响,因此 Layer2 并不关心运营方是中心化节点还是分布式节点。此外,由于 Layer2 的共识范围总是小于 Layer1,因此不论 Layer2 采取哪种共识形式(包括何种激励形式),其共识结果都不能由 Layer1 无条件接受。因此 Layer2 的共识达成方式也不是 Layer2 安全性的决定性因素。
因此, 不论是哪种类型的 Layer2 协议,其共识结果要想获得 Layer1 的接受都需要经历挑战-应答过程。 而挑战-应答流程则受到 Layer1 带宽、退出次序以及高费用的限制,对大部分用户来说是非常高的门槛。但这并不意味着用户资产退出的即时性无法得到保障,可以通过 Operator 对用户在 Layer2 持有的资产在 Layer1 上进行 100% 资产抵押来实现用户退出的实时性。
从用户体验的角度来说,挑战-应答流程是一个灾难,每个用户都必须时刻关注最新的状态变更。将挑战-应答流程委托给代理方并不能提高安全性,因为它把风险转嫁到代理方的可信性上了。一个折中的方案是结合点对点交易和多对多交易的 Layer2 的特点,让 Operator 给出足够的资产抵押,并对用户在 Layer2 上的状态迁移给出资产退出保障。这样,一旦用户选择退出,可以立即退出,无需经历挑战-应答流程。还有一种方法就是用户舍弃转移到 Layer2 的资产的安全性,对 Operator 给与信任,由 Operator 完成所有的状态迁移与资产退出证明工作。相信这两种协议会是未来 Layer2 发展的重点。
作者:王博
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。