Truffle Openzeppelin 实例(2022版)
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Truffle Openzeppelin 实例(2022版)相关的知识,希望对你有一定的参考价值。
1. 构建目录结构
打开cmd,新建一个文件夹,ooxxb,进入文件夹
2. 用truffle初始化项目
输入
truffle init
3. 引入Openzeppelin
npm install @openzeppelin/contracts
可以看到项目文件夹下多了一个文件夹node_modules
package.json文件里也多了一个依赖包,说明引入成功!
4. 新建代币的solidity代码文件
在contracts文件夹下新建一个文件OoxxCoin.sol,内容为:
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
import "../node_modules/@OpenZeppelin/contracts/token/ERC20/ERC20.sol";
contract OoxxCoin is ERC20
constructor() ERC20("OoxxCoin", "ooxxb")
_mint(msg.sender, 666666);// 初始化666666个ooxxb
5. 新建部署文件
在migrations文件夹下新增2_deploy_ooxxcoin.js,内容为:
const OoxxCoin = artifacts.require("OoxxCoin");
module.exports = function (deployer)
deployer.deploy(OoxxCoin);
;
具体说明可参考这篇文章
6. 修改项目配置文件
打开项目根目录文件下的truffle-config.js
搜索solc,把version注释打开,改成0.8.1(因为Openzeppelin标明了编译要0.8.0版本以上)
7. 编译
命令行输入开发环境
truffle develop
打开develop模式后,输入
compile
具体说明可参考这篇文章
8. 部署
输入
migrate
具体说明可参考这篇文章
9. 验证结果
- 在命令行先输入:
let contract;
回车 - 再输入:
OoxxCoin.deployed().then(instance => contract = instance)
回车 - 再输入
contract.name();
如图,可以看到结果正确!
10. 代币使用
在truffle develop命令后出现的10个虚拟账号,默认部署合约用的是第一个地址来存放发行总量,接下来用前3个虚拟账号来模拟操作
- 0xc5965f591942d77e06e8a992de650d0044034efd
- 0xd3648210093776256360315f16f443a67b33e5ff
- 0x221b2b110afc7261347ebddb738a37338724a673
10.1 查询代币发行总量
输入
contract.totalSupply();
10.2 查询某个账户余额
- 查询第一个账户0xc5965f591942d77e06e8a992de650d0044034efd余额
contract.balanceOf("0xc5965f591942d77e06e8a992de650d0044034efd");
PS:默认部署合约用的是第一个地址来存放发行总量,所以可以查到余额等于发行总量。
- 查询第二个账户0xd3648210093776256360315f16f443a67b33e5ff余额
contract.balanceOf("0xd3648210093776256360315f16f443a67b33e5ff");
这次就查到余额为0了
- 查询第三个账户0x221b2b110afc7261347ebddb738a37338724a673余额
contract.balanceOf("0x221b2b110afc7261347ebddb738a37338724a673");
同样余额为0
10.3 给第二个账户打6000代币
输入
contract.transfer("0xd3648210093776256360315f16f443a67b33e5ff",6000);
查询第二个账户余额,有6000,结果正确
contract.balanceOf("0xd3648210093776256360315f16f443a67b33e5ff");
查询发行量余额,666666-6000=66066,结果正确
contract.balanceOf("0xc5965f591942d77e06e8a992de650d0044034efd");
over,enjoy!
以上是关于Truffle Openzeppelin 实例(2022版)的主要内容,如果未能解决你的问题,请参考以下文章