NFT向Layer2過渡?V神提出在Layer2生態轉移NFT的跨Rollup NFT封裝和遷移思路

本文作者:Vitalik Buterin

“我們需要將 NFT 轉移到第 2 層(L2)生態系統以降低費用。 然而,這樣*正確*做到這一點需要良好的跨Rollup可移植性標準,從而生態系統可以避免被鎖定在一個特定的 L2 中。——Vitalik Buterin”

NFT 生態系統正在迅速發展,已經成為以太坊鏈gas消耗的重要組成部分。NFT生態系統的年輕化和相對缺乏根基,以及由於 NFT的很大一部分的非金融性質而更需要避免高額費用,這也使得NFT成為轉移到第 2 層(Layer2)網絡的主要目標。然而,這就提出了如何將NFT遷移到Layer2的問題。

一個簡單的提案是:在社區內協調將NFT遷移到單個Rollup平台(例如 Arbitrum,因為它目前可用於一般合約部署),但這存在一些重要的缺點:

  • 所有現有的支持 EVM 的主要 rollup 平台都有後門、集中排序或其他實驗性功能,將整個生態系統交給單個 rollup 是有風險的,而 rollup 將如何超越這些功能存在不確定性。
  • NFT 生態系統可能會變得太大,以至於單個Rollup無法安全處理
  • NFT 生態系統的任何部分,甚至整個 NFT 生態系統,都不是封閉的世界;他們將需要與以太坊生態系統的其他部分進行互操作

這篇文章提出了一種關於如何使 NFT 跨Rollup友好的提案,允許 NFT 移動到整個Layer2生態系統。

提議的解決方案 1

NFT 將首先在一個Rollup(或基礎鏈)中註冊。通過創建一個封裝NFT,NFT 可以在其他Rollup(或基礎鏈)之間跳轉。

封裝NFT的過程如下:

  1. 在Rollup A 上,將 NFT(我們稱之為 X)發送到封裝管理器合約,指定 (i) 目的地Rollup和 (ii) 初始所有者。密碼箱合約在存儲中保存一條記錄,為 X 分配一個新的序列號 R,並保存目標Rollup(我們稱之為 B)和目標Rollup的初始所有者(我們稱這個賬戶 O1)
  2. 在Rollup B 上,任何人都可以使用Rollup B 上的封裝管理器合約創建封裝 NFT。創建一個封裝 NFT 需要指定源Rollup和序列號。創建 X 的一個“有效”封裝 NFT 只能由指定的所有者並通過聲明 (R, A) 作為序列號和源Rollup來完成。請注意,可能會創建一個無指向內容的無效封裝 NFT;Rollup B 不知道什麼是有效和無效。封裝管理器合約存儲(序列號、源Rollup、初始所有者)元組(tuples)並防止使用同一個元組創建多個 NFT。
  3. 要從密碼箱中提取 NFT,Rollup B 上的封裝-X 的當前所有者必須將其發送回封裝管理器,後者會發出收據,說明“序列號為 R、源匯總 A 和初始所有者 O1 的 NFT剛剛接觸封裝,帶有想要的新所有者 O2”。
  4. 密碼箱合約可以在收到匯總 B 上的收據的證明時將 X 交給 O2,並根據自己存儲的信息檢查序列號、源Rollup和初始所有者,並驗證它是否通過。
NFT向Layer2過渡?V神提出在Layer2生態轉移NFT的跨Rollup NFT封裝和遷移思路

NFT向Layer2過渡?V神提出在Layer2生態轉移NFT的跨Rollup NFT封裝和遷移思路

請注意,提款會有一個時間延遲,因為Optimistic Rollup狀態根需要大約 1 周的時間延遲才能最終確定,以便驗證收據。到目前為止,更快地進行多跳的唯一方法是進行多層封裝。

為了讓用戶驗證封裝-X 是否合法,他們需要自己驗證Rollup B 上的狀態和Rollup A 上的收據。

擴展:添加跨Rollup傳輸

在匯總 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 上,那麼該封裝的合約可以直接兌換。

擴展2:基礎鏈上的gas優化發行

所有 NFT 都可以以這樣的方式發行,即它們由以太坊基礎鏈上的密碼箱合約“擁有”。為了使這種 gas 高效,密碼箱合約將獲得生成一整套序列號並將它們傳輸到Rollup的功能。實際上,所有 NFT 都是預先創建的,但尚未分配給其中任何一個“意義”(想想:有 2**256 個尚未分化的“幹細胞”NFT),並且它們被批量轉移到Rollup。

“發行”的過程現在變成了賦予意義的過程。這可以通過在收據中傳遞“含義哈希”來完成,就像傳遞所有者的方式一樣:如果 NFT 沒有意義(它是一個“幹細胞”),所有者可以為其分配一個含義,轉動它變成了一個“差異化”的 NFT。基礎鏈只有在驗證收據鏈后才知道 NFT 的含義,直到分配含義為止(實際上,收據驗證必須是 ZK-SNARK的才能使其可行)。

這允許所有 NFT 都在基礎鏈中“紮根”,而不是Rollup。這對於處理Rollup中斷或以其他方式變得不可行以及應用需要永久遷移到其他域的情況很有用。

本文鏈接:https://www.8btc.com/article/6682444

轉載請註明文章出處

(0)
上一篇 2021-09-08 09:07
下一篇 2021-09-08 10:07

相关推荐