Mint-Transfer-Demo

Mint-Transfer-Demo

一个简易的发币Demo

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

contract MyToken {
    //mapping 类型的变量,用于存储每个地址对应的余额
    mapping (address => uint256) private balances;
    //uint256 类型的变量,用于存储 Token 的总发行量。定义为 public,可以被任何人查询。
    uint256 public totalSupply;
    //address 类型的变量,用于存储此 Token 的发行者。用于一些权限控制
    address private owner;

    constructor() {
        owner = msg.sender;
    }
    //用于铸造 Token 的函数
    function mint(address recipient, uint256 amount) public {
        //权限控制
        require(msg.sender == owner,"Only the owner can perform this action");
        balances[recipient] += amount;
        totalSupply += amount;
    }
    //用于查询某个地址对应的 Token 余额
    function balanceOf(address account) public view returns (uint256) {
        return balances[account];
    }
    //用于转账的函数
    function transfer(address recipient, uint256 amount) public returns (bool) {
        require(amount <= balances[msg.sender], "Not enough balance.");
        balances[msg.sender] -= amount;
        balances[recipient] += amount;
        return true;
    }
    
}

Comment