
在密码学货币行业,每当牛市开启,就会有铺天盖地的虚假消息。许多侧链项目会误导用户相信它们是名正言顺的 Layer 2 可扩展性解决方案。本文旨在向初学者说明什么样的区块链才是 Layer2。因此,为便于读者理解,完整性和严谨度不免有所牺牲。
通常来说,Layer 1 区块链具有更高的安全性和流动性,Layer 2 区块链则依赖 Layer 1 区块链为其提供安全性和流动性。
如果你是初学者,尤其是刚入行的小白,请先跟我看一个简单的例子。
假设你在以太坊区块链上有 100 Dai,你的 MetaMask 上也显示如此。但是,Metamask 是怎么知道的?因为它通过 Infura (以太坊节点即服务提供商)与以太坊点对点网络进行通信。但是,拥有 100 Dai 究竟意味着什么?它意味着,Dai 合约(运行在以太坊区块链上的、由代码和数据组成的软件)有你的地址(如你在 MetaMask 中所见的那样),地址旁边显示的数值是 100。
再回到如何辨别新的区块链是否是 Layer 2 这个问题上。假设有条新的区块链叫作 Macau。出于某种原因(想要买某个东西,以更低的 gas 价格交易或获得某种体验),你想将你自己的 100 Dai 从以太坊转移到 Macau 链上。
你会如何将这 100 Dai 转移到 Macau 上?发送一封邮件给 Vitalik 的 Masternode,让他帮你转移吗?当然不是,你其实是将你的 100 Dai 发送到以太坊区块链上的另一个合约,也就是通常所说的「存款」合约(好比赌场的存款窗口)(译者注:实际上是在 Dai 合约内将 100 Dai 从你的账户中转出、然后转入另一个账户;但正如作者所说,这是为了便于理解)。
第一步:将 100 Dai 发送到 Macau 在以太坊区块链上的存款合约。
Macau 链的验证者 / 矿工可以看到你的存款,因为他们一直在监控以太坊区块链,尤其是 Macau 的存款合约。这时,其中一位验证者 / 矿工告诉其他人:「嘿!大家快来看啊!有客户上门了!快干活!」接着又对你说:「欢迎你,很高兴你能加入我们。这是你的 100 个合成 Dai,是我刚刚挖出 / 验证的 Macau 区块里的,希望你玩得开心。」
第二步:你已经从 Macau 获得了 100 张借据(好比是赌场筹码)。凭这些借据,你可以取回你在以太坊上的存款合约中锁定的 Dai。我们称这些借据为合成 Dai (简称 sDai)。
所谓的「进入 Macau」,实际上是你所在的某个网站上的一些 Javascript 脚本在与 Macau 的点对点网络通信。这就好比,当你在 Aave 网站上借贷或 Uniswap 网站上交易时,你「进入了以太坊」:这些前端上的 Javascript 脚本为你创建了借贷 / 兑换交易,然后通知你的 MetaMask。看到 Gas 费之后,你嘤嘤嘤了 5 分钟,才点击「确认」来签署并广播你的交易。你很熟悉这个流程。
Macau 也是一样。如果 Macau 是以太坊的分叉(就像币安的 BSC 或 Avalanche 的 C-Chain ),那么整个流程实际上也差不多,因为你只需要使用 MetaMask,不需要使用专属钱包来签署创建好的交易(因为以太坊 /BSC 等区块链均采用相同的地址格式和密码学签名机制)。
第三步:将 Macau 上的 100 sDai 用于交易、流动性挖矿、投资等。
假设你玩德州,将 100 sDai 的本金翻倍变成了 200 sDai (这多出的 100 sDai 是你从对手那里赢来的,他们也在以太坊上的 Macau 存款合约中锁仓了一笔 Dai)。
注意了,现在是最关键的部分:
这时,考虑到安全性和流动性(或者不在乎那千把块美元的 gas 费),你想取回本息并放到以太坊上。如果你随时随地都能从 Macau 存款合约(再强调一次,这个合约在以太坊区块链上)中取回 200 Dai,且没人能阻止你(只有当满足这两个条件时),Macau 就是 Layer 2 区块链��。
如果从理论上来说 Macau 的验证者可以阻止你取回 200 Dai,或直接偷走它们(自己取走),Macau 就不是 Layer 2 区块链,而是侧链�。
如果从理论上来说你可以取走更多资金(如 300 Dai),Macau 就不是 Layer 2 区块链。
当我们提及可扩展性方案时,最终总会回到「谁控制出口」这一问题上?
如何将以太坊上的存款合约变得更加智能,来防止你、其他 Macau 用户以及 Macau 的矿工 / 验证者 / 运营方作弊呢?
可以想象得到,这并非一件容易的事,因为这需要存款合约能够实时了解 Macau 上的资金流向:假设 1 小时前你在 Macau 上玩德扑赢了 100 sDai,你就可以提取 100 Dai 到以太坊上,但是你可能在下一局就把这笔钱输掉了!因此,合约要能了解所有这些情况,以及 Macau 的最新状态。
状态通道和 Plasma 等早期解决方案的做法是:将欺诈声明和争议解决逻辑编程到 Layer 1 上的存 / 取款合约中。但是,它们都给用户造成了沉重的负担,例如:
用户必须时刻在线监控以太坊上的 Layer 1 合约,以便挑战 / 制止 / 惩罚威胁其资产的恶意取款行为。
用户必须存储提出争议所必需的数据。在状态通道 [1] 方案中,这个数据通常是对手方的签名,用来证明通道中的状态变化(例如,「Alice:我保证向 Bob 支付 10 Dai」或「Charlie:我保证将车移动到棋盘上的 H5」)。
只针对 Plasma:用户容易受到两方面影响(a)需要存储的数据大量增加,因为用户所需数据是 Plasma 链全局状态的一部分,而不只是状态通道的对手方的数据 [2],(b)数据扣留攻击(data withholding attack),即,Plasma 运营者(区块生产者)试图进行恶意取款,同时扣留用户发起挑战所需的数据。这进一步提高了 Layer 1 上取款安全性逻辑的复杂性。
直到 Rollup 方案出现,才真正解决了这些棘手的问题。Rollup 要求用户退出时所需的一切数据都能在 Layer 1 上获得。每当 Layer 2 上的状态变化时,Rollup 运营者都会在 Layer-1 上披露导致本次状态变化的事务数据。因此,Layer 2 上的执行和 Layer 1 上的数据更新是同步的。如果你想要了解更多关于 Rollup 的信息,请阅读这些文章:入门、进阶、高阶(zk-rollup) 和 高阶(optimistic rollup)。
Rollup 方案通过数学方法(ZKRU)或密码学货币经济(ORU)保障来确保所有相关参与方都是诚实的。如果 rollup 运营者消失或开始捣乱【滥发信息、审查或(在 Optimistic Rollup 方案中)实施欺诈】,用户总是可以使用 Layer 1 上的数据来安全地取走资金。这些数据都存储在以太坊 Layer 1 上的 Rollup 合约中,因此用户唯一需要信任的就是 Layer 1 会诚实地执行这些合约(其它 Layer 1 合约也采用同样的信任假设,如 MakerDao MCD 和 Aave 等)。

