Skip to content

Instantly share code, notes, and snippets.

@matronator
Created January 21, 2018 20:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matronator/7dcbfd40cd360cbae66dd9db96eb7898 to your computer and use it in GitHub Desktop.
Save matronator/7dcbfd40cd360cbae66dd9db96eb7898 to your computer and use it in GitHub Desktop.
pragma solidity ^0.4.6;
contract SafeMath {
//internals
function safeMul(uint a, uint b) internal returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function safeSub(uint a, uint b) internal returns (uint) {
assert(b <= a);
return a - b;
}
function safeAdd(uint a, uint b) internal returns (uint) {
uint c = a + b;
assert(c>=a && c>=b);
return c;
}
function assert(bool assertion) internal {
if (!assertion) throw;
}
}
contract TokenOneToken is SafeMath {
/* Public variables of the token */
string public standard = 'ERC20';
string public name = 'TokenOne';
string public symbol = 'TKN1';
uint8 public decimals = 0;
uint256 public totalSupply = 1000000000;
address public owner = 0x0d6AFF46cebAECE8A359bb3b646A5F1C2Aa6c849;
/* from this time on tokens may be transfered (after ICO)*/
/* This creates an array with all balances */
mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;
/* This generates a public event on the blockchain that will notify clients */
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
/* Initializes contract with initial supply tokens to the creator of the contract */
function TokenOne() {
owner = 0x0d6AFF46cebAECE8A359bb3b646A5F1C2Aa6c849;
balanceOf[owner] = 1000000000; // Give the owner all initial tokens
totalSupply = 1000000000; // Update total supply
}
/* Send some of your tokens to a given address */
function transfer(address _to, uint256 _value) returns (bool success){
balanceOf[msg.sender] = safeSub(balanceOf[msg.sender],_value); // Subtract from the sender
balanceOf[_to] = safeAdd(balanceOf[_to],_value); // Add the same to the recipient
Transfer(msg.sender, _to, _value); // Notify anyone listening that this transfer took place
return true;
}
/* Allow another contract or person to spend some tokens in your behalf */
function approve(address _spender, uint256 _value) returns (bool success) {
allowance[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
/* A contract or person attempts to get the tokens of somebody else.
* This is only allowed if the token holder approved. */
function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
var _allowance = allowance[_from][msg.sender];
balanceOf[_from] = safeSub(balanceOf[_from],_value); // Subtract from the sender
balanceOf[_to] = safeAdd(balanceOf[_to],_value); // Add the same to the recipient
allowance[_from][msg.sender] = safeSub(_allowance,_value);
Transfer(_from, _to, _value);
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment