scaffold-eth 挑战2:创建ERC20代币及买卖合约(part1)
scaffold-eth 挑战2:创建ERC20代币并实现买卖
> * 原文:[how-to-create-an-erc20-token...](https://stermi.medium.com/how-to-create-an-erc20-token-and-a-solidity-vendor-contract-to-sell-buy-your-own-token-8882808dd905) 作者:Emanuele Ricci > * 译文出自:[登链翻译计划](https://github.com/lbc-team/Pioneer) > * 译者:[翻译小组](https://learnblockchain.cn/people/412) > * 校对:[Tiny 熊](https://learnblockchain.cn/people/15) > * 本文永久链接:[learnblockchain.cn/article…](https://learnblockchain.cn/article/3244) 在之前的scaffold-eth挑战中,我们已经[创建了一个dApp](https://learnblockchain.cn/article/3188)。在这个挑战中,将创建一个代币及买卖合约,挑战2 分为两篇:本篇将介绍第一部分创建ERC20代币及如何使用 ETH 购买 Token, 下一篇介绍[使用 Token 兑换 ETH 以及完善测试和前端](https://learnblockchain.cn/article/3245)。 ## 挑战的目标 本次挑战的目标是创建自己的ERC20代币和代币买卖合约,该合约将处理代币的出售/购买过程,并与用户发送的ETH进行兑换。 ## 你将会学到什么? - 什么是ERC20代币 - 如何铸造一个ERC20代币 - OpenZeppelin ERC20的实现 - 合约的所有权 - 如何创建一个代币买卖合约来出售/购买代币 除了上面的内容外,我们还要学习很多新的Solidity和web3概念,以及如何为你的Solidity代码写出好的测试。我将跳过一些基本的部分,所以如果你感到迷茫,只需回到之前文章阅读。 ## 一些有用的链接 - [Solidity 示例](https://solidity-by-example.org/) - [Solidity 文档(中文)](https://learnblockchain.cn/docs/solidity/) - [Hardhat 文档(中文)](https://learnblockchain.cn/docs/hardhat/getting-started/) - [Ethers-js 文档(中文)](https://learnblockchain.cn/docs/ethers.js/) - [OpenZeppelin 文档(中文)](https://docs.openzeppelin.com/openzeppelin/) - [OpenZeppelin Ethernaut 教程](https://ethernaut.openzeppelin.com/) - [CryptoZombies 教程](https://cryptozombies.io/) ## 什么是ERC20代币? 在我们开始之前,我将直接引用以太坊文档给你一个关于什么是[ERC20](https://learnblockchain.cn/2018/01/12/create_token)代币的概述。 代币在以太坊中几乎可以代表任何东西: - 在线平台中的信誉 - 游戏中角色的技能 - 彩票 - 金融资产,如公司的股份 - 法定货币,如美元 - 一盎司黄金 - 以及更多... 以太坊如此强大的功能必须由一个强大的标准来处理,对吗?这正是ERC-20发挥其作用的地方! 这个标准允许开发者建立可与其他产品和服务互操作的代币应用。 ERC-20 是一个同质代币的标准,换句话说,使每个代币与另一个代币完全相同(类型和价值)。例如,ERC-20代币的作用就像ETH一样,这意味着1个代币现在和将来都等于所有其他代币。 如果你想了解更多关于ERC-20代币的信息,你可以看一下这些链接。 - [以太坊文档: ERC-20代币标准](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) - [EIP-20 以太坊改进建议](https://eips.ethereum.org/EIPS/eip-20) ## 设置项目 首先,我们需要设置它。克隆scaffold-eth仓库,切换到`challenge-2-token-vendor`分支,并安装所有需要的依赖。 ```bash git clone https://github.com/austintgriffith/scaffold-eth.git challenge-2-token-vendor cd challenge-2-token-vendor git checkout challenge-2-token-vendor yarn install ``` 在本地测试你的应用程序 - `yarn chain`启动你的本地hardhat链 - `yarn start`启动你的本地React应用程序 - `yarn deploy`部署/重新部署你的合约并更新React应用 ## OpenZeppelin和ERC20的实现 OpenZeppelin提供安全产品来构建、自动化和操作去中心化的应用程序。 我们将使用OpenZeppelin合约框架来构建自己的ERC20代币。 **该框架是一个用于安全智能合约开发的库。**建立在社区坚实审核的代码基础上,OpenZeppelin合约框架实现了: - 实现了[ERC20](https://docs.openzeppelin.com/contracts/4.x/erc20)和[ERC721](https://docs.openzeppelin.com/contracts/4.x/erc721)等标准。 - 灵活的[基于角色的权限](https://docs.openzeppelin.com/contracts/4.x/access-control) 方案。 - 可重复使用的[Solidity工具组件](https://docs.openzeppelin.com/contracts/4.x/utilities),以建立自定义合约和复杂的去中心化系统。 如果你想了解更多关于OpenZeppelin的实现,你可以点击这些链接。 - [OpenZeppelin ERC20合约](https://docs.openzeppelin.com/contracts/4.x/erc20) - [OpenZeppelin ERC20 API参考](https://docs.openzeppelin.com/contracts/4.x/api/token/erc20) ## 练习1: 创建 ERC20代币并部署 在练习的第一部分,你需要创建一个继承于OpenZepllein的ERC20合约的Token Contract。 在构造函数中,你必须铸造`1000个代币`(记住在Solidity中[ERC20代币有18个小数](https://docs.openzeppelin.com/contracts/4.x/erc20#a-note-on-decimals))并将它们发送到`msg.sender`(部署合约的账号)。 记得更新`deploy.js`文件,如将这些代币发送到你自己的地址,在`deploy.js`中加入这一行: ``` const result = await yourToken.transfer("**YOUR FRONTEND ADDRESS**", utils.parseEther("1000")); ``` 不要害怕,我稍后会在回顾代码后解释。 - 你能在前台看到钱包的`balanceOf`有1000个代币吗? - 你能`transfer()`这些代币中的一些到另一个钱包地址吗?只需在Chrome浏览...
- 原文:how-to-create-an-erc20-token... 作者:Emanuele Ricci
- 译文出自:登链翻译计划
- 译者:翻译小组
- 校对:Tiny 熊
- 本文永久链接:learnblockchain.cn/article…
在之前的scaffold-eth挑战中,我们已经创建了一个dApp。在这个挑战中,将创建一个代币及买卖合约,挑战2 分为两篇:本篇将介绍第一部分创建ERC20代币及如何使用 ETH 购买 Token, 下一篇介绍使用 Token 兑换 ETH 以及完善测试和前端。
挑战的目标
本次挑战的目标是创建自己的ERC20代币和代币买卖合约,该合约将处理代币的出售/购买过程,并与用户发送的ETH进行兑换。
你将会学到什么?
- 什么是ERC20代币
- 如何铸造一个ERC20代币
- OpenZeppelin ERC20的实现
- 合约的所有权
- 如何创建一个代币买卖合约来出售/购买代币
除了上面的内容外,我们还要学习很多新的Solidity和web3概念,以及如何为你的Solidity代码写出好的测试。我将跳过一些基本的部分,所以如果你感到迷茫,只需回到之前文章阅读。
一些有用的链接
- Solidity 示例
- Solidity 文档(中文)
- Hardhat 文档(中文)
- Ethers-js 文档(中文)
- OpenZeppelin 文档(中文)
- OpenZeppelin Ethernaut 教程
- CryptoZombies 教程
什么是ERC20代币?
在我们开始之前,我将直接引用以太坊文档给你一个关于什么是ERC20代币的概述。
代币在以太坊中几乎可以代表任何东西:
- 在线平台中的信誉
- 游戏中角色的技能
- 彩票
- 金融资产,如公司的股份
- 法定货币,如美元
- 一盎司黄金
- 以及更多...
以太坊如此强大的功能必须由一个强大的标准来处理,对吗?这正是ERC-20发挥其作用的地方! 这个标准允许开发者建立可与其他产品和服务互操作的代币应用。
ERC-20 是一个同质代币的标准,换句话说,使每个代币与另一个代币完全相同(类型和价值)。例如,ERC-20代币的作用就像ETH一样,这意味着1个代币现在和将来都等于所有其他代币。
如果你想了解更多关于ERC-20代币的信息,你可以看一下这些链接。
- 以太坊文档: ERC-20代币标准
- EIP-20 以太坊改进建议
设置项目
首先,我们需要设置它。克隆scaffold-eth仓库,切换到challenge-2-token-vendor
分支,并安装所有需要的依赖。
git clone https://github.com/austintgriffith/scaffold-eth.git challenge-2-token-vendor
cd challenge-2-token-vendor
git checkout challenge-2-token-vendor
yarn install
在本地测试你的应用程序
yarn chain
启动你的本地hardhat链yarn start
启动你的本地React应用程序yarn deploy
部署/重新部署你的合约并更新React应用
OpenZeppelin和ERC20的实现
OpenZeppelin提供安全产品来构建、自动化和操作去中心化的应用程序。
我们将使用OpenZeppelin合约框架来构建自己的ERC20代币。
该框架是一个用于安全智能合约开发的库。建立在社区坚实审核的代码基础上,OpenZeppelin合约框架实现了:
- 实现了ERC20和ERC721等标准。
- 灵活的基于角色的权限 方案。
- 可重复使用的Solidity工具组件,以建立自定义合约和复杂的去中心化系统。
如果你想了解更多关于OpenZeppelin的实现,你可以点击这些链接。
- OpenZeppelin ERC20合约
- OpenZeppelin ERC20 API参考
练习1: 创建 ERC20代币并部署
在练习的第一部分,你需要创建一个继承于OpenZepllein的ERC20合约的Token Contract。
在构造函数中,你必须铸造1000个代币
(记住在Solidity中ERC20代币有18个小数)并将它们发送到msg.sender
(部署合约的账号)。
记得更新deploy.js
文件,如将这些代币发送到你自己的地址,在deploy.js
中加入这一行:
const result = await yourToken.transfer("**YOUR FRONTEND ADDRESS**", utils.parseEther("1000"));
不要害怕,我稍后会在回顾代码后解释。
- 你能在前台看到钱包的
balanceOf
有1000个代币吗? - 你能
transfer()
这些代币中的一些到另一个钱包地址吗?只需在Chrome浏览...
剩余50%的内容订阅专栏后可查看
- 单篇购买 5学分
- 永久订阅专栏 (20学分)
- 发表于 2021-11-27 17:59
- 阅读 ( 512 )
- 学分 ( 31 )
- 分类:DApp
- 专栏:从 scaffold-eth 开启 Web3 开发之旅
评论