/* version metahashtoken 0.1.4 RC */
pragma solidity ^0.4.18;
contract metahashtoken {
/* token settings */
string public name; /* token name */
string public symbol; /* token symbol */
uint8 public decimals; /* number of digits after the decimal point */
uint public totalTokens; /* total amount of tokens */
uint public finalyze;
/* token management data */
address public ownerContract; /* contract owner */
address public owner; /* owner */
/* arrays */
mapping (address => uint256) public balance; /* array of balance */
mapping (address => mapping (address => uint256)) allowed; /* arrays of allowed transfers */
/* events */
event Burn(address indexed from, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
/* get the total amount of tokens */
function totalSupply() public constant returns (uint256 _totalSupply){
return totalTokens;
}
/* get the amount of tokens from a particular user */
function balanceOf(address _owner) public constant returns (uint256 _balance){
return balance[_owner];
}
/* transfer tokens */
function transfer(address _to, uint256 _value) public returns (bool success) {
address addrSender;
if (msg.sender == ownerContract){
/* the message was sent by the owner. it means a bounty program */
addrSender = ownerContract;
} else {
/* transfer between users*/
addrSender = msg.sender;
}
/* tokens are not enough */
if (balance[addrSender] < _value){
revert();
}
/* overflow */
if ((balance[_to] + _value) < balance[_to]){
revert();
}
balance[addrSender] -= _value;
balance[_to] += _value;
Transfer(addrSender, _to, _value);
return true;
}
/* how many tokens were allowed to send */
function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}
/* Send tokens from the recipient to the recipient */
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success){
var _allowance = allowed[_from][msg.sender];
/* check of allowed value */
if (_allowance < _value){
revert();
}
/* not enough tokens */
if (balance[_from] < _value){
revert();
}
balance[_to] += _value;
balance[_from] -= _value;
allowed[_from][msg.sender] = _allowance - _value;
Transfer(_from, _to, _value);
return true;
}
/* allow to send tokens between recipients */
function approve(address _spender, uint256 _value) public returns (bool success){
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
/* constructor */
function metahashtoken() public {
name = 'BITCOMO';
symbol = 'BM';
decimals = 2;
owner = msg.sender;
totalTokens = 0; /* when creating a token we do not add them */
finalyze = 0;
}
/* set contract owner */
function setContract(address _ownerContract) public {
if (msg.sender == owner){
ownerContract = _ownerContract;
}
}
function setOptions(uint256 tokenCreate) public {
/* set the amount, give the tokens to the contract */
if ((msg.sender == ownerContract) && (finalyze == 0)){
totalTokens += tokenCreate;
balance[ownerContract] += tokenCreate;
} else {
revert();
}
}
function burn(uint256 _value) public returns (bool success) {
if (balance[msg.sender] <= _value){
revert();
}
balance[msg.sender] -= _value;
totalTokens -= _value;
Burn(msg.sender, _value);
return true;
}
/* the contract is closed. Either because of the amount reached, or by the deadline. */
function finalyzeContract() public {
if (msg.sender != owner){
revert();
}
finalyze = 1;
}
}
{
"compilationTarget": {
"metahashtoken.sol": "metahashtoken"
},
"libraries": {},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalyzeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"finalyze","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ownerContract","type":"address"}],"name":"setContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenCreate","type":"uint256"}],"name":"setOptions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]