Truffle Openzeppelin 实例(2022版)

2024-09-03 07:08

本文主要是介绍Truffle Openzeppelin 实例(2022版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 构建目录结构

打开cmd,新建一个文件夹,ooxxb,进入文件夹

2. 用truffle初始化项目

输入

truffle init

3. 引入Openzeppelin

github地址

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版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132366

相关文章

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解