如何将 NFT 从 L2 提取到 L1?了解 Metis 跨层桥接 NFT 设计
要想将 NFT 应用引入 Layer 2,非常重要的前提是拥有横跨多层创建和桥接 NFT 的方法。
撰文:Pavel Sinelnikov,Metis 研究员
翻译:Perry Wang
以太坊区块链以及第 2 层(Layer 2)解决方案面临的一个问题是资产的隔离,尤其是 NFT。在 Layer 2 上创建 NFT 时,NFT 会被困在该层,因此导致了 NFT 孤岛问题,其中 Layer 2 上的 NFT 资产无法提取到 Layer 1 公链。要想将 NFT 应用引入 Layer 2,非常重要的前提是拥有横跨多层创建和桥接 NFT 的方法。
解决方案
在 Layer 2 上铸造 NFT,创建一种轻松跨层桥接 NFT 并减少 gas 需求的方法。用户可以决定何时将自己的 NFT 提取到 Layer 1。
概览图
发起 NFT 合约
1. NFT 所有者使用已部署的 L2_NFT_Collection 配置 L1_NFT_Collection,具体指定:
- L2_NFT_Collection 的地址
- L2_NFT_Collection 的链 ID
- NFT 的位置,通过 NFT ID 映射链 ID,所分配 NFT 的 Range,例如 #1-100、60-61 等
- Range 是代表 1000 个 NFT 的单位… rangeid 0 意味着 NFT #0 到 NFT #999。
数据结构
mapping(chainid => address) addresses;
mapping(rangeid => chainid) range_loc;
在 Layer 2 认领 NFT
2. 用户将认领 NFT,并指定 NFT ID。 Layer 2 上的 L2_NFT_Collection 合约将验证 ID 分配(例如,这一 Layer 2 拥有 NFT),并相应地在这一 Rollup 上铸造 NFT。 用户可以像往常一样在 Rollup 中自由转移 NFT。
提取 NFT
3. 用户向 L2_NFT_Collection 智能合约发送交易,向 Layer 1 的目标接收者发起提款。
4. NFT 被存入 L2_Deposit 合约,它会锁定 NFT 以供之后必要时进行检索。
5. 锁定的 NFT 会触发发送至 L1_NFT_Collection 的跨链信息,使指定接收者可以在 Layer 1 上铸造 / 提取 NFT。
- 将在 L1_NFT_Collection 中添加一条新记录,来更新这一特定 NFT 的链上所有权信息,数据结构为:mapping(id=>chainid) nft_loc;nft_loc 总是覆盖 range_loc。为了确定 NFT 的实际链上所有权,如果 nft_loc[id] 返回值为 0,逻辑应该首先检查 nft_loc 然后是 range_loc。
- 如果之前已经在 Layer 1 上创建了 NFT,即该 NFT 不是第一次提取到 Layer 1 层,则用户将获得具有更新元数据的 NFT,其 nft_loc 已更新。
6. 收件人将认领 NFT,并指定 NFT ID。
(重新) 在 Layer 2 存入 NFT
7. 用户向 L1_NFT_Collection 智能合约发送交易,启动向目标 Layer 2 Rollup 上目标接收者的转移。
8. NFT 被存入 L1_Deposit 合约,它会锁定 NFT 以供以后必要时进行检索。
9. 锁定的 NFT 会触发到 L2_NFT_Collection 的跨链信息,使用户可以通过 NFT ID 在 Layer 2 上铸造 / 认领现有的 NFT。
- 如果 NFT 已经创建并存入目标 Rollup,用户将收到具有更新元数据的 NFT。
- L1_NFT_Collection 将更新 nft_loc,以反映更新后的 NFT 链上所有权。
序列图
供给
Layer 1 => Layer 2
Layer 2 => Layer 1
利与弊
益处
- 允许任何用户在另一个 Layer 2 上认领 NFT。
- 用户可以在 Layer 2 提取 NFT,并在 Layer 1 创建等效的 NFT,而不会导致被复制。
- 用户可以随时选择将他们创建的 NFT 从 Layer 1 传输到 Layer 2,反之亦然。
- 允许一个 NFT 项目扩展到多个 Rollup 链。
- 发起设置简单且成本低廉。
缺点
- NFT 所有者必须在所支持的层上创建等效的 NFT 合约。
- NFT 只能从 Layer 2 移动到协调器链(在这种情况下是 Layer 1 层)及收回,不能直接从 Layer 2 移动到 Layer 2。
- 在 Rollup 之间移动 NFT 时成本更高,因为涉及两次 Layer 1 交易(取款和存款)
- 连接两个层的技术复杂性
发散想法
- 使用 Rollup 跟踪 NFT 的链上所有权以降低交易成本
- Rollup 可用于管理链上所有权,这样可以大大降低交易成本。在这种情况下,Layer 1 在某种程度上可以被与其他 Rollup 同等对待。
来源链接:ethresear.ch