Vitalik: 跨rollup 封裝及遷移NFT

來源| ethresear.ch

作者| Vitalik Buterin

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

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

  • 所有目前支持EVM 的主要rollup 平台都有後門、中心化排序或其他輔助措施,將整個生態系統轉移到單個rollup 是有風險的,而rollup 將如何升級這些功能還存在不確定性;
  • NFT 生態系統最終可能成長到單個rollup 無法安全承載的體量;
  • NFT 生態系統的任何部分,甚至整個NFT 生態系統,都不是封閉的;他們將需要與以太坊生態系統的其他部分進行互操作

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

提議解決方案一

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 故障、因其他原因不可用或是應用需要永久遷移到其他域的情況來說很有幫助。

原文鏈接:https://ethresear.ch/t/cross-rollup-nft-wrapper-an...

ECN的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及ETH中文站。若需長期轉載,請聯繫eth@ecn.co進行授權。

Total
0
Shares
Related Posts