通常来说,Layer1 特指一种可在大范围内,尤为特指全球范围内达成业务一致性(或称“共识”)的区块链网络系统。而相应地,Layer2 则是基于 Layer1 之上,在相对更小范围达成一致性的网络系统。典型的 Layer1 系统包括以太坊、比特币以及 Nervos CKB 等,典型的 Layer2 协议有状态通道、Plasma等。安全
对于 Layer2 来讲,Layer1 承担了两个角色,首先是资产的来源,其次是仲裁的法官。Layer1 的用户基于对 Layer2 的有限信任将部分资产转移到 Layer2 上享受高速、低成本的服务,并在异常发生时利用 Layer1 对争议进行仲裁。其中,咱们将区块链上的资产定义为代币、NFT 以及其余可明确全部权的数据或状态信息。网络
2018年以来,Layer2 技术的前沿技术发展迅速,各类 Layer2 方案不断涌现。本文尝试给出一种通用框架,对 Layer2 方案在不一样功能点的取舍进行分析,以方便用户在不一样的应用场合有针对性地选择。框架
典型的 Layer2 业务流程包括五个主要步骤:规则设置、进入、状态迁移、退出以及挑战与应答。分布式
规则设置区块链
在规则设置阶段,参与 Layer2 业务的各方会就状态迁移规则、挑战应答规则进行设置。该步骤一般表现为在 Layer1 部署一个智能合约,或者交易多方互换数字签名。其本质在于各方提供一个不能否认的承诺(commitment),以便在挑战与应答阶段对争议进行断定。代理
早期的状态通道技术一般要求预先在 Layer1 上部署一个断定合约对规则和状态进行约束。近期以 Counterfactual 为表明的虚拟合约方式则仅要求参与者对规则进行链外签名承认,当用户对交易结果产生争议时再将其部署到 Layer1 上。这种方式大幅下降了通道创建的成本,但 Plasma 类的 Layer2 协议仍然须要在 Layer1 上部署规则合约以便按期接收 Layer2 对状态的 commitment。生命周期
进入部署
用户的资产从 Layer1 进入到 Layer2 须要用户触发 Layer1 的资产锁定动做,以肯定其不会被两层网络双花。锁定后的资产将产生资产锁定证实,该证实在 Layer2 上被验证后即实现了资产的进入。假设 Layer1 具有足够的可用性和安全性,那么资产锁定证实的生成和内容的可靠性是无需置疑的。因此本操做的关键在于 Layer1 上的资产锁定证实如何在 Layer2 达成共识。get
对于支付通道/状态通道等点对点交易的 Layer2 协议来讲,共识仅限于交易双方或有限几方以内(由多跳链接的更多参与方本质上也是两方共识的组合),参与者愿意执行进一步业务即证实对对方的资产锁定证实达成了共识。it
对于 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 发展的重点。
做者:王博