当前位置:网站首页>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

  1. Definition ERC20 Token standard interface
  2. 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 
原网站

版权声明
本文为[Guangzhou wuyanzu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202131848136230.html