当前位置:网站首页>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
边栏推荐
- Binary tree creation & traversal
- Onie supports pice hard disk
- MES, APS and ERP are essential to realize fine production
- (lightoj - 1410) consistent verbs (thinking)
- 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
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- Yu Xia looks at win system kernel -- message mechanism
- Launch APS system to break the problem of decoupling material procurement plan from production practice
- 指针和数组笔试题解析
- Description of octomap averagenodecolor function
猜你喜欢
Nft智能合约发行,盲盒,公开发售技术实战--合约篇
Uibehavior, a comprehensive exploration of ugui source code
Linked list interview questions (Graphic explanation)
"Designer universe" APEC design +: the list of winners of the Paris Design Award in France was recently announced. The winners of "Changsha world center Damei mansion" were awarded by the national eco
Leetcode question brushing record | 203_ Remove linked list elements
Generator Foundation
Asia Pacific Financial Media | designer universe | Guangdong responds to the opinions of the national development and Reform Commission. Primary school students incarnate as small community designers
Artcube information of "designer universe": Guangzhou implements the community designer system to achieve "great improvement" of urban quality | national economic and Information Center
让学指针变得更简单(三)
C语言 - 位段
随机推荐
让学指针变得更简单(三)
MES, APS and ERP are essential to realize fine production
[untitled]
P3047 [usaco12feb]nearby cows g (tree DP)
Interview Reply of Zhuhai Jinshan
TiDB备份与恢复简介
861. Score after flipping the matrix
Inspiration from the recruitment of bioinformatics analysts in the Department of laboratory medicine, Zhujiang Hospital, Southern Medical University
Asia Pacific Financial Media | "APEC industry +" Western Silicon Valley invests 2trillion yuan in Chengdu Chongqing economic circle to catch up with Shanghai | stable strategy industry fund observatio
ROS learning (IX): referencing custom message types in header files
Get the path of edge browser
Golang DNS write casually
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
It's hard to find a job when the industry is in recession
Onie supports pice hard disk
Hill sort c language
21. Delete data
MySQL view tablespace and create table statements
远程存储访问授权
Webrtc series-h.264 estimated bit rate calculation