以太坊代币标准ERC20、ERC721

两个概念

  • ERC(Ethereum Request for Comment) 以太坊意见征集稿
  • EIP(Ethereum Improvement Proposals)以太坊改进提案

ERC和EIP用于使得以太坊更加完善;在ERC中提出了很多标准,用的最多的标准就是它的Token标准;
有哪些标准详细见https://eips.ethereum.org/erc

常见ERC标准

ERC-20Token Standard
ERC-721Non-Fungible Token Standard
ERC-165Standard Interface Detection
ERC-777Token Standard
ERC-1155Multi Token Standard

ERC-20

主要是指同质化代币标准(不同人持有的一个代币是等值的)。
ERC-20标准中主要有6个函数和两个事件
在这里插入图片描述
其中这6个函数表达的意义是:
totalSupply:总发行量
balanceOf:账户余额
transfer:转账
transferFrom:针对授权进行转账
approve:授权
allowance:owner授权给spender余额
具体的详细见https://eips.ethereum.org/EIPS/eip-20

实现ERC20标准代币

想要发现ERC20标准的代币,就需要实现ERC20标准接口中的函数

先写ERC20标准接口

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;interface IERC20 {function name() external  view returns (string memory);function symbol() external view returns (string memory);function decimals() external view returns (uint8);function totalSupply() external view returns (uint256);function balanceOf(address _owner) external view returns (uint256 balance);function transfer(address _to, uint256 _value) external returns (bool success);function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);function approve(address _spender, uint256 _value) external returns (bool success);function allowance(address _owner, address _spender) external view returns (uint256 remaining);//_from和_to两个参数有indexed关键字修饰,表示这些参数可以作为过滤条件来搜索事件。event Transfer(address indexed _from, address indexed _to, uint256 _value);event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

再实现ERC20标准代币

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import "./IERC20.sol";contract ERC20 is IERC20{string ercName;string ercSymbol;uint8 ercDecimals;uint256 ercTotalSupply;mapping(address=>uint256) ercBalances;//一个人可以有多个委托人:授权者=>被授权者=>授权金额mapping (address=>mapping (address=>uint256)) ercAllowance;//合约部署者address public owner;constructor(string memory _name, string memory _symbol,uint8 _decimals){ercName=_name;ercSymbol=_symbol;ercDecimals=_decimals;owner=msg.sender;}//token名称function name() override  external  view returns (string memory){return ercName;}//token符号function symbol() override external view returns (string memory){return ercSymbol;}//token可以拆分到的精度function decimals() override external view returns (uint8){return ercDecimals;}//token发行总量function totalSupply() override external view returns (uint256){return ercTotalSupply;}//账户余额function balanceOf(address _owner) override external view returns (uint256 balance){return ercBalances[_owner];}//给某人转账function transfer(address _to, uint256 _value) override external returns (bool success){require(_value>0,"_value must >0");require(_to!=address(0),"_to is null");require(ercBalances[msg.sender]>=_value,"user's balance not enough");ercBalances[msg.sender]-=_value;ercBalances[_to]+=_value;emit Transfer(msg.sender, _to, _value);return true;}//被授权用户用我的token转账;_from: 授权者,_to:转给谁function transferFrom(address _from, address _to, uint256 _value) override external returns (bool success){require(ercBalances[_from] >= _value,"user's balance not enough");require(ercAllowance[_from][msg.sender]>=_value,"approve's balance not enough");require(_value>0,"_value must > 0");require(_to!=address(0),"_to is null");ercBalances[_from]-=_value;ercBalances[_to]+=_value;ercAllowance[_from][msg.sender]-=_value;emit Transfer(_from, _to, _value);return true;}//授权其他用户可以花费我多少tokenfunction approve(address _spender, uint256 _value) override external returns (bool success){// require(_value>0,"value must >0");//让_value可以等于0,当其为0时表示收回授权require(_spender!=address(0),"_spender can not be null");require(ercBalances[msg.sender]>=_value,"user's balance not enough");ercAllowance[msg.sender][_spender]=_value; emit Approval(msg.sender, _spender, _value);return true;}//获取授花费的余额tokenfunction allowance(address _owner, address _spender) override external view returns (uint256 remaining){return ercAllowance[_owner][_spender];}//代币发行机制function mint(address _to,uint256 _value) public{require(msg.sender==owner,"only owner can mint");require(_value>0,"_value must > 0");require(_to!=address(0),"_to is invalid"); ercBalances[_to]+=_value;ercTotalSupply+=_value;emit Transfer(address(0), _to, _value);}
}

ERC-721

主要是指非同质化代币标准(不同人持有的一个代币的价值不一样,如,艺术品)

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

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

相关文章

【lesson7】yum的介绍及使用

文章目录 预备工作yum的基本过程yum的操作**yum源问题:****yum三板斧:**yum listyum searchyum list | grepyum installyum install -yyum removeyum remove -y 预备工作 首先有三个问题: 问题解答: 这里我们联想到了手机 问题…

论文阅读:AugGAN: Cross Domain Adaptation with GAN-based Data Augmentation

Abstract 基于GAN的图像转换方法存在两个缺陷:保留图像目标和保持图像转换前后的一致性,这导致不能用它生成大量不同域的训练数据。论文提出了一种结构感知(Structure-aware)的图像转换网络(image-to-image translation network)。 Proposed Framework…

5.5V-65V Vin同步降压控制器,具有线路前馈SCT82630DHKR

描述: SCT82630是一款65V电压模式控制同步降压控制器,具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比,实现从48V输入到低压轨的直接降压转换,降低了系统复杂性和解决方案成本。如果需要,在低至6V的输…

Java“牵手”义乌购商品详情数据,义乌购商品详情接口,义乌购API接口申请指南

义乌购隶属浙江义乌购电子商务有限公司旗下网站。该平台定位为依托实体市场,服务实体市场,以诚信为根本,将7万网上商铺与实体商铺一一对应绑定,为采购商和经营户提供可控、可信、可溯源的交易保障。 义乌购平台现有商铺商品、市场…

OpenHarmony Meetup常州站招募令

OpenHarmony Meetup 常州站正火热招募中! 诚邀充满激情的开发者参与线下盛会~ 探索OpenHarmony前沿科技,畅谈未来前景, 感受OpenHarmony生态构建之路的魅力! 线下参与,名额有限,仅限20位幸运者&#xff01…

计算机网络常见问题

1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 1.1.为什么要分层? 在计算机中网络是个复杂的系统,不同的网络与网络之间由于协议,设备,软件等各种原因在协调和通讯时容易产生各种各样的问题。例如:各物流…

【MySQL】 MySQL的增删改查(进阶)--贰

文章目录 🛫新增🛬查询🌴聚合查询🚩聚合函数🎈GROUP BY子句📌HAVING 🎋联合查询⚾内连接⚽外连接🧭自连接🏀子查询🎡合并查询 🎨MySQL的增删改查(…

web前端之float布局与flex布局

float布局 <style>.nav {overflow: hidden;background-color: #6adfd0; /* 导航栏背景颜色 */}.nav a {float: left;display: block;text-align: center;padding: 14px 16px;text-decoration: none;color: #000000; /* 导航栏文字颜色 */}.nav a:hover {background-col…

测试基础知识

测试的基础知识 软件&#xff1a;控制硬件工作的工具。 软件测试&#xff1a;使用技术手段验证软件是否满足使用需求。 软件测试目的&#xff1a;减少软件缺陷&#xff0c;保证软件质量。 测试主流技能&#xff1a;功能测试、自动化测试、接口测试、性能测试 功能测试&#xff…

三相组合式过电压保护器试验

三相组合式过电压保护器试验 试验目的 三相组合式过电压保护器主要分为有带串联间隙过压保护器和无间隙过压保护器两大类&#xff0c;其试验项目内容要求分别使用高压工频交流和高压直流电源。 三相组合式过电压保护器试验&#xff0c;主要是为了及早发现设备内部绝缘受潮及…

解锁学习新方式——助您迈向成功之路

近年来&#xff0c;随着吉林开放大学广播电视大学的崛起&#xff0c;越来越多的学子选择这所优秀的学府来实现自己的梦想。而作为一名学者&#xff0c;我有幸见证了电大搜题微信公众号的诞生&#xff0c;为广大学子提供了一个全新的学习支持平台。 电大搜题微信公众号&#xff…

《深度学习工业缺陷检测》专栏介绍 CSDN独家改进实战

&#x1f4a1;&#x1f4a1;&#x1f4a1;深度学习工业缺陷检测 1&#xff09;提供工业小缺陷检测性能提升方案&#xff0c;满足部署条件&#xff1b; 2&#xff09;针对缺陷样品少等难点&#xff0c;引入无监督检测&#xff1b; 3&#xff09;深度学习 C、C#部署方案&#…

2023工博会强势回归!智微工业携八大系列重磅亮相

中国国际工业博览会&#xff08;简称"中国工博会"&#xff09;自1999年创办以来&#xff0c;历经二十余年发展创新&#xff0c;通过专业化、市场化、国际化、品牌化运作&#xff0c;已发展成为通过国际展览业协会&#xff08;UFI&#xff09;认证、中国工业领域规模最…

示例-安装office2016图文教程简体中文下载安装包

目录 简介 步骤 总结 简介 Office 2016作为一款办公软件套件&#xff0c;下载和安装 都具有许多令人印象深刻的特点。让我来为你介绍一下&#xff1a;Office 2016注重实现跨平台的一致性。无论你是在Windows、Mac、iOS还是Android上使用Office&#xff0c;你都可以享受到相似…

数据集成:数据挖掘的准备工作之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

Discuz论坛网站标题栏Powered by Discuz!版权信息如何去除或是修改?

当我们搭建好DZ论坛网站后&#xff0c;为了美化网站&#xff0c;想把标题栏的Powered by Discuz&#xff01;去除或是修改&#xff0c;应该如何操作呢&#xff1f;今天飞飞和你分享&#xff0c;在操作前务必把网站源码和数据库都备份到本地或是网盘。 Discuz的版权信息存在两处…

【李沐深度学习笔记】矩阵计算(5)

课程地址和说明 线性代数实现p4 本系列文章是我学习李沐老师深度学习系列课程的学习笔记&#xff0c;可能会对李沐老师上课没讲到的进行补充。 本节是第五篇&#xff0c;由于CSDN限制&#xff0c;只能被迫拆分 矩阵计算 多元函数的等高线 此处参考视频&#xff1a;熟肉)多元…

go学习-GMP模型

GMP 好理解还是 GPM 好理解&#xff1f; 按照上述图&#xff0c;从上往下&#xff0c;GPM更适合理解 GMP 模型&#xff1a; Go 语言运行时系统中的 Goroutine、用于管理 Goroutine 调度的 Go Scheduler&#xff08;P&#xff09;、机器可用的逻辑处理器数量&#xff08;M&#…

[golang gui]fyne框架代码示例

1、下载GO Go语言中文网 golang安装包 - 阿里镜像站(镜像站使用方法&#xff1a;查找最新非rc版本的golang安装包) golang安装包 - 中科大镜像站 go二进制文件下载 - 南京大学开源镜像站 Go语言官网(Google中国) Go语言官网(Go团队) 截至目前&#xff08;2023年9月17日&#x…

【数据分享】2005-2022年全国民航机场客货吞吐量和起降架次数据

机场是一个城市对外联系的重要渠道&#xff0c;机场的旅客吞吐量和货物吞吐量是体现一个城市对外联系程度的重要指标。 本次我们给大家分享的是2005-2022年我国民航机场的旅客吞吐量、货邮吞吐量、起降架次数据。数据格式为Excel和Shp两种格式。数据坐标为WGS1984。原始数据来…