前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scaffold-eth 挑战2:创建ERC20代币及买卖合约(part1)

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

作者头像
Tiny熊
发布2021-12-04 13:55:07
9770
发布2021-12-04 13:55:07
举报
文章被收录于专栏:深入浅出区块链技术

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

挑战的目标

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

你将会学到什么?

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

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

一些有用的链接

  • Solidity 示例[6]
  • Solidity 文档(中文)[7]
  • Hardhat 文档(中文)[8]
  • Ethers-js 文档(中文)[9]
  • OpenZeppelin 文档(中文)[10]
  • OpenZeppelin Ethernaut 教程[11]
  • CryptoZombies 教程[12]

什么是ERC20代币?

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

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

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

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

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

如果你想了解更多关于ERC-20代币的信息,你可以看一下这些链接。

  • 以太坊文档: ERC-20代币标准[14]
  • EIP-20 以太坊改进建议[15]

设置项目

首先,我们需要设置它。克隆scaffold-eth仓库,切换到challenge-2-token-vendor分支,并安装所有需要的依赖。

代码语言:javascript
复制
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[16]和ERC721[17]等标准。
  • 灵活的基于角色的权限[18] 方案。
  • 可重复使用的Solidity工具组件[19],以建立自定义合约和复杂的去中心化系统。

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

  • OpenZeppelin ERC20合约[20]
  • OpenZeppelin ERC20 API参考[21]

练习1:创建 ERC20代币并部署

在练习的第一部分,你需要创建一个继承于OpenZepllein的ERC20合约的Token Contract。

在构造函数中,你必须铸造1000个代币(记住在Solidity中ERC20代币有18个小数[22])并将它们发送到msg.sender(部署合约的账号)。

记得更新deploy.js文件,如将这些代币发送到你自己的地址,在deploy.js中加入这一行:

代码语言:javascript
复制
const result = await yourToken.transfer("**YOUR FRONTEND ADDRESS**", utils.parseEther("1000"));

不要害怕,我稍后会在回顾代码后解释。

你能在前台看到钱包的balanceOf有1000个代币吗?

你能transfer()这些代币中的一些到另一个钱包地址吗?只需在Chrome浏览器上打开一个新的隐身窗口,输入你的localhost地址,你就应该有一个全新的账户来发送这些代币!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深入浅出区块链技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 挑战的目标
  • 你将会学到什么?
  • 一些有用的链接
  • 什么是ERC20代币?
  • 设置项目
  • OpenZeppelin和ERC20的实现
  • 练习1:创建 ERC20代币并部署
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档