Skip to content

Instantly share code, notes, and snippets.

@falehenrique
Created January 18, 2018 20:11
Show Gist options
  • Save falehenrique/2e2585ba3216729336bddd042a449793 to your computer and use it in GitHub Desktop.
Save falehenrique/2e2585ba3216729336bddd042a449793 to your computer and use it in GitHub Desktop.
RegisterNameToken
//defini a versão de compilação do solidty
pragma solidity ^0.4.18;
contract RegisterNameToken {
//variável map onde a chave é uma array de bytes e o valor booleano(true ou false)
mapping (bytes32=>bool) mapNames;
//array de bytes
bytes32[] public names;
//evento para ser utilizado como callback pela nossa aplicação web
event LogNameRegistered(string _name, uint256 time);
//contrutor que utiliza o modificador
function RegisterNameToken() public payable {
}
//função pública que recebe uma string e retorna um tipo bytes32
function registerName(string _name) public returns(bytes32) {
// keccak256 retorna um hash do parâmetro _name
bytes32 nameHash = keccak256(_name);
//assert verifica se o nome já existe no map, se existir ele interrompe a execução
assert(!mapNames[nameHash]);
//adiciona na lista
names.push(nameHash);
//seta o valor da chave do hash para true
mapNames[nameHash] = true;
//dispara o evento para ser feito algo na nossa aplicação web ou api, etc.
LogNameRegistered(_name, now);
// retorna a nome convertido em hash
return nameHash;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment