MEXC Global分享:将 NFT 向 Layer 2 迁移 如何让它们友好地跨 Rollup?
作者:互联网
NFT 生态系统发展迅速,已经成为以太坊链的 gas 消耗的重要组成部分。 NFT 生态系统的复兴和基础相对欠缺,以及 NFT 很大一部分的非金融性质需要避免高额费用,也使得 NFT 成为转移到第 2 层网络的主要目标。 但是,这就提出了如何将 NFT 迁移到 Layer2 的问题。
一个简单的提议是协调 NFT 迁移到社区内的单个 Rollup 平台(例如 Arbitrum,因为它目前可用于通用合约部署),但这有一些重要的缺点:所有现有的支持 EVM 的主要 Rollup 平台都有后门、集中排序或其他实验性功能。 将整个生态系统交给单个 Rollup 是有风险的,而且 Rollup 将如何超越这些功能存在不确定性。
NFT 生态系统可能变得太大,以至于单个 Rollup 无法安全处理
NFT 生态系统的任何部分,甚至整个 NFT 生态系统,都不是一个封闭的世界; 他们将需要与以太坊生态系统的其他部分进行互操作
本文提出了一个关于如何使 NFT cross-Rollup 友好的提案,让 NFT 能够移动到整个 Layer 2 生态系统。
提议的解决方案 1
NFT 将首先在 Rollup(或基础链)中注册。 通过创建封装的 NFT,NFT 可以在其他汇总(或基本链)之间跳转。
打包 NFT 的过程如下:
在 Rollup A 上,将 NFT(我们称之为 X)发送到打包经理合约,指定 (i) 目的地 Rollup 和 (ii) ) 初始所有者。 密码箱合约在storage中保存一条记录,给X分配一个新的序列号R,并保存目标Rollup(我们称之为B)和目标Rollup的初始所有者(我们称之为账户O1)
在 Rollup B 上,任何人都可以使用 Rollup B 上的包管理器合约来创建包 NFT。 要创建打包的 NFT,您需要指定源汇总和序列号。 创建 X 的“有效”包 NFT 只能由指定的所有者并通过将 (R, A) 声明为序列号和源汇总来完成。 请注意,可能会创建一个没有指向内容的无效包装器 NFT; 汇总 B 不知道什么是有效和无效。 包管理器合约存储(序列号、源汇总、初始所有者)元组并防止使用相同的元组来创建多个 NFT。
要从密码箱中提取 NFT,Rollup B 上包-X 的当前所有者必须将其发送回包管理器,该管理器将发出一个收据,说明“序列号是 R,源摘要 A 和 原主 O1 的 NFT 刚刚接触到包裹,有想要的新主 O2”。
锁箱合约在收到摘要 B 上的收据证明时可以将 X 交给 O2,并根据自身存储的信息检查序列号、来源汇总和初始所有者,并验证是否通过。
请注意,提款会有时间延迟,因为Optimistic Rollup状态根需要大约1周的时间才能最终确定以验证收据。 到目前为止,做多跳更快的唯一方法是做多层封装。
用户为了验证package-X是否合法,需要自己验证Rollup B上的状态和Rollup A上的收据。
扩展:添加交叉Rollup传输
在汇总B上,wrapped-X的所有者可以将其发送给包装经理,并附上发出不同收据的指令:“序列号为R,来源Rollup A 并且原所有者 O1 的 NFT 刚刚移至汇总 C,以及所需的新所有者 O2”。
在Rollup C上,任何人都可以通过指定原始来源Rollup(本例中为Rollup A)、序列号和初始所有者来制作package-X对象,并且这个在Rollup C -X上的包可以交易 自由地。 但是,为了能够提取包裹-X,需要将Rollup B的收据发送给Rollup A。
实际发生的是,当NFT从一个Rollup移动到另一个Rollup时,传输链 留下一个收据链,收据链中的每一个收据都被镜像到Rollup A,并放置在某个时间点依次处理。 以后等其他Rollup的状态最终确定时(短期内可以通过Kate promise进行优化,长期来看可以通过ZK-SNARK来证明整个收据链)。
为了让用户验证封装的 X 是否合法,他们需要验证反映所有通过 Rollup 传输的所有 Rollup 的收据链(或者至少,从 最后收据))。
另外请注意,协议可以简化:“提现”只是一个Rollup转账Rollup A,如果你意识到Rollup A发出的具体序号现在在Rollup A上,那么 包装好的合同可以直接交换。
扩展 2:基础链上的 Gas 优化发行
所有 NFT 都可以以这样的方式发行,即它们由以太坊基础链上的密码箱合约“拥有”。 为了使这种gas高效,密码箱合约将能够生成一套完整的序列号并将它们传输到Rollup。 事实上,所有的 NFT 都是预先创建好的,只是还没有分配给其中任何一个(想想:有 2**256 个未分化的“干细胞”NFT),它们是批量转移到 Rollup 中的。
“释放”的过程现在变成了赋予意义的过程。 这可以通过在收据中传递一个“含义哈希”来完成,就像所有者一样:如果 NFT 没有意义(它是一个“干细胞”),所有者可以为其分配一个含义并将其转化为 Created a “差异化”NFT。 基础链只有在验证收据链后才知道NFT的含义,直到赋予意义为止(实际上,收据验证必须是ZK-SNARK才能使其可行)。
这允许所有 NFT 都“植根于”基础链而不是 Rollup。 这对于处理汇总中断或以其他方式变得不可行以及需要永久迁移到其他域的应用程序非常有用。
标签:Layer,汇总,Global,Rollup,收据,NFT,序列号,所有者 来源: https://blog.csdn.net/weixin_54594070/article/details/120186501