Skip to content

Coin

Coin

Описание

Смарт-контракт, который позволят использовать Эфириум для некоторой виртуальной валюты.

Код

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

contract Coin {
    // The keyword "public" makes variables
    // accessible from other contracts
    address public minter;
    mapping (address => uint) public balances;

    // Events allow clients to react to specific
    // contract changes you declare
    event Sent(address from, address to, uint amount);

    // Constructor code is only run when the contract
    // is created
    constructor() {
        minter = msg.sender;
    }

    function get(address account) public view returns (uint) {
        return balances[account];
    }

    // Sends an amount of newly created coins to an address
    // Can only be called by the contract creator
    function mint(address receiver, uint amount) public {
        require(msg.sender == minter);
        require(amount < 1e60);
        balances[receiver] += amount;
    }

    // Sends an amount of existing coins
    // from any caller to an address
    function send(address receiver, uint amount) public {
        require(amount <= balances[msg.sender], "Insufficient balance.");
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        emit Sent(msg.sender, receiver, amount);
    }
}

Сделать

  1. создать 42 монеты на счету создателя контракта
  2. создать 10 монет на счету второго аккаунта
  3. проверить баланс первого
  4. проверить баланс второго
  5. перевести 10 монет от первого второму
  6. проверить балансы первого и второго