Last active
June 19, 2019 16:01
-
-
Save fiersk17/ac5dba6e2c02f17ba58f4bc89b56cd5b 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.24; | |
interface IERC20 { | |
function totalSupply() external view returns (uint256); | |
function balanceOf(address who) external view returns (uint256); | |
function allowance(address owner, address spender) | |
external view returns (uint256); | |
function transfer(address to, uint256 value) external returns (bool); | |
function approve(address spender, uint256 value) | |
external returns (bool); | |
function transferFrom(address from, address to, uint256 value) | |
external returns (bool); | |
function burn(uint256 value) external; | |
event Transfer( | |
address indexed from, | |
address indexed to, | |
uint256 value | |
); | |
event Approval( | |
address indexed owner, | |
address indexed spender, | |
uint256 value | |
); | |
} | |
library SafeMath { | |
function mul(uint256 a, uint256 b) internal pure returns (uint256) { | |
if (a == 0) { | |
return 0; | |
} | |
uint256 c = a * b; | |
require(c / a == b); | |
return c; | |
} | |
function div(uint256 a, uint256 b) internal pure returns (uint256) { | |
require(b > 0); | |
uint256 c = a / b; | |
return c; | |
} | |
function sub(uint256 a, uint256 b) internal pure returns (uint256) { | |
require(b <= a); | |
uint256 c = a - b; | |
return c; | |
} | |
function add(uint256 a, uint256 b) internal pure returns (uint256) { | |
uint256 c = a + b; | |
require(c >= a); | |
return c; | |
} | |
function mod(uint256 a, uint256 b) internal pure returns (uint256) { | |
require(b != 0); | |
return a % b; | |
} | |
} | |
//www.finexbox.com is a great exchange. | |
contract FinexboxToken is IERC20 { | |
using SafeMath for uint256; | |
mapping (address => uint256) private _balances; | |
mapping (address => mapping (address => uint256)) private _allowed; | |
uint256 private _totalSupply; | |
string public name; | |
uint8 public decimals; | |
string public symbol; | |
constructor() public { | |
decimals = 8; | |
_totalSupply = 33500000 * 10 ** uint(decimals); | |
_balances[msg.sender] = _totalSupply; | |
name = "FinexboxToken"; | |
symbol = "FNB"; | |
} | |
function totalSupply() public view returns (uint256) { | |
return _totalSupply; | |
} | |
function balanceOf(address owner) public view returns (uint256) { | |
return _balances[owner]; | |
} | |
function allowance( | |
address owner, | |
address spender | |
) | |
public | |
view | |
returns (uint256) | |
{ | |
return _allowed[owner][spender]; | |
} | |
function transfer(address to, uint256 value) public returns (bool) { | |
_transfer(msg.sender, to, value); | |
return true; | |
} | |
function approve(address spender, uint256 value) public returns (bool) { | |
require(spender != address(0)); | |
_allowed[msg.sender][spender] = value; | |
emit Approval(msg.sender, spender, value); | |
return true; | |
} | |
function transferFrom( | |
address from, | |
address to, | |
uint256 value | |
) | |
public | |
returns (bool) | |
{ | |
require(value <= _allowed[from][msg.sender]); | |
_allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value); | |
_transfer(from, to, value); | |
return true; | |
} | |
function _transfer(address from, address to, uint256 value) internal { | |
require(value <= _balances[from]); | |
require(to != address(0)); | |
_balances[from] = _balances[from].sub(value); | |
_balances[to] = _balances[to].add(value); | |
emit Transfer(from, to, value); | |
} | |
function burn(uint256 value) public { | |
require(value <= _balances[msg.sender]); | |
_totalSupply = _totalSupply.sub(value); | |
_balances[msg.sender] = _balances[msg.sender].sub(value); | |
emit Transfer(msg.sender, address(0), value); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment