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

相关文章

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

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

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

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

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java实例化对象的​7种方式详解

《Java实例化对象的​7种方式详解》在Java中,实例化对象的方式有多种,具体取决于场景需求和设计模式,本文整理了7种常用的方法,文中的示例代码讲解详细,有需要的可以了解下... 目录1. ​new 关键字(直接构造)​2. ​反射(Reflection)​​3. ​克隆(Clone)​​4. ​反序列化

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表