ChainIDE 是一款云端智能合约 IDE ,开发者可以在其上编写智能合约,以部署在 Ethereum、BNB Chain、Polygon、Conflux、Nervos、Dfinity、Flow、Chain33、Fisco Bcos 等不同区块链上。它可以减少用户的开发周期,节省用户的时间和精力。
## 介绍
ChainIDE 是一款云端智能合约 IDE ,开发者可以在其上[编写智能合约](https://learnblockchain.cn/2018/03/15/contract-upgrade),以部署在 Ethereum、BNB Chain、Polygon、Conflux、Nervos、Dfinity、Flow、Chain33、Fisco Bcos 等不同区块链上。它可以减少用户的开发周期,节省用户的时间和精力。如果你有任何问题,请加入我们的[ChainIDE Discord](https://discord.gg/QpGq4hjWrh) 向我们提问吧。
## 所需条件
1. ChainIDE
2. Fluent Wallet
3. Solidity
4. IPFS
## 你将做什么
跟随以下步骤来教您如何在 Conflux core testnet 上部署一份 CRC-721 智能合约:
1. 安装 Fluent Wallet
2. 编写一个 CRC-721 智能合约
3. 编译一份 CRC-721 智能合约
4. 部署一份 CRC-721 智能合约
5. 创建一份展平化合约来用于验证
6. 在 ConfluxScan 上验证这份已部署的合约
7. 合约申请代付
8. 数字藏品 MINT
### 1. 安装 Fluent Wallet
当我们想要与 Conflux 区块链上的智能合约进行交互时,Fluent Wallet 是一个不错的选择。
使用 Chrome, Firefox 或 Edge 浏览器打开 Fluent 官网 [fluentwallet](https://fluentwallet.com/) 并且添加浏览器扩展程序。

### 2. 编写一个CRC-721智能合约
你需要写下 ERC-721 智能合约中实现的所有必要函数。一般的 ERC-721 智能合约需要包含以下函数:
– balanceOf(): 返回该用户拥有的 NFT 数量
– ownerOf(): 返回该 token 的持有者地址
– approve(): 授予地址 *to* 具有 tokenId 的控制权,方法成功后需触发 Approval 事件。
– setApprovalForAll(): 授予地址_operator具有所有NFTs的控制权,成功后需触发ApprovalForAll事件。
– getApproved(), isApprovedForAll(): 用来查询授权。
– safeTransferFrom(): 转移NFT所有权,一次成功的转移操作必须发起 Transer 事件。
– transferFrom(): 用来转移NFTs, 方法成功后需触发Transfer事件。调用者自己确认_to地址能正常接收NFT,否则将丢失此NFT。此函数实现时需要检查是否符合判断条件。
在 Conflux 中,所有的 CRC-721 合约还**必须包含**以下合约中的全部枚举函数:
* 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
ChainIDE 团队已经准备了一个的 CRC-721 合约,包括所有必需的函数,您可以使用该内置模板并根据您的要求增加/删除一些函数。
打开 [ChainIDE 官网](https://chainide.cn/zh-CN/) ,然后点击“快速开始”。

点击“新建项目”,选择 Conflux 里的 CRC721 Showcase

现在你可以看到我们准备的合约 CRC721NatureAutoIdFixedMetadata.sol, 包含了所有必须的函数, 点击它,它可以针对于每一个 MINT 的 NFT 设置一个单独的 Metadata URL。

### 3. 编译一份 CRC-721 智能合约
在完成你的智能合约后,就可以编译智能合约了。
要编译,请到 compile 模块,根据你的源代码选择一个合适的编译器,并按下编译按钮,编译成功后,将生成源代码的ABI和字节码。
如果你的源代码中存在一些错误,它们将显示在 console 面板下。
你可能需要仔细阅读错误,相应地解决它并再次编译!
**请记下你的源代码的编译器版本和许可证与是否开启优化**,因为当你在 confluxscan 上验证你的智能合约时,会需要它。

### 4. 部署一份 CRC-721 智能合约
编译成功后,是时候将你编译的CRC-721智能合约部署到 Conflux core testnet了。
为此,你需要先安装一个 Fluent Wallet,在你的 Fluent Wallet 中添加Conflux core testnet,并且需要领取一些测试币来支付 gas,为此,你可以这样做。
* 点击右上角“未连接” – “Injected Web3 Provider” – “Fluent Wallet”


* 连接好后确保右下角网络为 “Conflux Test Network”,如果不是,则点击”切换网络“切换为”Test Network“;点击”存入CFX“可以获得测试币。

接着进入 “Depoly & Interaction “模块,在已编译的智能合约中选择你想部署的合约并部署 。
在这份教程中,我们将使用 CRC721NatureAutoIdFixedMetadata 这份智能合约来进行部署。
在构造函数参数,name_ 为你想要的数字藏品全名, symbol_ 为你想要的数字藏品通证名, 确认好后点击“部署”。

部署成功后,在 console 部分可以看到一个消息,提示你的智能合约已经成功部署。
### 5. 创建一份展平化合约来用于验证
为了验证一个 import 了其他智能合约的智能合约,
我们需要创建一个扁平化的文件,
一个扁平化的文件将所有导入合约的源代码放在了一个文件中,
要创建一个扁平化的文件,你需要先添加一个 “flattener “插件。

一旦 Flatterner 插件被激活,你就可以在屏幕右侧点击访问,如下图所示。
选择编译后的文件,点击扁平化按钮,创建一个扁平化的文件,一旦扁平化的文件被创建。
它将被自动复制到剪贴板上。
你可以把它粘贴到一个文件中,并保存起来供以后使用。

如果你想保存扁平化的文件,点击保存按钮,一个扁平化的合约就会被保存在当前仓库中。

保存的扁平化合约可以在资源管理器模块下访问。

### 6. 在 ConfluxScan 上验证这份已部署的合约
要验证之前部署的智能合约,点击这里。

点击下面的“合约” – “验证您的合约” 。

一旦你点击 “验证您的合约” ,你将被要求提供以下内容。
– 合约地址: 你想验证的已部署智能合约的地址(默认已填写)
– 合约名称: 该智能合约的文件名
– 许可协议: 智能合约开头的许可协议
– 编译器:当初编译选择的编译器版本
– 优化:编译时是否开启优化(如当时选择的是,则运行选择 200)
– 合约源码:flatten 后的合约代码
确认好后,点击“提交”

你的智能合约被验证了,恭喜你!

### 7. 合约申请代付
Conflux 的代付机制通过一种赞助机制来补贴用户对智能合约的使用,通过引入内置的代付合约,与受到赞助的合约交互将不需要花费 CFX 来支付燃气费,让余额为零的新帐户也能够调用智能合约。
因此,请务必在您的合约中**引入代付合约**,并设置**燃气费代付**,保证任何用户与你的合约交互都能被代付机制赞助而无需花费 CFX,在当下环境,这对于你的 NFT 应用的合规性很重要。ChainIDE CRC721 Showcase 默认配置了代付。
> 项目方如果希望获得代付设置方面的帮助,请联系刺客: cike@confluxnetwork.org
>
> 代付机制详情请见: https://forum.conflux.fun/t/conflux/11949

输入你的合约地址并按下回车键,确认无误后点击申请。

### 8. 数字藏品 Mint
要铸造一个数字藏品,你需要使用 **mint 函数**,并使用你想空投数字藏品的人的钱包地址,
并将上传到 IPFS 的藏品链接粘贴到 _metadata 输入栏中。



Mint 成功后,你可以在 Conflux Scan 上查看你的数字藏品了!


恭喜你,在 Conflux 上发行了属于你自己的数字藏品,非常酷!
阅读该教程之前请先阅读以下两点内容,熟悉内容与环境:
- Conflux 树图区块链 “数字藏品” 合约标准和编写规范
- Conflux IDE环境配置
介绍
ChainIDE 是一款云端智能合约 IDE ,开发者可以在其上编写智能合约,以部署在 Ethereum、BNB Chain、Polygon、Conflux、Nervos、Dfinity、Flow、Chain33、Fisco Bcos 等不同区块链上。它可以减少用户的开发周期,节省用户的时间和精力。如果你有任何问题,请加入我们的ChainIDE Discord 向我们提问吧。
所需条件
- ChainIDE
- Fluent Wallet
- Solidity
- IPFS
你将做什么
跟随以下步骤来教您如何在 Conflux core testnet 上部署一份 CRC-721 智能合约:
- 安装 Fluent Wallet
- 编写一个 CRC-721 智能合约
- 编译一份 CRC-721 智能合约
- 部署一份 CRC-721 智能合约
- 创建一份展平化合约来用于验证
- 在 ConfluxScan 上验证这份已部署的合约
- 合约申请代付
- 数字藏品 MINT
1. 安装 Fluent Wallet
当我们想要与 Conflux 区块链上的智能合约进行交互时,Fluent Wallet 是一个不错的选择。
使用 Chrome, Firefox 或 Edge 浏览器打开 Fluent 官网 fluentwallet 并且添加浏览器扩展程序。
2. 编写一个CRC-721智能合约
你需要写下 ERC-721 智能合约中实现的所有必要函数。一般的 ERC-721 智能合约需要包含以下函数:
- balanceOf(): 返回该用户拥有的 NFT 数量
- ownerOf(): 返回该 token 的持有者地址
- approve(): 授予地址 to 具有 tokenId 的控制权,方法成功后需触发 Approval 事件。
- setApprovalForAll(): 授予地址_operator具有所有NFTs的控制权,成功后需触发ApprovalForAll事件。
- getApproved(), isApprovedForAll(): 用来查询授权。
- safeTransferFrom(): 转移NFT所有权,一次成功的转移操作必须发起 Transer 事件。
- transferFrom(): 用来转移NFTs, 方法成功后需触发Transfer事件。调用者自己确认_to地址能正常接收NFT,否则将丢失此NFT。此函数实现时需要检查是否符合判断条件。
在 Conflux 中,所有的 CRC-721 合约还必须包含以下合约中的全部枚举函数:
- 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
ChainIDE 团队已经准备了一个的 CRC-721 合约,包括所有必需的函数,您可以使用该内置模板并根据您的要求增加/删除一些函数。
打开 ChainIDE 官网 ,然后点击“快速开始”。
点击“新建项目”,选择 Conflux 里的 CRC721 Showcase
现在你可以看到我们准备的合约 CRC721NatureAutoIdFixedMetadata.sol, 包含了所有必须的函数, 点击它,它可以针对于每一个 MINT 的 NFT 设置一个单独的 Metadata URL。
3. 编译一份 CRC-721 智能合约
在完成你的智能合约后,就可以编译智能合约了。 要编译,请到 compile 模块,根据你的源代码选择一个合适的编译器,并按下编译按钮,编译成功后,将生成源代码的ABI和字节码。 如果你的源代码中存在一些错误,它们将显示在 console 面板下。 你可能需要仔细阅读错误,相应地解决它并再次编译!
请记下你的源代码的编译器版本和许可证与是否开启优化,因为当你在 confluxscan 上验证你的智能合约时,会需要它。
4. 部署一份 CRC-721 智能合约
编译成功后,是时候将你编译的CRC-721智能合约部署到 Conflux core testnet了。 为此,你需要先安装一个 Fluent Wallet,在你的 Fluent Wallet 中添加Conflux core testnet,并且需要领取一些测试币来支付 gas,为此,你可以这样做。
- 点击右上角“未连接” – “Injected Web3 Provider” – “Fluent Wallet”
- 连接好后确保右下角网络为 “Conflux Test Network”,如果不是,则点击”切换网络“切换为”Test Network“;点击”存入CFX“可以获得测试币。
接着进入 “Depoly & Interaction “模块,在已编译的智能合约中选择你想部署的合约并部署 。
在这份教程中,我们将使用 CRC721NatureAutoIdFixedMetadata 这份智能合约来进行部署。
在构造函数参数,name 为你想要的数字藏品全名, symbol 为你想要的数字藏品通证名, 确认好后点击“部署”。
部署成功后,在 console 部分可以看到一个消息,提示你的智能合约已经成功部署。
5. 创建一份展平化合约来用于验证
为了验证一个 import 了其他智能合约的智能合约, 我们需要创建一个扁平化的文件, 一个扁平化的文件将所有导入合约的源代码放在了一个文件中, 要创建一个扁平化的文件,你需要先添加一个 “flattener “插件。
一旦 Flatterner 插件被激活,你就可以在屏幕右侧点击访问,如下图所示。 选择编译后的文件,点击扁平化按钮,创建一个扁平化的文件,一旦扁平化的文件被创建。 它将被自动复制到剪贴板上。 你可以把它粘贴到一个文件中,并保存起来供以后使用。
如果你想保存扁平化的文件,点击保存按钮,一个扁平化的合约就会被保存在当前仓库中。
保存的扁平化合约可以在资源管理器模块下访问。
6. 在 ConfluxScan 上验证这份已部署的合约
要验证之前部署的智能合约,点击这里。
点击下面的“合约” – “验证您的合约” 。
一旦你点击 “验证您的合约” ,你将被要求提供以下内容。
- 合约地址: 你想验证的已部署智能合约的地址(默认已填写)
- 合约名称: 该智能合约的文件名
- 许可协议: 智能合约开头的许可协议
- 编译器:当初编译选择的编译器版本
- 优化:编译时是否开启优化(如当时选择的是,则运行选择 200)
- 合约源码:flatten 后的合约代码
确认好后,点击“提交”
你的智能合约被验证了,恭喜你!
7. 合约申请代付
Conflux 的代付机制通过一种赞助机制来补贴用户对智能合约的使用,通过引入内置的代付合约,与受到赞助的合约交互将不需要花费 CFX 来支付燃气费,让余额为零的新帐户也能够调用智能合约。
因此,请务必在您的合约中引入代付合约,并设置燃气费代付,保证任何用户与你的合约交互都能被代付机制赞助而无需花费 CFX,在当下环境,这对于你的 NFT 应用的合规性很重要。ChainIDE CRC721 Showcase 默认配置了代付。
项目方如果希望获得代付设置方面的帮助,请联系刺客: cike@confluxnetwork.org
代付机制详情请见: https://forum.conflux.fun/t/conflux/11949
输入你的合约地址并按下回车键,确认无误后点击申请。
8. 数字藏品 Mint
要铸造一个数字藏品,你需要使用 mint 函数,并使用你想空投数字藏品的人的钱包地址, 并将上传到 IPFS 的藏品链接粘贴到 _metadata 输入栏中。
Mint 成功后,你可以在 Conflux Scan 上查看你的数字藏品了!
恭喜你,在 Conflux 上发行了属于你自己的数字藏品,非常酷!
本文参与区块链开发网写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。
- 发表于 2022-06-28 16:50
- 阅读 ( 374 )
- 学分 ( 3 )
- 分类:Solidity