当前位置:网站首页>Erc20 token agreement
Erc20 token agreement
2022-07-06 08:01:00 【Guangzhou wuyanzu】
ERC20 Token agreement
Write at the top
Why does anyone believe such a boring thing as air coin ?
Start the tutorial
ERC20 The development process of tokens can be divided into two steps
- Definition ERC20 Token standard interface
- Token protocol inherits standard interface
ERC20 Standard interface
pragma solidity ^0.4.20;
// Definition ERC-20 Standard interface
contract ERC20Interface {
// Token name
string public name;
// Token symbol or abbreviation
string public symbol;
// Token decimal places , The smallest unit of token
uint8 public decimals;
// The total amount of tokens issued
uint public totalSupply;
// Realize token transaction , Used to transfer tokens to an address
function transfer(address to, uint tokens) public returns (bool success);
// Realize transactions between token users , Transfer tokens from one address to another
function transferFrom(address from, address to, uint tokens) public returns (bool success);
// allow spender Withdraw money from your account many times , And at most tokens individual , It is mainly used in some scenarios to authorize other users to spend tokens from your account
function approve(address spender, uint tokens) public returns (bool success);
// Inquire about spender Allow from tokenOwner The number of tokens spent on
function allowance(address tokenOwner, address spender) public view returns (uint remaining);
// Event triggered during token transaction , That is to call transfer Method
event Transfer(address indexed from, address indexed to, uint tokens);
// Events triggered when allowing other users to spend tokens from your account , That is to call approve Method
event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}
Inherit ERC20 Interface
// Realization ERC-20 Standard interface
contract ERC20Impl is ERC20Interface {
// Store the balance of each address ( the reason being that public So it will be generated automatically balanceOf Method )
mapping (address => uint256) public balanceOf;
// Store the operable address of each address and its operable amount
mapping (address => mapping (address => uint256)) internal allowed;
// Initialization property
constructor() public {
name = "TestByteGoToken"; // Definition Token name
symbol = "TBG22"; // Abbreviation of token
decimals = 18;
totalSupply = 100000000 * 10 ** uint256(decimals); // The total amount of tokens
// The account that initializes the token will have all the tokens
balanceOf[msg.sender] = totalSupply; // When initializing , Who does this token belong to
}
function transfer(address to, uint tokens) public returns (bool success) {
// Check whether the recipient address is legal
require(to != address(0));
// Check whether the sender's account balance is sufficient
require(balanceOf[msg.sender] >= tokens);
// Check whether overflow will occur
require(balanceOf[to] + tokens >= balanceOf[to]);
// Deduct the sender's account balance
balanceOf[msg.sender] -= tokens;
// Increase the recipient's account balance
balanceOf[to] += tokens;
// Trigger the corresponding event
emit Transfer(msg.sender, to, tokens);
}
function transferFrom(address from, address to, uint tokens) public returns (bool success) {
// Check whether the address is legal
require(to != address(0) && from != address(0));
// Check whether the sender's account balance is sufficient
require(balanceOf[from] >= tokens);
// Check whether the amount of operation is allowed
require(allowed[from][msg.sender] <= tokens);
// Check whether overflow will occur
require(balanceOf[to] + tokens >= balanceOf[to]);
// Deduct the sender's account balance
balanceOf[from] -= tokens;
// Increase the recipient's account balance
balanceOf[to] += tokens;
// Trigger the corresponding event
emit Transfer(from, to, tokens);
success = true;
}
function approve(address spender, uint tokens) public returns (bool success) {
allowed[msg.sender][spender] = tokens;
// Trigger the corresponding event
emit Approval(msg.sender, spender, tokens);
success = true;
}
function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
return allowed[tokenOwner][spender];
}
}
The last look
pragma solidity ^0.4.20;
// Definition ERC-20 Standard interface
contract ERC20Interface {
// Token name
string public name;
// Token symbol or abbreviation
string public symbol;
// Token decimal places , The smallest unit of token
uint8 public decimals;
// The total amount of tokens issued
uint public totalSupply;
// Realize token transaction , Used to transfer tokens to an address
function transfer(address to, uint tokens) public returns (bool success);
// Realize transactions between token users , Transfer tokens from one address to another
function transferFrom(address from, address to, uint tokens) public returns (bool success);
// allow spender Withdraw money from your account many times , And at most tokens individual , It is mainly used in some scenarios to authorize other users to spend tokens from your account
function approve(address spender, uint tokens) public returns (bool success);
// Inquire about spender Allow from tokenOwner The number of tokens spent on
function allowance(address tokenOwner, address spender) public view returns (uint remaining);
// Event triggered during token transaction , That is to call transfer Method
event Transfer(address indexed from, address indexed to, uint tokens);
// Events triggered when allowing other users to spend tokens from your account , That is to call approve Method
event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}
// Realization ERC-20 Standard interface
contract ERC20Impl is ERC20Interface {
// Store the balance of each address ( the reason being that public So it will be generated automatically balanceOf Method )
mapping (address => uint256) public balanceOf;
// Store the operable address of each address and its operable amount
mapping (address => mapping (address => uint256)) internal allowed;
// Initialization property
constructor() public {
name = "TestByteGoToken"; // Definition Token name
symbol = "TBG22"; // Abbreviation of token
decimals = 18;
totalSupply = 100000000 * 10 ** uint256(decimals); // The total amount of tokens
// The account that initializes the token will have all the tokens
balanceOf[msg.sender] = totalSupply; // When initializing , Who does this token belong to
}
function transfer(address to, uint tokens) public returns (bool success) {
// Check whether the recipient address is legal
require(to != address(0));
// Check whether the sender's account balance is sufficient
require(balanceOf[msg.sender] >= tokens);
// Check whether overflow will occur
require(balanceOf[to] + tokens >= balanceOf[to]);
// Deduct the sender's account balance
balanceOf[msg.sender] -= tokens;
// Increase the recipient's account balance
balanceOf[to] += tokens;
// Trigger the corresponding event
emit Transfer(msg.sender, to, tokens);
}
function transferFrom(address from, address to, uint tokens) public returns (bool success) {
// Check whether the address is legal
require(to != address(0) && from != address(0));
// Check whether the sender's account balance is sufficient
require(balanceOf[from] >= tokens);
// Check whether the amount of operation is allowed
require(allowed[from][msg.sender] <= tokens);
// Check whether overflow will occur
require(balanceOf[to] + tokens >= balanceOf[to]);
// Deduct the sender's account balance
balanceOf[from] -= tokens;
// Increase the recipient's account balance
balanceOf[to] += tokens;
// Trigger the corresponding event
emit Transfer(from, to, tokens);
success = true;
}
function approve(address spender, uint tokens) public returns (bool success) {
allowed[msg.sender][spender] = tokens;
// Trigger the corresponding event
emit Approval(msg.sender, spender, tokens);
success = true;
}
function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
return allowed[tokenOwner][spender];
}
}
Finally, I urge you to spend more time on serious things , Don't keep thinking about speculation
边栏推荐
- The State Economic Information Center "APEC industry +" Western Silicon Valley will invest 2trillion yuan in Chengdu Chongqing economic circle, which will surpass the observation of Shanghai | stable
- Opencv learning notes 8 -- answer sheet recognition
- 让学指针变得更简单(三)
- MFC sends left click, double click, and right click messages to list controls
- 23. Update data
- 软件开发的一点随记
- Description of octomap averagenodecolor function
- 数据治理:主数据的3特征、4超越和3二八原则
- MEX有关的学习
- What are the ways to download network pictures with PHP
猜你喜欢

好用的TCP-UDP_debug工具下载和使用

Esrally domestic installation and use pit avoidance Guide - the latest in the whole network

Asia Pacific Financial Media | art cube of "designer universe": Guangzhou community designers achieve "great improvement" in urban quality | observation of stable strategy industry fund

继电反馈PID控制器参数自整定

21. Delete data

ROS learning (IX): referencing custom message types in header files

matplotlib. Widgets are easy to use

hcip--mpls
![datax自检报错 /datax/plugin/reader/._drdsreader/plugin.json]不存在](/img/17/415e66d67afb055e94a966de25c2bc.png)
datax自检报错 /datax/plugin/reader/._drdsreader/plugin.json]不存在

Epoll and IO multiplexing of redis
随机推荐
onie支持pice硬盘
What are the ways to download network pictures with PHP
使用 BR 备份 TiDB 集群数据到兼容 S3 的存储
PHP - Common magic method (nanny level teaching)
The State Economic Information Center "APEC industry +" Western Silicon Valley will invest 2trillion yuan in Chengdu Chongqing economic circle, which will surpass the observation of Shanghai | stable
Chinese Remainder Theorem (Sun Tzu theorem) principle and template code
链表面试题(图文详解)
实现精细化生产, MES、APS、ERP必不可少
[nonlinear control theory]9_ A series of lectures on nonlinear control theory
Binary tree creation & traversal
数据治理:数据质量篇
使用 BR 恢复 S3 兼容存储上的备份数据
解决方案:智慧工地智能巡检方案视频监控系统
23. Update data
Wireshark grabs packets to understand its word TCP segment
File upload of DVWA range
In the era of digital economy, how to ensure security?
[redis] Introduction to NoSQL database and redis
"Designer universe": "benefit dimension" APEC public welfare + 2022 the latest slogan and the new platform will be launched soon | Asia Pacific Financial Media
IP lab, the first weekly recheck