Vitalik Buterin:将 NFT 向 Layer 2 迁移 怎么样让它们友好地跨 Rollup?

时间:2021-09-08 11:00       来源: www.zhongyunzhitong.com

大家需要将 NFT 转移到第 2 层(L2)生态系统以减少成本。 然而,如此正确做到这一点需要好的跨 Rollup 可移植性标准,从而生态系统可以防止被锁定在一个特定的 L2 中。——Vitalik Buterin

NFT 生态系统正在飞速进步,已经成为ETH链 gas 消耗的要紧组成部分。NFT 生态系统的年青化和相对缺少根基,与因为 NFT 的非常大一部分的非金融性质而更需要防止高额成本,这也使得 NFT 成为转移到第 2 层(Layer2)互联网的主要目的。然而,这就提出了怎么样将 NFT 迁移到 Layer2 的问题。

一个容易的提案是:在社区内协调将 NFT 迁移到单个 Rollup 平台(比如 Arbitrum,由于它现在可用于通常合约部署),但这存在一些要紧的缺点:

所有现有些支持 EVM 的主要 Rollup 平台都有后门、集中排序或其他实验性功能,将整个生态系统交给单个 Rollup 是有风险的,而 Rollup 将怎么样超越这部分功能存在不确定性。

NFT 生态系统可能会变得太大,以至于单个 Rollup 没办法安全处置

NFT 生态系统的任何部分,甚至整个 NFT 生态系统,都不是封闭的世界;他们将需要与ETH生态系统的其他部分进行互操作

这篇文章提出了一种关于怎么样使 NFT 跨 Rollup 友好的提案,允许 NFT 移动到整个 Layer2 生态系统。

NFT 将第一在一个 Rollup (或基础链)中注册。通过创建一个封装 NFT,NFT 可以在其他 Rollup (或基础链)之间跳转。

封装 NFT 的过程如下:

在 Rollup A 上,将 NFT (大家称之为 X)发送到封装管理器合约,指定 目的地 Rollup 和 初始所有者。密码箱合约在存储中保存一条记录,为 X 分配一个新的序列号 R,并保存目的 Rollup (大家称之为 B)和目的 Rollup 的初始所有者(大家称这个竞价推广账户 O1)

在 Rollup B 上,其他人都可以用 Rollup B 上的封装管理器合约创建封装 NFT。创建一个封装 NFT 需要指定源 Rollup 和序列号。创建 X 的一个「有效」封装 NFT 只能由指定的所有者并通过声明 作为序列号和源 Rollup 来完成。请注意,可能会创建一个无指向内容的无效封装 NFT;Rollup B 不知晓啥是有效和无效。封装管理器合约存储(序列号、源 Rollup、初始所有者)元组(tuples)并预防用同一个元组创建多个 NFT。

要从密码箱中提取 NFT,Rollup B 上的封装-X 的目前所有者需要将其发送回封装管理器,后者会发出收据,说明「序列号为 R、源大全 A 和初始所有者 O1 的 NFT 刚刚接触封装,带有想要的新所有者 O2」。

密码箱合约可以在收到大全 B 上的收据的证明时将 X 交给 O2,并依据自己存储的信息检查序列号、源 Rollup 和初始所有者,并验证它是不是通过。

请注意,提款会有一个时间延迟,由于 Optimistic Rollup 状况根需要大约 1 周的时间延迟才能最后确定,以便验证收据。到现在为止,更快地进行多跳的唯一办法是进行多层封装。

为了让用户验证封装-X 是不是合法,他们需要自己验证 Rollup B 上的状况和 Rollup A 上的收据。

在大全 B 上,wrapped-X 的所有者可以将其发送给包装管理器,并附上发出不同收据的指令:「序列号为 R、源 Rollup A 和初始所有者 O1 的 NFT 刚刚移至 Rollup C,与想要的新所有者 O2」。

在 Rollup C 上,其他人都可以通过指定原始源 Rollup (在此示例中为 Rollup A)、序列号和初始所有者来制作封装-X 对象,并且 Rollup C 上的此封装-X 可以自由买卖。但,为了可以撤回封装-X,需要将 Rollup B 的收据发送到 Rollup A。

实质发生的事情是,当 NFT 从一个 Rollup 移动到另一个 Rollup 时,转移链留下了一个收据链,该收据链中的每个收据都被镜像到 Rollup A 并在某个时间点按顺序处置。将来,当其他 Rollup 的状况最后确定时(这可以在短期内通过 Kate 承诺进行空间优化,从长远来看,可以通过 ZK-SNARK 证明整个收据链)。

为了让用户验证封装的 X 是合法的,他们需要验证反映跨 Rollup 转移的所有 Rollup 上的整个收据链(或者至少,自上一个收据以来已经镜像到 Rollup 的收据链一种)。

除此之外请注意,该协议可以简化:「提款」只不过一个跨 Rollup 转移 Rollup A,假如认识到 Rollup A 发布的特定序列号目前在 Rollup A 上,那样该封装的合约可以直接兑换。

所有 NFT 都可以以如此的方法发行,即它们由ETH基础链上的密码箱合约「拥有」。为了使这种 gas 高效,密码箱合约将获得生成一整套序列号并将它们传输到 Rollup 的功能。事实上,所有 NFT 都是预先创建的,但尚未分配给其中任何一个「意义」(想想:有 2**256 个尚未分化的「干细胞」NFT),并且它们被批量转移到 Rollup。

「发行」的过程目前变成了赋予意义的过程。这可以通过在收据中传递「含义哈希」来完成,就像传递所有者的方法一样:假如 NFT 没意义(它是一个「干细胞」),所有者可以为其分配一个含义,转动它变成了一个「差异化」的 NFT。基础链只有在验证收据链后才知晓 NFT 包含的意思,直到分配含义为止(事实上,收据验证需要是 ZK-SNARK 的才能使其可行)。

这允许所有 NFT 都在基础链中「扎根」,而不是 Rollup。这对于处置 Rollup 中断或以其他方法变得不可行与应用需要永久迁移到其他域的状况非常有用。

查询更多

« 上一篇:没有了
» 下一篇:没有了