加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads

層級化NFT標準誕生:EIP-6150_NFT:Parm Finance

Author:

Time:1900/1/1 0:00:00

前言

因為一些機緣,我最近和幾個同行朋友一起提交了一個新的EIP協議標準,EIP-6150,這是一個支持層級結構的NFT協議標準,撰寫此文時處在Review狀態,改為LastCall狀態的PR還在等待通過。

該協議標準有4位作者:KeeganLee、msfew、Kartin和qizhou。KeeganLee就是我,主要負責了接口的定義和實現代碼的編寫。Kartin是這個EIP的發起人,也是HyperOracle的創始人。msfew則是HyperOracle的研究員,主要幫忙做一些輔助性的工作,包括完善文檔、提交PR、跟進討論區的QA等。qizhou是EthStorage的創始人,之前就提交過其他EIP,熟悉申請EIP的流程,也對以太坊基金會的人比較熟悉,為這個協議提供了很多指導。以下是該EIP-6150的github地址:

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-6150.mdHierarchicalNFTs

目前的NFT幾乎都是扁平化的,不同NFT之間不存在關聯關系。而層級化的NFT,則可以將所有NFT串聯起來組成樹狀結構,就像文件系統一樣。

PayPal前總裁旗下創業公司公布其基于比特幣網絡的產品套件:4月12日消息,前PayPal總裁David Marcus的新創業公司Lightspark今日凌晨公布了其產品套件,它建立在比特幣網絡之上,特別是一種稱為閃電網絡的第2層協議。Lightspark將該平臺稱為“閃電網絡的第一個企業級入口點”。Marcus認為,由于比特幣的相對規模和更安全的監管基礎,構建必要的工具可使閃電網絡更易于使用,這是一條比依賴替代區塊鏈更好的途徑。

據一位不愿透露姓名的知情人士透露,Lightspark去年以近10億美元的估值完成約1.73億美元融資。此前去年5月消息,Lightspark完成由a16z和Paradigm領投的融資,但當時未披露具體金額。(The Block)[2023/4/12 13:58:21]

如上圖所示,可以想象成每個文件夾都是一個單獨的NFT,不同文件夾之間的層級關系也就是NFT之間的層級關系。

層級化的NFT可用于多種不同的應用場景,比如:

組織架構社交關系圖譜電商商品類目結構層級評論系統可以說,任何具有層級結構的場景都可以適用這個EIP-6150協議標準。層級結構的NFT在去中心化社交、去中心化電商等領域都將可能產生廣泛應用。

接口定義

EIP-6147已移至最終版本,該標準可分離NFT和SBT持有權和轉讓權:3月7日消息,由10K Universe提出的以太坊改進提議EIP-6147已移至最終版本(Final),該標準是ERC-721的擴展,分離了NFT和靈魂綁定代幣(SBT)的持有權和轉讓權,并定義了一個新的角色,即guard(可設置到期時間)。guard設置的靈活性使得NFT防盜、NFT借貸、NFT租賃、SBT等設計成為可能。以太坊EIP在到達Final狀態前需要經歷構思、草案、審查、LastCall階段。任何處于草案或審查中的EIP如果在6個月或更長時間處于非活動狀態,會被移至停滯狀態。[2023/3/7 12:47:34]

EIP-6150總共定義了5個接口文件:

IERC6150IERC6150EnumerableIERC6150BurnableIERC6150ParentTransferableIERC6150AccessControlIERC6150

IERC6150?是規定必須實現的接口,最小化定義了一個事件和四個函數,且要求繼承IERC165和IERC721接口,接口定義如下:

過去10天灰度FIL信托溢價增長一倍,目前暫報166.51%:1月22日消息,數據顯示,目前灰度基金總持倉197.12億美元,主流幣種信托折價率如下:GBTC(-40.06%)、ETHE(-46.79%)、ETC(-64.11% )、LTC(-56.05% )、BCH(-45.05% )、ZEC(-42.79% )、XLM(-19.11% )、ZEN(-29.55% )、LPT(-41.02% )、BAT(-57.98% );三個正溢價的產品分別是LINK(3.53% )、MANA(17.69% )以及FIL(166.51% ),特別是FIL在過去10天溢價增長一倍。[2023/1/22 11:25:37]

Minted?事件需在鑄造一個新的NFT時發出,記錄了新NFT的鑄造者、接收者、父節點NFT的ID、新NFTID。當鑄造一個根節點NFT時,那parentId則記為0,即0表示一個無效的空節點,因此,有效的節點NFT的tokenId就不可以為0。

parentOf?函數用于查詢指定tokenId的NFT的父節點NFT。

childrenOf?函數則查詢出指定tokenId的NFT的所有子節點NFTs。

isRoot?和?isLeaf?函數則分別可查詢指定tokenId在整個NFT層級樹中是不是根節點或葉子節點。

Coinbase跌超5%:9月23日消息,加密貨幣交易所Coinbase(COIN.O)跌超5%,股價報59.67美元,此前遭摩根大通將其目標價下調至60美元。(金十)[2022/9/23 7:17:12]

IERC6150Enumerable

IERC6150Enumerable?是可選的擴展接口,主要補充了幾個跟層級相關的Enumerable的查詢接口,接口定義如下:

繼承?IERC721Enumerable?也是可選的,但為了更好地兼容ERC721,最好可以繼承。childrenCountOf?函數用于查詢指定節點下有多少個子節點,如果參數parentId為0,則表示查詢根節點的數量。childOfParentByIndex?函數則是從指定的父節點下的所有子節點數組中找出指定索引位置的子節點的tokenId,比如指定父節點parentId=110,其下有10個子節點,找出索引位置為5的子節點tokenId=1105,則查詢結果返回1105。indexInChildrenEnumeration?函數則是查詢指定的tokenId在指定父節點下的子節點數組中所在的索引位置,比如指定tokenId=1105,父節點parentId=110,1105在子節點數組中的索引位置為5,則查詢結果返回5。如果指定tokenId并不在指定父節點parentId下面,則需要拋出錯誤。

紐約總檢察長辦公室發布關于加密投資風險的指導意見:6月3日消息,紐約總檢察長 Letitia James 辦公室發布關于加密投資風險的指導意見,稱加密貨幣市場對投資者來說包含無數風險,包括瘋狂的價格波動、黑客或欺詐的潛在損失,市場也缺乏重要的監督,因為沒有聯邦監管的交易所。[2022/6/3 4:00:11]

IERC6150Burnable

IERC6150Burnable?也是可選的擴展接口,定義了銷毀節點的操作,接口定義如下:

只定義了兩個函數,safeBurn?用于安全銷毀單個節點,但要求只有指定節點為葉子節點時才允許銷毀。就和Linux的文件系統一樣,如果某目錄下存在其他文件或文件夾,是不允許直接刪除的。若強制刪除,則目錄下的所有文件和文件夾都會被級聯式全部刪除。當前協議沒有定義級聯式刪除的函數,若有這個需求,可以自己再額外去添加函數實現。safeBatchBrun?函數則是用于批量銷毀多個葉子節點。

IERC6150ParentTransferable

IERC6150ParentTransferable?也是一個可選的擴展接口,支持層級關系的轉移,就和文件夾可以從一個目錄移動到另一個目錄一樣,接口定義如下:

接口定義了兩個函數和一個事件,支持單節點的轉移,也支持多節點的批量轉移。每個節點發生層級關系轉移時,需要拋出?ParentTransferred?事件,記錄下所轉移的tokenId、舊的父節點ID和新的父節點ID。transferParent?將指定的tokenId轉移到指定的父節點下,若指定的父節點為0,則表示指定節點改為了根節點。batchTransferParent?則可以指定多個tokenId,批量將這些節點都轉移到指定的父節點下。

IERC6150AccessControl

最后一個接口?IERC6150AccessControl?也是可選的,提供了幾個權限控制的函數,接口定義如下:

總共定義了三個函數,isAdminOf?用于查詢指定的account對指定的tokenId是否有管理員權限。在ERC721中,每個NFT都只有唯一的owner并擁有管理權限。但在層級式的結構中,一個NFT是可以有多個管理員的,就和文件系統中可以有多個管理員一樣。這個擴展接口就提供了支持多管理員的模式,但對于怎么設置多個管理員,則難以定義通用函數,所以就沒做標準化的定義。不過,需要保證,NFT的owner同時也是管理員。

canMintChildren?則用來判定某個account對指定的parentId是否具有鑄造子節點的權限。

canBurnTokenByAccount?則用來檢查某個account對指定的tokenId是否具有銷毀的權限。

參考實現

EIP的github上,我對每個接口都提供了對應的參考實現代碼,代碼地址如下:

https://github.com/ethereum/EIPs/tree/master/assets/eip-6150/contracts但這里我不打算對每個實現代碼都一一講解,我只講最核心的?ERC6150.sol?的實現。因為代碼相對有點長,就不貼代碼出來了,大家可以點擊鏈接進去看代碼。我主要講講實現的一些邏輯和思路。

存儲上,用了三個mapping:_parentOf、_childrenOf、_indexInChildrenArray,分別用來存儲指定節點的:父節點、子節點數組、所在子節點數組里的索引位置。有了這三個mapping之后,幾個查詢函數的實現就非常簡單了,我就不細說了。核心是?_safeMintWithParent?和?_safeBurn?函數,分別是鑄造NFT和銷毀NFT的內部函數。

鑄造函數的代碼如下:

實現邏輯其實也很簡單,有兩個校驗需要注意下,一是要鑄造的新NFT的tokenId需要大于0,正如前面所說的,0為無效節點;二是當parentId不為0時,需保證parentId是存在的,當parentId為0時,則表示鑄造的是根節點NFT。?_beforeMintWithParent?和?_afterMintWithParent?是為了增加擴展性而增加的,可由繼承此合約的上層合約根據需求再去實現。中間代碼就是對幾個mapping進行賦值了,然后調用了ERC721的?_safeMint?函數實現底層的鑄造,接著就發送Minted事件了。

這個鑄造函數是internalvirtual的,上層合約可以重載該函數,且上層的實現合約需要再根據具體需求自己添加開放的鑄造函數。

接著看看銷毀函數,代碼如下:

銷毀時,要求tokenId是存在的且需是葉子節點才允許銷毀。另外,銷毀時,需要從子節點數組中移除,而為了節省gas,同時把子節點數組中的最后一個元素移到了銷毀的索引位置。

另外,實現代碼中,也封裝了批量鑄造的內部函數,方便擴展支持批量鑄造多個子節點的需求。

其實,整個協議并不復雜,但已經足以覆蓋到很多應用場景,后續我會結合一些具體的應用場景,再增加示例代碼作為案例,以促進該協議的落地應用。

Tags:NFTRENPARAREnft幣發行量萬億有升值空間ren幣有什么價值Parm FinanceARE價格

歐易交易所app下載
Web3趨勢報告2023:市場在調整,但創新不止_WEB:FTXT幣

A&T?Capital發布了《Web3趨勢報告2023》,對今年的創新賽道和應用做出以下6點預測:???關鍵詞:新范式、ZKLayer2、并行計算、模塊化設計、應用鏈、賬戶抽象錢包和外部.

1900/1/1 0:00:00
萬字剖析以太坊背后的權力機器:MEV 與 PBS_MEV:OST

2007年,加拿大皇家銀行的交易員勝山發現了一件令他感到困惑的事情,當他在交易終端按下買入鍵的一瞬間,所有的訂單消失了。而在區塊鏈的世界里也發生了一件相似的事情.

1900/1/1 0:00:00
Doodles:再見以太坊,你好Flow_DOO:FLO

1月25日,頭部?NFT?收藏品?Doodles向社區發布了一份公開信,信中預告了其全新系列Doodles2接下來的一些關鍵動態.

1900/1/1 0:00:00
一月份加密行業值得關注的17件事_AVE:FXS

隨著BTC短時升,加密行業從壓抑的熊市中些許看到了一絲曙光。那么,在2023年的第一個月里,加密行業會有哪些值得關注的事件呢?下面就讓我們一起來盤點梳理一下.

1900/1/1 0:00:00
干貨:賬戶抽象已經發展到哪里了?_BSC:MENT價格

AccountAbstraction,簡稱AA,現在是加密領域最熱門的話題之一。人們對AA的希望已經從簡單地提高區塊鏈的可用性,轉變到解鎖一個全新的功能世界,并希望它最終能夠帶來大規模采用.

1900/1/1 0:00:00
MarsBit投融資周報 | 千萬美元級融資僅3筆,游戲內容創作者平臺Nexus獲1000萬美元融資_WEB:web3游戲公司

據MarsBit統計,1月28日至2月3日期間,加密市場共發生17筆投融資事件,其中基礎設施領域3筆、DeFi領域2筆、鏈游和NFT領域5筆、Web3領域5筆.

1900/1/1 0:00:00
ads