5

scaffold-eth 挑战2:创建ERC20代币及买卖合约(part1)

 2 years ago
source link: https://learnblockchain.cn/article/3244
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在之前的scaffold-eth挑战中,我们已经创建了一个dApp。在这个挑战中,将创建一个代币及买卖合约,挑战2 分为两篇:本篇将介绍第一部分创建ERC20代币及如何使用 ETH 购买 Token, 下一篇介绍使用 Token 兑换 ETH 以及完善测试和前端

挑战的目标

本次挑战的目标是创建自己的ERC20代币和代币买卖合约,该合约将处理代币的出售/购买过程,并与用户发送的ETH进行兑换。

你将会学到什么?

  • 什么是ERC20代币
  • 如何铸造一个ERC20代币
  • OpenZeppelin ERC20的实现
  • 合约的所有权
  • 如何创建一个代币买卖合约来出售/购买代币

除了上面的内容外,我们还要学习很多新的Solidity和web3概念,以及如何为你的Solidity代码写出好的测试。我将跳过一些基本的部分,所以如果你感到迷茫,只需回到之前文章阅读。

一些有用的链接

什么是ERC20代币?

在我们开始之前,我将直接引用以太坊文档给你一个关于什么是ERC20代币的概述。

代币在以太坊中几乎可以代表任何东西:

  • 在线平台中的信誉
  • 游戏中角色的技能
  • 金融资产,如公司的股份
  • 法定货币,如美元
  • 一盎司黄金
  • 以及更多...

以太坊如此强大的功能必须由一个强大的标准来处理,对吗?这正是ERC-20发挥其作用的地方! 这个标准允许开发者建立可与其他产品和服务互操作的代币应用。

ERC-20 是一个同质代币的标准,换句话说,使每个代币与另一个代币完全相同(类型和价值)。例如,ERC-20代币的作用就像ETH一样,这意味着1个代币现在和将来都等于所有其他代币。

如果你想了解更多关于ERC-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合约框架实现了:

如果你想了解更多关于OpenZeppelin的实现,你可以点击这些链接。

练习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浏览...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK