pragma solidity 0.4.24;
/*
Owner
owned.sol
1.0.1
*/
contract Owned {
/* Variables */
address public owner = msg.sender;
/* Constructor */
constructor(address _owner) public {
if ( _owner == 0x00 ) {
_owner = msg.sender;
}
owner = _owner;
}
/* Externals */
function replaceOwner(address _owner) external returns(bool) {
require( isOwner() );
owner = _owner;
return true;
}
/* Internals */
function isOwner() internal view returns(bool) {
return owner == msg.sender;
}
/* Modifiers */
modifier forOwner {
require( isOwner() );
_;
}
}
/*
Safe mathematical operations
safeMath.sol
1.0.0
*/
library SafeMath {
/* Internals */
function add(uint256 a, uint256 b) internal pure returns(uint256 c) {
c = a + b;
assert( c >= a );
return c;
}
function sub(uint256 a, uint256 b) internal pure returns(uint256 c) {
c = a - b;
assert( c <= a );
return c;
}
function mul(uint256 a, uint256 b) internal pure returns(uint256 c) {
c = a * b;
assert( c == 0 || c / a == b );
return c;
}
function div(uint256 a, uint256 b) internal pure returns(uint256) {
return a / b;
}
function pow(uint256 a, uint256 b) internal pure returns(uint256 c) {
c = a ** b;
assert( c % a == 0 );
return a ** b;
}
}
contract TokenDB {}
contract Ico {}
/*
Token Proxy
token.sol
1.0.2
*/
contract Token is Owned {
/* Declarations */
using SafeMath for uint256;
/* Variables */
string public name = "Inlock token";
string public symbol = "ILK";
uint8 public decimals = 8;
uint256 public totalSupply = 44e16;
address public libAddress;
TokenDB public db;
Ico public ico;
/* Constructor */
constructor(address _owner, address _libAddress, address _dbAddress, address _icoAddress) Owned(_owner) public {
libAddress = _libAddress;
db = TokenDB(_dbAddress);
ico = Ico(_icoAddress);
emit Mint(_icoAddress, totalSupply);
}
/* Fallback */
function () public { revert(); }
/* Externals */
function changeLibAddress(address _libAddress) external forOwner {
libAddress = _libAddress;
}
function changeDBAddress(address _dbAddress) external forOwner {
db = TokenDB(_dbAddress);
}
function changeIcoAddress(address _icoAddress) external forOwner {
ico = Ico(_icoAddress);
}
function approve(address _spender, uint256 _value) external returns (bool _success) {
address _trg = libAddress;
assembly {
let m := mload(0x40)
calldatacopy(m, 0, calldatasize)
let success := delegatecall(gas, _trg, m, calldatasize, m, 0x20)
switch success case 0 {
revert(0, 0)
} default {
return(m, 0x20)
}
}
}
function transfer(address _to, uint256 _amount) external returns (bool _success) {
address _trg = libAddress;
assembly {
let m := mload(0x40)
calldatacopy(m, 0, calldatasize)
let success := delegatecall(gas, _trg, m, calldatasize, m, 0x20)
switch success case 0 {
revert(0, 0)
} default {
return(m, 0x20)
}
}
}
function bulkTransfer(address[] _to, uint256[] _amount) external returns (bool _success) {
address _trg = libAddress;
assembly {
let m := mload(0x40)
calldatacopy(m, 0, calldatasize)
let success := delegatecall(gas, _trg, m, calldatasize, m, 0x20)
switch success case 0 {
revert(0, 0)
} default {
return(m, 0x20)
}
}
}
function transferFrom(address _from, address _to, uint256 _amount) external returns (bool _success) {
address _trg = libAddress;
assembly {
let m := mload(0x40)
calldatacopy(m, 0, calldatasize)
let success := delegatecall(gas, _trg, m, calldatasize, m, 0x20)
switch success case 0 {
revert(0, 0)
} default {
return(m, 0x20)
}
}
}
/* Constants */
function allowance(address _owner, address _spender) public view returns (uint256 _remaining) {
address _trg = libAddress;
assembly {
let m := mload(0x40)
calldatacopy(m, 0, calldatasize)
let success := delegatecall(gas, _trg, m, calldatasize, m, 0x20)
switch success case 0 {
revert(0, 0)
} default {
return(m, 0x20)
}
}
}
function balanceOf(address _owner) public view returns (uint256 _balance) {
address _trg = libAddress;
assembly {
let m := mload(0x40)
calldatacopy(m, 0, calldatasize)
let success := delegatecall(gas, _trg, m, calldatasize, m, 0x20)
switch success case 0 {
revert(0, 0)
} default {
return(m, 0x20)
}
}
}
/* Events */
event AllowanceUsed(address indexed _spender, address indexed _owner, uint256 indexed _value);
event Mint(address indexed _addr, uint256 indexed _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
event Transfer(address indexed _from, address indexed _to, uint _value);
}
{
"compilationTarget": {
"Token.sol": "Token"
},
"evmVersion": "byzantium",
"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":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"bulkTransfer","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_libAddress","type":"address"}],"name":"changeLibAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"libAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dbAddress","type":"address"}],"name":"changeDBAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"db","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ico","outputs":[{"name":"","type":"address"}],"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":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":"_owner","type":"address"}],"name":"replaceOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","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":"_icoAddress","type":"address"}],"name":"changeIcoAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_libAddress","type":"address"},{"name":"_dbAddress","type":"address"},{"name":"_icoAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_spender","type":"address"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_value","type":"uint256"}],"name":"AllowanceUsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":true,"name":"_value","type":"uint256"}],"name":"Mint","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"},{"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"}]