学习Solidity记录-4-给前面的代币加税

1,代码:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;


contract ERC20 {
    uint public totalSupply = 100000000000000000000;
//18个小数点,总量100个
    mapping(address => uint) public balanceOf;
//map映射保存所有代币余额,所有账户的币都在这里记着
//map类似python的字典
    string public name = "wangzai";
//代币的名称
    string public symbol = "xiaomantou";
//代币的符号
    uint8 public decimals = 18;
//代币的小数点数

    event Transfer(address indexed from, address indexed to, uint value);
//事件,发送交易的时间,事件可以被其他客户端监控,让客户端知道事件发生
    
/////////////////////////////////////////////////////////////发送代币交易
    function transfer(address recipient, uint amount) external returns (bool) {  
//转账的函数transfer(接收者地址,数量)
        balanceOf[msg.sender] -= amount;
//msg.sender发起交易的地址
//发送者地址余额减去数量
        uint amount1 = amount * 10 / 100;    
//收税10%
        uint amount2 = amount * 90 / 100;
//收税剩下的
        balanceOf[0x620f939840aE11BDbCd29c2e87f28772Bb49AF1e] +=  amount1;
//钱打给收税的
        balanceOf[recipient] += amount2;
//接收者加数量
        emit Transfer(msg.sender, 0x620f939840aE11BDbCd29c2e87f28772Bb49AF1e, amount1);
        emit Transfer(msg.sender, recipient, amount2);
//触发转账以及收税事件
        return true;
    }


    function mint(uint amount) external {
//mint铸造函数,可以凭空铸造mint代币到你的钱包
        balanceOf[msg.sender] += amount;
//给钱包地址加amount数量的币
        totalSupply += amount;
//总量也加,相当于增发
        emit Transfer(address(0), msg.sender, amount);
//触发时间
    }

    
}

2,给钱包mint100个币

post image

3,转账100个

post image

4,查看数量

post image

到账90个

post image

这边又收税回来10个,查看区块浏览器

post image

大功告成