pragma solidity ^0.4.20;
contract MyToken {
// Tworzymy słownik: adres konta – liczba tokenów (balans)
mapping (address => uint256) public balanceOf;
// Podczas wdrożenia właściciel kontraktu otrzymuje wszystkie tokeny
constructor(uint256 initialSupply) public {
balanceOf[msg.sender] = initialSupply;
}
// Funkcja wykonuje transfer tokenów
function transfer(address _to, uint256 _value) public {
// Sprawdzamy czy nadawca ma wystarczający balans
require(balanceOf[msg.sender] >= _value);
// Zabezpieczamy się przed potencjalnymi przepełnieniami
require(balanceOf[_to] + _value >= balanceOf[_to]);
// Zmniejszamy balans konta nadawcy
balanceOf[msg.sender] -= _value;
// Zwiększamy balans konta docelowego
balanceOf[_to] += _value;
}
}