使用Remix编写Solidity语言的小例子 铸币/发币

铸币/发币

界面

代码

pragma solidity ^0.4.17;

contract Coin{
    address public miner;
    mapping(address=>uint) public balances;
    event Sent(address from,address to,uint amount);
    constructor()public{
        miner = msg.sender;
    }
    
    function mint(address receiver,uint amount)public{
        require(msg.sender == miner);
        balances[receiver] += amount;
    }
    function send(address receiver,uint amount)public{
        require(balances[msg.sender] >= amount);
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        
        emit Sent(msg.sender,receiver,amount);
    }
}

讲解

  • address public miner;   //miner代表挖矿的人,属性是地址
  • mapping(address=>uint) public balances;   //地址和账户余额二者组成键值对,类似于Map的形式。将balances设置为public的形式,就可以查看地址对应的钱数
  • 点击miner,就可以查看合约的创始人,miner = msg.sender;这个命令使得miner等于发布合约的人
  • function mint(address receiver,uint amount)public   只有miner(合约创始人)才可以挖矿
  • function send(address receiver,uint amount)public{  先判断余额,然后发送方减钱,接收方加钱

具体操作

  • 先点击miner判断当前账户的地址,然后复制地址
  • 在mint中输入双引号,引号内填入地址,后面接入挖矿的钱数。类似:“挖矿地址”,10000
  • 在balances同样操作,查看地址的钱数
  • 在send中,点击界面ACCOUNT,复制一个地址,作为接收方。然后,操作一致,类似:“接收方地址”,10000,进行转钱
  • 点击balances可以看到钱减少了,对应接收方的地址增加了

改进版本(限制了发币的数量)

代码

pragma solidity ^0.4.17;

contract Coin1{
    mapping(address=>uint) public balances;
    constructor(uint initalSupply)public{
        balances[msg.sender] = initalSupply;
    }

    function send(address receiver,uint amount)public returns(bool success){
        require(balances[msg.sender] >= amount);
        require(balances[receiver]+amount >= balances[receiver]);
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        return true;
    }
}

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/CHYabc123456hh/article/details/106961743
今日推荐