Vitalik: 跨 Rollup 封裝及遷移 NFT

買賣虛擬貨幣

來源 |ethresear.ch

作者 | Vitalik Buterin

NFT 生態在迅速增長,並且構成了以太坊鏈上 gas 消耗的重要部分。NFT 生態系統仍處於年輕態並相對缺乏根基,並且由於 NFT 領域很大一部分屬於非金融性質,因此更需要避免高額費用,這使 NFT 成為轉移到 Layer2 的主要目標,但如何轉移呢?

一個簡單的提議是透過社會性協調轉移到一個特定的 Rollup 平臺(例如 Arbitrum,因其目前已經支援通用智慧合約部署),但這樣做也有幾處劣勢:

所有目前支援 EVM 的主要 Rollup 平臺都有後門、中心化排序或其他輔助措施,將整個生態系統轉移到單個 Rollup 是有風險的,而 Rollup 將如何升級這些功能還存在不確定性;

NFT 生態系統最終可能成長到單個 Rollup 無法安全承載的體量;

NFT 生態系統的任何部分,甚至整個 NFT 生態系統,都不是封閉的;他們將需要與以太坊生態系統的其他部分進行互操作;

本文提出了一個使 NFT 友好跨 Rollup 並使其遷移到整個 Layer2 生態中的提案。

提議解決方案一

NFT 可以在單個 Rollup 中進行初始註冊,然後透過建立 wrapper NFT(封裝 NFT)在不同的 Rollups(或者是底層鏈) 中轉移。

NFT wrapping 過程如下:

在 Rollup A 上,將 NFT(設為 X)傳送到封裝管理器合約(wrapper manager contract),指定(i)目標 Rollup 和(ii)初始所有者。加密箱合約(lockbox contract)儲存一條記錄,為 X 分配一個新的序列號 R,並儲存目標 Rollup(設為 B)和目標 Rollup 的初始所有者(設為 01)。

在 Rollup B 上,任何人都可以使用 Rollup B 上的封裝管理器合約建立 wrapper NFT。建立一個 wrapper NFT 需要指定源 Rollup 和序列號。要建立 X 的一個「有效」 wrapper NFT,只能由指定的所有者和透過宣告(R, A)作為序列號和源 Rollup 完成。注意,有可能會建立一個指向無內容的無效 wrapper NFT,而 Rollup B 無法分辨有效和無效。封裝管理器合約儲存(序列號、源 Rollup、初始所有者)值組並防止使用同一個值組建立多個 wrapper NFT。

要從加密箱中提出 NFT,Rollup B 上 wrapped-X 的當前所有者必須將其傳送回封裝管理器,後者釋出收據說明「序列號為 R、源 Rollup A 和初始所有者 01 的 NFT 已經解除封裝,以及潛在的新所有者 02」。

加密箱合約可以在收到 Rollup B 上收據的證明之後將 NFT X 交由 02,並根據其儲存的資訊檢查序列號、源 Rollup 和初始所有者,並驗證 NFT 的轉移。

請注意,提取 NFT 存在時間延遲,因為 Optimistic Rollup 類解決方案的狀態根需要大約一週的延遲才能最終確定,以便驗證收據。到目前為止,更快地進行多跳的唯一方法是進行多層封裝。

使用者要驗證 wrapped X 是否合法,需要自己驗證 Rollup B 上的狀態和 Rollup A 上的收據。

拓展:增加跨 Rollup 轉賬

在 Rollup B 上,wrapped-X 的所有者可以將其傳送給封裝管理器,並附上一條指令釋出不同的收據「序列號為 R、源 Rollup A 和初始所有者為 01 的 NFT 剛剛轉移到 Rollup C,以及潛在的新所有者 02」。

在 Rollup C 上,任何人都可以透過指定原始源 Rollup(在目前示例中為 Rollup A)、序列號和初始所有者來製作 wrapped-X 物件,並且 Rollup C 上的此 wrapped-X 可以進行自由交易。但是一旦如此,提出 wrapped-X 需要釋出跨 Rollup 轉移產生的所有收據(當前例項中為 2 個)。

請注意,為了簡單起見,「提款」本身不再是跨 Rollup 的操作,而是透過跨 Rollup 完成的,在 Rollup A 上建立 wrapped-X(X 的同一個 Rollup),然後單獨進行一步 unwrapping(解除封裝) 操作。

實際上,當 NFT 從一個 Rollup 轉移到另一個 Rollup 時,轉移路徑上的鏈會產生一串收據,該收據鏈中的每一個收據都被映象到 Rollup A,並且在未來,當其他 Rollup 的狀態根最終確定時,這些收據將在某個時間點按序被處理(在短期內可以透過 Kate 承諾進行空間最佳化,長遠來看可以透過 ZK-SNARK 證明整條收據鏈)。

使用者要驗證 wrapped X 的真實性,需要驗證 反映跨 Rollup 轉移的所有 Rollup 上的整個收據鏈(或者至少是繼上一個收據之後已經映象到 Rollup A 的收據鏈)。

擴充套件2:在底層鏈上最佳化發行 gas

所有 NFT 都可以這種方式發行:由以太坊底層鏈上的加密箱「擁有」。為了最佳化 gas 的效率,加密箱合約將具備生成一套序列號並將其傳輸到 Rollup 的功能。實際上,所有 NFT 都是預先建立的,但尚未賦予「意義」給其中任何一個(可以想象成有 2*256 個尚未分化的「幹細胞」NFT),並且它們被批次轉移到 Rollup。

「發行」過程現在就變成了賦予意義的過程。這可以透過在收據中傳遞「含義雜湊」來完成,與所有者傳遞的形式相同:如果 NFT 沒有意義(是一個「幹細胞」),所有者可以為其賦予一個含義,使其成為一個具有「差異性」的 NFT。底層鏈只有在驗證收據鏈後才知道 NFT 的含義,直到賦予含義為止(實際上,收據驗證必須是 ZK-SNARK 的才具備可行性)。

這允許所有 NFT 都在底層鏈中「紮根」,而不是 Rollup。這對於處理 Rollup 故障,因其他原因不可用或是應用需要永久遷移到其他域的情況來說很有幫助。

- THEEND -

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;