35 lines
992 B
Solidity
35 lines
992 B
Solidity
// Do not use this; it is only for an example in the docs
|
|
|
|
contract MyToken {
|
|
event Transfer(address indexed from, address indexed to, uint amount);
|
|
|
|
mapping (address => uint256) _balances;
|
|
|
|
constructor(uint256 totalSupply) {
|
|
emit Transfer(address(0), msg.sender, totalSupply);
|
|
_balances[msg.sender] = totalSupply;
|
|
}
|
|
|
|
// Read-Only Functions
|
|
function balanceOf(address owner) public view returns (uint256) {
|
|
return _balances[owner];
|
|
}
|
|
|
|
function decimals() public pure returns (uint8) {
|
|
return 18;
|
|
}
|
|
|
|
function symbol() public pure returns (string memory) {
|
|
return "MyToken";
|
|
}
|
|
|
|
// Authenticated Functions
|
|
function transfer(address to, uint amount) public returns (bool) {
|
|
require(_balances[msg.sender] >= amount, "insufficient token balance");
|
|
_balances[msg.sender] -= amount;
|
|
_balances[to] += amount;
|
|
emit Transfer(msg.sender, to, amount);
|
|
return true;
|
|
}
|
|
}
|