重新认识Layer2,为何Danksharding提出者觉得Validium不算ETH二层?
导语:日前,Danksharding 的提出者、ETH基金会的研究员 Dankrad Feist 在twitter上发表了一番颇具争议的言论。他明确指出,不使用 以太币 作 DA 层(数据可用性层)的模块化区块链不是 Rollup,同时更不是ETH Layer2。假如根据 Dankrad 的说法,Arbitrum Nova 和 Immutable X、Mantle 都要从 Layer2 名单里「除名」,由于它们只在 以太币 以外(自己构建了名为 DAC 的链下 DA 互联网)披露买卖数据。

同时,Dankrad 还表示,像 Plasmas 和状况通道这种无需链上数据可用性(Data Availability)来确保安全的策略仍算是 Layer2,但 Validium(不需要 以太币 作 DA 层的 ZKRollup)不算 Layer2。


Dankrad 此言一出,便引来了很多 Rollup 范围的 Founder 或 Researcher 质疑。毕竟有很多「Layer2」项目为了节省本钱,并没使用 以太币 作为 DA( 数据可用性 ) 层,假如把这类项目踢出 L2 名单,势必波及到相当多的扩容互联网;同时,假如 validium 不算 L2,Plasma 应该也没资格算作 L2。
对此,Dankrad 表示,Plasma 用户在 DA 不可用时(就是指链下的 DA 层互联网搞数据扣留,不公开买卖数据),仍然可以把我们的资产安全撤出至 L1;但相同的状况下,Validium(大部分使用 StarkEx 策略的项目都是 validium)却可以让用户没办法撤资至 L1,把钱冻住。

显然,Dankrad 计划从「是不是安全」来界定一个扩容项目是不是为ETH Layer2。假如从「安全性」的角度来考量,Validium 在定序器问题 + DA 层发动数据扣留攻击 ( 隐瞒新数据 ) 的极端状况下,的确可以把用户资产冻结在 L2 没办法提到 L1;Plasma 因在设计上与 Validium 不同,虽然多数时候安全保障不及 Validium,但在定序器问题 + DA 层发动数据扣留攻击 ( 隐瞒新数据 ) 时,却允许用户把资产安全撤离至 L1。所以 Dankrad 的说辞不无道理。
本文计划从 Dankrad 的视角出发,通过对 Layer2 的细节作进一步剖析,来深入理解为什么 Validium 不是严格意义上的「Layer2」。
到底如何概念 Layer2?

根据 ethereum.org 网站和多数ETH社区成员的概念,Layer2 是「给ETH扩容 + 继承ETH安全性 的独立区块链」。第一,「给ETH扩容」就是指分流ETH没办法承载的流量,分担 TPS 方面的重压。而「继承ETH安全性」,其实可以转译为「借用ETH保障自己安全性」。
譬如,Layer2 上所有些买卖 Tx 都要在 以太币 上完成最后结算 Finalize,数据有错误的 Tx 不会被放行;假如要回滚 Layer2 的区块,要先回滚ETH区块,只须ETH主网不发生类似 51% 攻击的区块回滚,L2 区块就不会回滚。
假如大家更进一步分析 Layer2 的安全性,其实还要考虑很多极端状况。譬如,假如 L2 项目方跑路、定序器 Sequencer 问题、链下 DA 层挂掉,在这类极端事件发生时,用户能否把自己在 L2 上的资金安全撤出到 L1 上?
Layer2 的「强制提款」机制
不考虑 L2 合约升级 / 多签隐患等原因,其实如 Arbitrum 或 StarkEx 都有为用户设置强制提款的出口。假设 L2 的定序器发动审察攻击,故意拒绝用户的买卖 / 提款请求,或干脆永久宕机,Arbitrum 用户可以调用 L1 上 Sequencer Inbox 合约的 force Inclusion 函数,将买卖数据直接提交至 L1;假如在 24 小时内,定序器没处置这笔需要「强制包括」的买卖 / 提款,该买卖会被直接包括进 Rollup 账本的买卖序列中,这就为 L2 用户创造了一个可强制提款的「安全出口」。

相比之下,有逃生舱 Escape Hetch 机制的 StarkEx 策略要有过之无不及。假如 L2 用户在 L1 提交的 Forced Withdrawal 请求在 7 天窗口期结束时,未得到定序器响应,则该用户可以调用 freeze Request 功能让 L2 进入冻结期。此时,L2 定序器将没办法在 L1 上更新 L2 的状况,L2 状况冻结后要过 1 年才能解冻。


L2 状况冻结后,用户可以架构与目前状况有关的 Merkle Proof,证明自己在 L2 上有 XX 数额的资金,通过 L1 上的逃生舱 Escape Hetch 有关合约来提款。这便是 StarkEx 策略所提供的「全额提款」服务。即使 L2 项目方没了,定序器永久问题了,用户还是有方法把资金撤出 L2。
但这里存在一个问题:用 StarkEx 策略的 L2 大多是 Validium(譬如 Immutable X 和 ApeX),并不会把 DA 所需的数据发布到 以太币,架构目前 L2 状况树的信息都存在链下。假如用户没办法在链下获得架构 Merkle Proof 的数据(譬如链下 DA 层发动数据扣留攻击),是没办法通过逃生舱来提款的。

至此,文章开头提到的 Dankrad 觉得 Validium 不安全是什么原因,其实非常明确了:由于 Validium 不像 Rollup 一样把 DA 的数据发到链上,所以用户可能没办法架构出「强制提款」所需的 Merkle Proof。


Validium 和 Plasma 在发生数据扣留攻击时有什么区别
事实上,Validium 的定序器只在 L1 链上发布 L2 最新的 Stateroot(状况树的根),再提交一个 Validity Proof(ZK Proof),证明新的 Stateroot 生成过程涉及的状况转换(用户资金变化),都是正确的。


但单凭 stateroot 没办法还原出此刻的状况树 world state trie,也就没办法知道每一个 L2 账户的具体状况(包括资金余额),L2 用户就没办法架构对应目前合法 Stateroot 的 Merkle Proof。这便是 Validium 不利的地方。

(Merkle Proof 其实就是 root 生成过程中所需的数据,也就是图中暗色的部分。要架构对应 Stateroot 的 Merkle Proof,需要要了解状况树的架构,需要有 DA 数据)
这里需要要强调下 DAC 这个东西。Validium 的 DA 所涉数据,譬如定序器最新处置的一批买卖,会同步给名为数据可用性委员会 DAC(Data Availability Committee)的 L2 专用 DA 互联网,DAC 由多台节点服务器构成,一般由 L2 官方和社区成员或其他单位负责运行和监督(但这只不过表面上的,事实上 DAC 成员都有哪个,外面非常难查证)。

有意思的地方在于,Validium 的 DAC 成员需要频繁在 L1 提交多签,证明 L2 定序器在 L1 提交的新 Stateroot 和 Validity Proof,与 DAC 同步到的 DA 数据能对上号。DAC 的多签提交后,新的 Stateroot 和 Validity Proof 才会被觉得是合法的。

现在 Immutable X 的 DAC 使用 5/7 多签,dYdX 虽然是 ZKRollup,但也有 DAC,用的是 1/2 多签。(dYdX 只在 L1 发布 State diff 即状况变化,而非完整买卖数据。但获得了历史记录里的 State diff,就能还原全部 L2 地址的资产余额,此时就能架构 Merkle Proof 来全额提款)。

Dankrad 的看法不无道理。Validium 的 DAC 成员假如合谋,发起数据扣留攻击,不让其他 L2 节点同步此刻的最新数据,并且更新此刻 L2 的合法 Stateroot,用户没办法架构此刻合法 root 对应的 Merkle Proof 来提款(由于此刻往后的 DA 数据不可用了,可用的是以前的 DA 数据)。

但 Dankrad 考虑的只不过理论上的极端状况,日常大部分 Validium 定序器都会实时的把新处置的买卖数据广播给其他 L2 节点,其中不乏诚实节点。只须有 1 个诚实节点可以准时获得 DA 数据,用户就能从 L2 全身而退。
可理论上存在于 Validium 身上的问题,为什么没有于 Plasma 身上?这是由于 Plasma 断定合法 Stateroot 的方法,和 Validium 不同,有欺诈证明窗口期的原故。Plasma 是 OPRollup 之前的 L2 扩容策略,与 OPR 一样靠欺诈证明保证 L2 的安全。
Plasma 与 OPR 一样有窗口期的设定,定序器发布的新 stateroot 不会立刻断定为合法,要等窗口期 close 且没 L2 节点发布欺诈证明。所以 Plasma 和 OPR 的目前合法 Stateroot,都是几天以首要条件交的(这就好比大家看到的星光,其实都是很长时间以前发出的),而用户总是可以获得过去时刻的 DA 数据。

同时,欺诈证明机制能在此刻生效的首要条件,是此刻 L2 的 DA 可用,也即 Plasma 的 Verifier 节点可以获得此刻的 DA 所涉数据,如此才能生成此刻的欺诈证明 ( 假如有必要的话)。
那样所有都非常简单了:Plasma 正常工作的首要条件是此刻 L2 的 DA 数据可用。假如从此刻开始,L2 的 DA 不可用了,用户能安全撤资吗?
这个问题不难剖析,假设 Plasma 的窗口期是 7 天,假如从某个时间点 T0 开始,新的 DA 数据就不可用(DAC 发动数据扣留攻击,不让诚实的 L2 节点获得 T0 往后的数据)。由于 T0 及此后一段时间内的合法 Stateroot,是 T0 时刻首要条件交的,而 T0 时刻前的历史数据可追溯,所以用户可以架构 Merkle Proof 来强制提款。

即使不少人没办法立刻知道异常,但由于有窗口期存在(OP 是 7 天),只须 T0 时刻提交的 Stateroot 还未合法化,且 T0 之前的 DA 数据可追溯,用户就能把钱安全撤出 L2。
总结
至此大家大致可以理了解 Validium 和 Plasma 在安全性上有什么区别:
Validium 的定序器发布 Stateroot 后,只须立刻发布 Validity Proof 和 DAC 多签,就能使其合法,成为最新的合法 Stateroot;假如用户和诚实 L2 节点遭遇数据扣留攻击,没办法架构目前合法 Stateroot 对应的 Merkle Proof,就没办法提款到 L1。
而 Plasma 提交新的 Stateroot 后,要等窗口期结束才能合法,此时的合法 Stateroot 是过去提交的。由于有窗口期(ARB 是 3 天,OP 是 7 天)存在,即使新提交的 Stateroot 的 DA 数据不可用,用户也有目前合法 Stateroot 的 DA 数据(合法 root 是过去提交的),有足够的时间强制提款到 L1。
所以,Dankrad 说的话有道理。当发生数据扣留攻击时,Validium 存在把用户资产困在 L2 的可能,但 Plasma 并没有这个问题。
(下图中 Dankrad 说的有一点不对,Plasma 应该不允许架构过时的合法 Stateroot 对应的默克尔证明来提款,由于这会致使双重支付)

所以,链下 DA 层的数据扣留攻击会导致很多安全隐患,但 Celestia 尝试解决的正是这个问题。除此之外,由于大部分 Layer2 项目都会提供让 L2 节点与定序器维持链下同步的服务端口,所以 Dankrad 的忧虑其实总是只不过理论上的,而不是日常的。
假如大家用鸡蛋里挑骨头的态度,再提出更极端的假设:所有些 Plasma 链下节点都不可用了,那样那些没跑过 L2 节点的普通用户都没办法强制提款到 L1。但这种事情发生的概率,等价于一条公链的所有节点集体永久性宕机的概率,可能从来不会发生。
所以,有时候,大伙只不过在谈论一些根本就不会发生的事情。正如美剧《切尔诺贝利》里克格勃副主席对主角说的那段金句:「为什么要担忧根本就不会发生的事情呢?」
原文链接
上一篇:数字货币市场诚信:不真实买卖怎么样破坏信赖,与监管为什么是买入信号
下一篇:没有了









