Conflux NFT 开发者指南
Last updated
Last updated
近期,随着 Conflux 生态的逐步建立,大量优质生态应用在 Conflux 中部署,Conflux 公链欣欣向荣起来。尤其是 NFT 相关应用,如雨后春笋般涌现。但是随之而来的,是良莠不齐的合约质量和标准兼容度。
为了整个 Conflux 链上 NFT 应用的繁荣和可持续发展,为了应用之间方便集成,为了保证合约质量和安全,建议所有 Conflux NFT 开发者 仔细阅读 本文。
NFT 开发者 应该 完全仔细阅读并完全遵循 EIP-721 22 或 EIP-1155 11 标准。
建议 没有同质化代币和非同质化代币混合 使用场景的应用,采用并遵循 EIP-721 22标准。
标准合约接口和实现可以参考: EIP-721:https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC721 34 EIP-1155:https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155 17
通过 uri 或 tokenURI 方法获取的 NFT 元数据 URI 地址,建议使用 placeholder 格式,而非每个 tokenId 存储一个 URI。
线下 NFT JSON 元数据信息 应该 遵循各个标准的 Metadata 部分,建议 不论是 721 还是 1155,都遵循 1155 的 Metadata JSON Schema 31 规范,包含 name、image、description 等字段,并在多语言支持上采用 localization 10 字段和标准(而非使用非标准的结构和字段,比如 name_en 等)。
未来 ConfluxScan 或钱包应用,可能会对没有完全遵循 EIP-721 22 或 EIP-1155 11 标准的合约,放弃支持或只提供有限的支持。
Common useful contracts in Conflux DAPP developments - GitHub - conflux-fans/conflux-contracts: Common useful contracts in Conflux DAPP developments
上面的 repo 包含了 Conflux 上常用的合约工具,比如内置合约、721/1155 扩展等。开发者可以按需使用。
欢迎所有开发者提 issue 或 pr,共同丰富合约库内容。
考虑到会给用户带来额外的 Gas 成本, EIP-721 22 中把可枚举扩展作为可选项,EIP-1155 11 标准直接去掉了可枚举扩展。
Conflux 链上 Gas 成本较低,初期有代付机制,开发者如果有强烈的需求,对于 1155 合约,可以采用 Conflux 合约库中的 扩展实现 6。
枚举功能可以 发现合约已经发行的和某个用户所拥有的 NFT。如果在合约中实现,会带来额外的存储成本和 Gas 消耗,开发者需要仔细权衡利弊。如果在应用中需要上述功能,强烈建议 在线下实现。未来 ConfluxScan 可能会对完全遵循标准的合约提供相关服务,来替代枚举功能。
call safeTransferFrom, tokenId: 1, amount: 1, data: 0x
如果 1155 需要实现 Enumerable,建议基于 CRC1155 presets 4
支持 Enumerable 后,mint 操作会带来更多存储押金花费:
【更多资料,请查看Conflux开发资料包:Conflux开发资料包 6 】