📗
Conflux 数字藏品开发入门指南
  • Conflux 树图区块链 “数字证书/藏品” 合约标准和编写规范
  • Step 1: 认识 ConfluxScan
    • Overview
    • 验证合约
    • 与合约交互
    • 查看 NFT 及其合约
  • Step 2: 与 Conflux 交互
    • Fluent
    • AnyWeb
  • Step 3: 编写NFT合约
    • 生态开发实用教程介绍
    • CRC721 合约代码部署示例
    • Conflux NFT 合约编写规范
    • 内置合约介绍
  • Step 4: 在链上部署你的合约
    • 使用 Conflux-Truffle 部署合约
    • ChainIDE 的介绍和使用
    • Conflux Studio 的介绍和使用
    • 使用 Hardhat 部署合约
  • Step 5: NFT 与去中心化存储
    • Overview
    • IPFS
  • 合约枚举函数说明
    • 枚举扩展(Enumeration extension)
    • NFT 1.O 枚举函数
    • NFT 2.O 枚举函数
  • 开发常见问题
    • Overview
    • 可能的报错
Powered by GitBook
On this page
  • 1. 针对中国大陆用户的产品,必须部署在 Conflux Cspace (Core Spcae)
  • 2. 建议把 admin 在 constructor 里就设置为 0,防止admin 销毁合约
  • 3. 遵循 OpenZeppelin 标准
  • 4. 非同质化
  • 5. 使用枚举函数
  • 6. 设置代付合约
  • 7. 合约验证
  • 8. NFT 存储(建议)
  • 相关参考
  • 附一: 非同质化代币(NFT)
  • 附二: 案例
  • More Details

Conflux 树图区块链 “数字证书/藏品” 合约标准和编写规范

如果您想在 Conflux 树图链上发行数字藏品,请务必遵循以下规范

NextOverview

Last updated 2 years ago

Conflux 树图链欣欣向荣起来,尤其是“数字藏品”等相关应用,如雨后春笋般涌现。但是随之而来的是良莠不齐的合约质量和标准兼容度。

"数字藏品"是在区块链上发行的具有一定文化背景、艺术价值或者收藏价值的“藏品”,需要和普通的非同质化代币 (NFT)相区分,相关接口需要更加规范和标准。

为了整个 Conflux 树图链上“数字藏品”应用的繁荣和可持续发展,为了应用之间方便集成,为了保证合约质量和安全,我们编写了《“数字藏品" 合约标准和编写规范》,请所有“数字藏品”开发者务必仔细阅读本文,并遵循以下标准和规范。如果合约不满足以下标准和编写规范,则不能称为是Conflux树图链上的 “数字藏品”。

1. 针对中国大陆用户的产品,必须部署在 Conflux Cspace (Core Spcae)

2. 建议把 admin 在 constructor 里就设置为 0,防止admin 销毁合约

3. 遵循 OpenZeppelin 标准

提供了一个经过社区审查的智能合约库,其中包括了 和 的实现。在部署到 Conflux 链上之前,请确保你的合约至少包含了上述任一实现的全部内容。对于其他非 OpenZeppelin 的 ERC 721 和 ERC 1155 合约标准的实现,需要保证对外暴露的接口名称与 OpenZeppelin 的实现一致。

* name 和 symbol 属性在合约中是必须的,否则无法在 ConfluxScan 和第三方应用上完整展示 NFT 信息

4. 非同质化

任何时候都要保证您的合约所发行的 “数字藏品” 是非同质化的: 每一个 tokenId 都只对应一个 “数字藏品”,不能存在一个 tokenId 下有多个副本的情况。

优先考虑使用 ERC 721 标准,足够满足大多数情况的使用。

如果希望使用 ERC 1155 标准,也请务必保证一个 tokenId 对应1个 “数字藏品”,以免造成用户对于“数字藏品“ 价值的疑虑。

5. 使用枚举函数

枚举接口的作用强调"去中心化"显示数据。使用枚举函数能方便第三方应用(ConfluxScan 和钱包等)查询您部署的合约保存的 NFT 信息,否则无法保证您的 NFT 能够被 ConfluxScan 和钱包正确显示。所有的 CRC-721 合约都必须包含以下合约中的全部枚举函数:

所有的 CRC-1155 合约都必须包含以下合约中的全部枚举函数:

6. 设置代付合约

Conflux 的代付机制通过一种赞助机制来补贴用户对智能合约的使用,通过引入内置的代付合约,与受到赞助的合约交互将不需要花费 CFX 来支付燃气费,让余额为零的新帐户也能够调用智能合约。

项目方如果希望获得代付设置方面的帮助,请联系刺客: cike@confluxnetwork.org

代付机制详情请见:

7. 合约验证

将合约部署到主网后,请务必在 ConfluxScan 上进行验证。

合约验证之后会有如下几个好处:

  1. 合约验证之后可在 Scan 上看到 Solidity 源码及 ABI,更加透明,人人可审查合约逻辑。

  2. 验证之后的合约可直接在 Scan 合约详情页,调用合约方法读取合约状态,或通过链接 Fluent 更新合约状态。

  3. 合约验证之后,Scan 会显示绿色✅标识,用户更放心。

如何验证合约请参考:

8. NFT 存储(建议)

相关参考

附一: 非同质化代币(NFT)

NFT 目前在数字艺术品和收藏品世界中掀起风潮。 得益于新加密货币受众带来巨额销售,数字艺术家的生活正在发生变化。 一些名人也纷纷加入,因为他们发现了与粉丝们联系的新契机。 但数字艺术品只是使用 NFT 的一种方式。 实际上,它们可以代表任何独特资产的所有权,如数字世界或物理王国里持有某项物品的凭据。

什么是NFT?

NFT,全称为Non-Fungible Token,指非同质化代币,是用于表示数字资产(包括jpg和视频剪辑形式)的唯一加密货币令牌。

NFT 是我们用以代表独特物品所有权的代币。 NFT 让我们把诸如艺术品、收藏品、甚至房地产等物品代币化。 他们一次只有一个正式主人,并且受到区块链的保护 - 没有人可以修改所有权记录或者根据现有的 NFT 复制粘贴一份新的。

NFT 代表非同质化代币。 非同质化是一个经济术语,您可以用它来描述家具、歌曲文件或您的电脑等物品。 这些东西不能与其他物品互换,因为它们具有独特属性。

现实世界中,不存在表现出完全相似特征或价值的两种商品,所以被称为非同质化货物,即指唯一的、无法替代的商品。同样,在某些区块链上(主要是以太坊,但也包括Conflux、Matic、Flow 等其他区块链)持有的具有个体唯一性的数字资产,则被称为非同质化代币。现实世界中,真实资产拥有所有权证书,同样,在区块链世界中,NFT 代币可以保持所有权记录和真实性证明(换种方式理解,就是一个有了独一无二签名认证的数字物品,虚拟数字世界的房产证)。

最常见的 NFT 是基于以太坊的 ERC 721协议。除此之外,还有其他协议标准,如 Enjin 开发的 ERC 1155。

另一方面,同质化代币 (FT)可以互换,这取决于它们的价值而非独特属性。 例如,ETH 或美元具有同质化属性,因为 1 ETH/1 USD 可以兑换成另外的 1 ETH/1 USD。

附二: 案例

解放日报

⻁年新春即将到来之际,解放⽇报与上海 Conflux 树图区块链研究院合作,从过往6个⻁年(1950年⾄2010年)的新年报纸版⾯中,精⼼挑选出具 有时代感和浓浓年味⼉的版⾯,将这些版⾯铸成“数字藏品”进⾏发放。

More Details

更多关于 NFT 的信息请见:

ERC721Enumerable:

CRC721Enumerable:

CRC1155Enumerable:

更多枚举相关内容请参考:

因此,请务必在您的合约中引入代付合约,并设置燃气费代付,保证任何用户与你的合约交互都能被代付机制赞助而无需花费 CFX,在当下环境,这对于你的 NFT 应用的合规性很重要。范例工程合约 NFT 1.0 和 2.0 默认配置了代付,部署后在 申请即可。

Conflux 中的代付机制详解:

为合约设置 Sponsor:

与合约交互:

ConfluxScan 验证合约:

为了保证去中心化,推荐使用 存储 Metadata 和 image/video 等资源文件。如果在中心化服务器上存储,建议将资源文件特征码(例如md5等)保存在合约中,使得资源文件可验证。具体实现可以参考工程范例 NFT 2.0,比如 ,合约保存了一个名为 tokenFeatureCode 的映射(mapping),保存每个 tokenId 所对应的资源文件特征码。

Conflux 开发资料包:

Conflux 官方维护,开发 Conflux DAPP 可以参考的合约库:

Conflux 树图区块链生态开发使用教程:

项目方如果希望获得代付设置方面的帮助,请联系刺客:

Conflux Wiki:

以太坊:

从0到1: 精通 NFT:

OpenZeppelin
ERC 721
ERC 1155
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/ERC721Enumerable.sol
https://github.com/conflux-fans/conflux-contracts/blob/main/contracts/token/CRC721/extensions/CRC721Enumerable.sol
https://github.com/conflux-fans/conflux-contracts/blob/main/contracts/token/CRC1155/extensions/CRC1155Enumerable.sol
https://conflux-technical-support.gitbook.io/conflux-nft-kai-fa-zhi-nan/he-yue-mei-ju-han-shu-shuo-ming/mei-ju-kuo-zhan-enumeration-extension
https://confluxscan.net/sponsor
https://forum.conflux.fun/t/conflux/11949
https://forum.conflux.fun/t/sponsor/13014
https://conflux-technical-support.gitbook.io/conflux-nft-kai-fa-zhi-nan/step-1-ren-shi-confluxscan/yu-he-yue-jiao-hu#ru-he-yan-zheng-he-yue
https://wiki.conflux123.xyz/books/tutorials/page/confluxscan
IPFS
CRC721NatureAutoId
https://forum.conflux.fun/t/conflux/11990
https://github.com/conflux-fans/conflux-contracts
https://forum.conflux.fun/t/conflux-2022-5-18-721-20-721-1155-nft/8781
cike@confluxnetwork.org
https://conflux-wiki.github.io/conflux-wiki/nft/introduction/
https://ethereum.org/zh/nft/
https://www.yuque.com/books/share/a8a2de86-76de-4531-8486-ac3d40944557
Page cover image