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

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

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

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

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

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

### 3. 遵循 OpenZeppelin 标准

[OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts) 提供了一个经过社区审查的智能合约库，其中包括了 [ERC 721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol) 和 [ERC 1155](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol) 的实现。在部署到 Conflux 链上之前，请确保你的合约<mark style="color:red;">**至少包含了**</mark>上述任一实现的全部内容。对于其他非 OpenZeppelin 的 ERC 721 和 ERC 1155 合约标准的实现，需要保证对外暴露的接口名称与 OpenZeppelin 的实现一致。

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

### 4. 非同质化

<mark style="color:red;">**任何时候**</mark>都要保证您的合约所发行的 “数字藏品” 是<mark style="color:red;">**非同质化的:**</mark> 每一个 tokenId 都只对应一个 “数字藏品”，不能存在一个 tokenId 下有多个副本的情况。

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

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

### 5. 使用枚举函数

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

* ERC721Enumerable: <https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/extensions/ERC721Enumerable.sol>
* CRC721Enumerable: <https://github.com/conflux-fans/conflux-contracts/blob/main/contracts/token/CRC721/extensions/CRC721Enumerable.sol>

所有的 CRC-1155 合约都<mark style="color:red;">**必须包含**</mark>以下合约中的全部枚举函数:

* CRC1155Enumerable: <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>

### 6. 设置代付合约

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

因此，请务必在您的合约中<mark style="color:red;">**引入代付合约**</mark>，并设置<mark style="color:red;">**燃气费代付**</mark>，保证任何用户与你的合约交互都能被代付机制赞助而无需花费 CFX，在当下环境，这对于你的 NFT 应用的合规性很重要。范例工程合约 NFT 1.0 和 2.0 默认配置了代付，部署后在 <https://confluxscan.net/sponsor> 申请即可。

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

代付机制详情请见:&#x20;

* Conflux 中的代付机制详解: <https://forum.conflux.fun/t/conflux/11949>
* 为合约设置 Sponsor: <https://forum.conflux.fun/t/sponsor/13014>

### **7. 合约验证**

将合约部署到主网后，请务必在 ConfluxScan 上进行验&#x8BC1;**。**

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

1. 合约验证之后可在 Scan 上看到 Solidity 源码及 ABI，更加透明，人人可审查合约逻辑。
2. 验证之后的合约可直接在 Scan 合约详情页，调用合约方法读取合约状态，或通过链接 Fluent 更新合约状态。
3. 合约验证之后，Scan 会显示绿色✅标识，用户更放心。

如何验证合约请参考:

* 与合约交互:  <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>
* ConfluxScan 验证合约: <https://wiki.conflux123.xyz/books/tutorials/page/confluxscan>

### 8. NFT 存储(建议)

为了保证去中心化，推荐使用 [IPFS](https://ipfs.io/) 存储 Metadata 和 image/video 等资源文件。如果在中心化服务器上存储，建议将资源文件特征码（例如md5等）保存在合约中，使得资源文件可验证。具体实现可以参考工程范例 NFT 2.0，比如  [CRC721NatureAutoId](https://github.com/conflux-dao-toc/NFT2.0/blob/main/contracts/CRC721NatureAutoId.sol)，合约保存了一个名为 tokenFeatureCode 的映射(mapping)，保存每个 tokenId 所对应的资源文件特征码。

### 相关参考

* Conflux 开发资料包: <https://forum.conflux.fun/t/conflux/11990>
* Conflux 官方维护，开发 Conflux DAPP 可以参考的合约库: <https://github.com/conflux-fans/conflux-contracts>
* Conflux 树图区块链生态开发使用教程: <https://forum.conflux.fun/t/conflux-2022-5-18-721-20-721-1155-nft/8781>
* 项目方如果希望获得代付设置方面的帮助，请联系刺客: <cike@confluxnetwork.org>

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

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

#### 什么是NFT? <a href="#what-are-nfts" id="what-are-nfts"></a>

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年）的新年报纸版⾯中，精⼼挑选出具 有时代感和浓浓年味⼉的版⾯，将这些版⾯铸成“数字藏品”进⾏发放。

![](/files/0ZWKOPLXR3NRYh5cDya9)

### More Details <a href="#what-are-nfts" id="what-are-nfts"></a>

更多关于 NFT 的信息请见:

Conflux Wiki: <https://conflux-wiki.github.io/conflux-wiki/nft/introduction/>

以太坊: <https://ethereum.org/zh/nft/>

从0到1: 精通 NFT: <https://www.yuque.com/books/share/a8a2de86-76de-4531-8486-ac3d40944557>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://conflux-technical-support.gitbook.io/conflux-nft-kai-fa-zhi-nan/conflux-shu-tu-qu-kuai-lian-shu-zi-zheng-shu-cang-pin-he-yue-biao-zhun-he-bian-xie-gui-fan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
