Last active
May 13, 2017 16:16
-
-
Save evertonfraga/910fc38d003e532e1483e5eeb7fe1d28 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.5; | |
contract MyToken { | |
/* | |
Variáveis públicas do token. | |
Elas conformam com o padrão de moedas na rede ethereum, este padrão permite integração | |
com as Wallets e interoperabilidade com outros contratos. | |
Standard ERC 20: https://github.com/ethereum/EIPs/issues/20 | |
*/ | |
string public standard = 'Token 0.1'; | |
string public name; | |
string public symbol; | |
uint8 public decimals; | |
uint256 public totalSupply; | |
/* Mapping com os saldos de quem possui a moeda */ | |
mapping (address => uint256) public balanceOf; | |
mapping (address => mapping (address => uint256)) public allowance; | |
/* Isto gera um evento público na blockchain que notifica os clientes */ | |
event Transfer(address indexed from, address indexed to, uint256 value); | |
/* Inicializa o contrato com variáveis definidas pelo usuário */ | |
function MyToken(uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol) { | |
balanceOf[msg.sender] = initialSupply; // Quem cria o contrato começa com todo o suprimento de moedas | |
totalSupply = initialSupply; // Atualiza o suprimento total da moeda | |
name = tokenName; // Associa o nome para exibição (em Wallets por exemplo) | |
symbol = tokenSymbol; // Associa o símbolo da moeda para exibição | |
decimals = decimalUnits; // Associa a quantidade de casas decimais | |
} | |
/* Transferência entre accounts */ | |
function transfer(address _to, uint256 _value) { | |
// Verifica se conta possui saldo suficiente | |
if (balanceOf[msg.sender] < _value) throw; | |
// Checa por overflow de variável | |
if (balanceOf[_to] + _value < balanceOf[_to]) throw; | |
// Subtrai saldo de quem está efetuando a transferência | |
balanceOf[msg.sender] -= _value; | |
// Adiciona mesmo saldo ao destinatário | |
balanceOf[_to] += _value; | |
// Notifica atores que estejam escutando por eventos deste tipo | |
Transfer(msg.sender, _to, _value); | |
} | |
} | |
/* | |
Possibilidades a partir deste contrato: | |
Diversos exemplos em https://ethereum.org/token | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Quando ocorre a transferência de tokens de uma carteira para outra, a taxa e paga com tokens ou com ether?