Conflux NFT 開發者指南

近期,隨著 Conflux 生態的逐步建立,大量優質生態應用在 Conflux 中部署,Conflux 公鏈欣欣向榮起來。尤其是 NFT 相關應用,如雨後春筍般湧現。但是隨之而來的,是良莠不齊的合約質量和標準兼容度。

為了整個 Conflux 鏈上 NFT 應用的繁榮和可持續發展,為了應用之間方便集成,為了保證合約質量和安全,建議所有 Conflux NFT 開發者 仔細閱讀 本文。

遵循標準

NFT 開發者 應該 完全仔細閱讀並完全遵循 EIP-721 3 或 EIP-1155 5 標準。

建議 沒有同質化代幣和非同質化代幣混合 使用場景的應用,採用並遵循 EIP-721 3標準。

標準合約接口和實現可以參考:

通過 uri 或 tokenURI 方法獲取的 NFT 元數據 URI 地址,建議使用 placeholder 格式,而非每個 tokenId 存儲一個 URI。

線下 NFT JSON 元數據信息 應該 遵循各個標準的 Metadata 部分,建議 不論是 721 還是 1155,都遵循 1155 的 Metadata JSON Schema 6 規範,包含 name、image、description 等字段,並在多語言支持上採用 localization 1 字段和標準(而非使用非標準的結構和字段,比如 name_en 等)。

未來 ConfluxScan 或錢包應用,可能會對沒有完全遵循 EIP-721 3 或 EIP-1155 5 標準的合約,放棄支持或只提供有限的支持。

共建 Conflux 合約庫

上面的 repo 包含了 Conflux 上常用的合約工具,比如內置合約、721/1155 擴展等。開發者可以按需使用。

歡迎所有開發者提 issue 或 pr,共同豐富合約庫內容。

Enumerable


考慮到會給用戶帶來額外的 Gas 成本, EIP-721 3 中把可枚舉擴展作為可選項,EIP-1155 5 標准直接去掉了可枚舉擴展。

Conflux 鏈上 Gas 成本較低,初期有代付機制,開發者如果有強烈的需求,對於 1155 合約,可以採用 Conflux 合約庫中的 擴展實現 2。

枚舉功能可以 發現合約已經發行的和某個用戶所擁有的 NFT。如果在合約中實現,會帶來額外的存儲成本和 Gas 消耗,開發者需要仔細權衡利弊。如果在應用中需要上述功能,強烈建議 在線下實現。未來 ConfluxScan 可能會對完全遵循標準的合約提供相關服務,來替代枚舉功能。

Enumerable Gas Cost 比較


call safeTransferFrom, tokenId: 1, amount: 1, data: 0x
如果 1155 需要實現 Enumerable,建議基於 CRC1155 presets

EthereumConflux
不支持 IERC721EnumerableCode
txHash

Gas Used: 61,564
Code
txHash

Gas Used: 53,704
存儲押金:128
支持 IERC721EnumerableCode
txHash 1

Gas Used: 87,888
Code
txHash 1

Gas Used: 75,828
存儲押金:192
不支持 IERC1155EnumerableCode
txHash

Gas Used: 53,514
Code
txHash

Gas Used: 42,356
存儲押金:64
支持 IERC1155EnumerableCode
txHash

Gas Used: 123,547
Code
txHash

Gas Used: 76,689
存儲押金:256




支持 Enumerable 後,mint 操作會帶來更多存儲押金花費:

Conflux
不支持 IERC721EnumerableCode
txHash

mint Gas Used: 37,796
mint 存儲押金:128
支持 IERC721EnumerableCode
txHash

mint Gas Used: 64,296
mint 存儲押金:320
不支持 IERC1155EnumerableCode
txHash

mint Gas Used: 34,974
mint 存儲押金:64
支持 IERC1155EnumerableCode
txHash

mint Gas Used: 74,013
mint 存儲押金:512

本文不構成投資建議,虛擬貨幣波動大請謹慎小心

掌握虛擬貨幣、區塊鏈大小事

發表迴響