智能合约:3分钟开发ERC20 token(2)

0.前言

上一节我们讲到了开发智能合约的准备工作,以及在线编程平台remix
智能合约(1)
这一节讲解如何开发、发行一个代币,并具备包括代币铸造mint,转账transfer和销毁burn功能,并确保合约拥有者owner的权限。

1.代码编写

我们使用代码生成工具完成代码编写,生成网址如下:
ERC20代码生成网址
也可以直接复制下面代码到remix,代码如下:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";contract MyToken is ERC20, ERC20Burnable, Ownable, ERC20Permit {constructor(address initialOwner)ERC20("MyToken", "MTK")//此处表示代币的名称和缩写Ownable(initialOwner)ERC20Permit("MyToken"){}function mint(address to, uint256 amount) public onlyOwner {_mint(to, amount);}
}

本文重点放在理解ERC20的术语含义和工作过程中

2.功能解释

在remix虚拟机完成部署后,会出现下列外部可见的函数
在这里插入图片描述
黄色代表这些函数需要写入区块链,需要交易费用gas,
蓝色则代表这些函数仅读取数据,无需交易费用gas.

mint

首先是mint铸造功能
在这里插入图片描述
输入地址和铸造数量即可向当前账户铸造名为“my token”的代币100个
在这里插入图片描述
查询余额发现账号增加了100代币

transfer

其次是transfer转账功能,
在这里插入图片描述
向另一个地址转账20个代币,
在这里插入图片描述
查询余额发现只剩80代币
在这里插入图片描述
查询被转帐的账户,发现余额成功转入20代币。

burn

销毁代币burn,
在余额足够的情况下,可以直接使用burn函数销毁自己名下的代币,此处我们使用剩余80代币的账户,销毁20代币
在这里插入图片描述
查询余额,可见剩余60代币,说明销毁成功。
在这里插入图片描述

totalSupply

总体供应量,用于查询全区块链剩余的代币总量,由于我们铸造了100代币,又销毁了20代币,所以当前全网剩余80代币,其中A账户60代币,B账户20代币。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tracert 与 Ping 程序设计与实现(2024)

1.题目描述 了解 Tracert 程序的实现原理,并调试通过。然后参考 Tracert 程序和计算机网络教材 4.4.2 节, 计算机网络 课程设计指导书 2 编写一个 Ping 程序,并能测试本局域网的所有机器是否在线,运行界面如下图所示的 QuickPing …

【docker】centos 使用 Nexus Repository 搭建私有仓库

Nexus Repository 是一种流行的软件仓库管理工具,它可以帮助您搭建私有仓库,以便在内部网络或私有云环境中存储、管理和分发各种软件包和组件。 它常被用于搭建Maven的镜像仓库。本文演示如何用Nexus Repository搭建docker 私有仓库。 使用Nexus Repos…

架构设计的历史背景

理解了架构的有关概念和定义之后,就需要知道架构设计的历史背景。我认为,如果想要深入理解这个事物的本质,最好的方式就是去追寻这个事物出现的历史背景和推动因素。 我们先来简单梳理一下软件开发进化的历史,探索一下软件架构出…

毕业设计:基于机器学习xgboost lgbm adaboost 的空气质量预测pm2.5‘, ‘so2‘, ‘no2‘ 完整代码数据-可直接运行

项目详细视频讲解介绍: 基于机器学习xgboost lgbm adaboost 的空气质量预测-完整代码数据可直接运行_哔哩哔哩_bilibili 数据展示: 运行结果展示: 项目代码: from sklearn import preprocessing import random from sklearn.model_selection import train_test_split fr…

2024校招,京东科技测试开发工程师二面

前言 东子约面还是很快的,一面是部门主管,一直聊实习和业务 过了当天约二面,二面是纯技术面,可惜lz表现不加,未能通过 今天来让我来回忆一下,当时都问了哪些问题,我又是为什么没有通过这次面…

《GreenPlum系列》GreenPlum详细入门教程01-GreenPlum介绍

文章目录 第一章 GreenPlum介绍1.MPP架构介绍2.GreenPlum介绍3.GreenPlum数据库架构4.GreenPlum数据库优缺点 GreenPlum:https://cn.greenplum.org/ 第一章 GreenPlum介绍 1.MPP架构介绍 MPP是Massively Parallel Processing的缩写,也就是大规模并行处…

GEE数据集——Cloud Score+ S2_HARMONIZED数据集

简介 Cloud Score 是一种用于中高分辨率光学卫星图像的质量评估(QA)处理器。Cloud Score S2_HARMONIZED数据集是由统一的哨兵-2 L1C数据集制作的,Cloud Score的输出可用于识别相对清晰的像素,并有效去除L1C(大气顶部&…

GPDB - 高可用 - 流复制状态

GPDB - 高可用 - 流复制状态 GPDB的高可用基于流复制,通过FTS进行自动故障切换。自动故障切换需要根据primary-mirror流复制的各种状态进行判断。本节就聊聊primary-mirror流复制的各种状态。同样适用于PgSQL 1、WalSndState typedef enum WalSndState {WALSNDSTATE…

04-微服务-Nacos

Nacos注册中心 国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 1.1.认识和安装Nacos Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在…

MySQL-存储引擎

简介:存储引擎是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的, (同一个数据库的不同表可以选择不同的存储引擎) 所以存储引擎也可被称为表类型。 我们输入 SHOW CREATE TAB…

Halcon机器视觉和运动控制软件通用框架,24年1月最新版新增UI设计器,插件式开发,开箱即用 仅供学习!

24年1月更新 下载点我 此版本已经添加ui设计器。具体功能如上所示,可以自定义变量,写c#脚本,自定义流程,包含了halcon脚本和封装的算子,可自定义ui,通过插件形式开发很方便拓展自己的功能。 ui设计器

消息队列-RocketMQ-概览与搭建

RocketMQ 领域模型 RockeMQ整体结构预览 RocketMQ 中的一些概念 Topic:主题,可以理解为类别、分类的概念 MessageQueue:消息队列,存储数据的一个容器(队列索引数据),默认每个 Topic 下有 4 个队…

树莓派ubuntu:默认分辨率太小图形界面中无法修改,如何设置分辨率

树莓派安装ubuntu后,连接外接7寸显示屏(1024x),只显示720分辨率内容显示不全,按如下方式设置: 修改 /boot/config.txt文件 使用pc读卡器读写sd卡 直接命令读写配置文件 sudo nano /boot/config.txtconfig.txt结尾追加如下内容 …

AI担任编程导师:生成式AI如何翻江倒海改变开发世界

生成式 AI 如何重塑开发流程和开发工具? 在21世纪的舞台上,AI作为技术明星,一直以其潜力无穷的表现吸引着我们的目光。而其中,一名角色,响亮的名字叫做生成式AI,正在以翩翩起舞的姿态,改变着我…

华为mstp、vrrp、ospf、isis、bgp等综合一起排错

最终实现左边私网和右边私网全部ping通 SW1 vlan batch 12 34 stp region-configuration //mstp配置 region-name test instance 12 vlan 12 instance 34 vlan 34 active region-configuration interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass …

HCIA-Datacom题库(自己整理分类的)_05_园区网和网络架构多选【6道题】

1.以下哪些网络属于局域网? 一个家庭网络 宽带城域网 某公司办公网络 因特网 2.下列关于单臂路由的说法正确的有? 每个VLAN一个物理连接 在路由器上需要创建子接口 交换机上,把连接到路由器的端口配置成Trunk类型的端口,并…

Windows11 - Ubuntu 双系统及 ROS、ROS2 安装

系列文章目录 前言 一、Windows11 - Ubuntu 双系统安装 硬件信息: 设备名称 DESKTOP-B62D6KE 处理器 13th Gen Intel(R) Core(TM) i5-13500H 2.60 GHz 机带 RAM 40.0 GB (39.8 GB 可用) 设备 ID 7673EF86-8370-41D0-8831-84926668C05A 产品 ID 00331-10000-0000…

常见服务/协议默认端口号、HTTP状态码

文章目录 1. 默认端口号2. Http状态码2.1 1xx(临时响应):2.2 2xx(成功):2.3 3xx(重定向):2.4 4xx(客户端错误):2.5 5xx(服…

(低级错误)IDEA/Goland报错连接数据库失败:URL错误和权限问题。

前言 做毕设ing,使用Goland自带的数据库工具连接服务器的数据库。报错 错误: Malformed database URL, failed to parse the main URL sections. (view)服务器是华为云,使用宝塔面板。数据库版本5.6.50。 排查过程 鉴于Goland报错报的狗屁不是&#…

【通义千问】大模型Qwen GitHub开源工程学习笔记(5)-- 模型的微调【全参数微调】【LoRA方法】【Q-LoRA方法】

摘要: 训练数据的准备 你需要将所有样本放到一个列表中并存入json文件中。每个样本对应一个字典,包含id和conversation,其中后者为一个列表。示例如下所示: [{"id": "identity_0","conversations": [{"from": "user",…