solidity学习-简单子货币

本文介绍了如何在以太坊智能合约中实现铸币(mint)和转账(send)功能,包括minter地址的创建、铸币操作的权限控制和转账的条件判断。通过实例演示了给定地址增加余额并进行转账的过程,以及关键事件日志的记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.0 <0.9.0;

contract Coin{
    address public minter;                             //public 铸币地址
    mapping(address => uint) public balances;                 //地址和余额的映射,uint有上限的
    event Sent(address from,address to,uint amount);   //事件,便于log查看获取参数
    constructor(){                                 //构造函数 指定铸币者
        minter=msg.sender;
    }
    function mint(address receiver,uint amount)public{          //铸币,接收地址和数量
        require(msg.sender==minter);                            //设置msg调用铸币的地址为minter
        balances[receiver]+=amount;                             //minter数量增加
    }
    function send(address receiver,uint amount)public{          //发币,接收地址和数量
        require(amount<=balances[msg.sender]);                  //发送的数量要小于账户余额的数量,require判断中可以是false
        balances[msg.sender]-=amount;                           //msg铸币地址数量减少
        balances[receiver]+=amount;                             //获币地址数量增加,加减中可能会溢出需要安全限制
        emit Sent(msg.sender,receiver,amount);
    }

}

minter地址:0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB

函数send中的接收地址:0x617F2E2fD72FD9D5503197092aC168c91465E7f2

 先调用mint函数 给minter地址增加20000数量,再调用send函数,转给接收地址5000

mint:0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB, 20000

send:0x617F2E2fD72FD9D5503197092aC168c91465E7f2,5000

最后余额截图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值