ETH Price: $2,451.99 (+2.12%)

Contract

0xeE467B4e21d501f301537C63B494E3F25A1bA5cE
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x6080604059733292018-07-16 6:45:002257 days ago1531723500IN
 Create: TokenDB
0 ETH0.0065210210

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenDB

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-07-20
*/

pragma solidity 0.4.24;
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() );
        _;
    }
}
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 is Owned {
    /* Declarations */
    using SafeMath for uint256;
    /* Structures */
    struct balances_s {
        uint256 amount;
        bool valid;
    }
    /* Variables */
    mapping(address => mapping(address => uint256)) public allowance;
    mapping(address => balances_s) public balances;
    address public tokenAddress;
    address public oldDBAddress;
    /* Constructor */
    constructor(address _owner, address _tokenAddress, address _icoAddress, address _oldDBAddress) Owned(_owner) public {
        if ( _oldDBAddress == 0x00  && _icoAddress != 0x00 ) {
            balances[_icoAddress].amount = 44e16;
        }
        oldDBAddress = _oldDBAddress;
        tokenAddress = _tokenAddress;
    }
    /* Externals */
    function changeTokenAddress(address _tokenAddress) external forOwner {
        tokenAddress = _tokenAddress;
    }
    function transfer(address _from, address _to, uint256 _amount) external forToken returns(bool _success) {
        uint256 _senderBalance = _getBalance(_from);
        uint256 _receiverBalance = _getBalance(_to);
        balances[_from].amount = _senderBalance.sub(_amount);
        balances[_to].amount = _receiverBalance.add(_amount);
        return true;
    }
    function bulkTransfer(address _from, address[] _to, uint256[] _amount) external forToken returns(bool _success) {
        uint256 _senderBalance = _getBalance(_from);
        uint256 _receiverBalance;
        uint256 i;
        for ( i=0 ; i<_to.length ; i++ ) {
            _receiverBalance = _getBalance(_to[i]);
            _senderBalance = _senderBalance.sub(_amount[i]);
            balances[_to[i]].amount = _receiverBalance.add(_amount[i]);
        }
        balances[_from].amount = _senderBalance;
        return true;
    }
    function setAllowance(address _owner, address _spender, uint256 _amount) external forToken returns(bool _success) {
        allowance[_owner][_spender] = _amount;
        return true;
    }
    /* Constants */
    function getAllowance(address _owner, address _spender) public view returns(bool _success, uint256 _remaining) {
        return ( true, allowance[_owner][_spender] );
    }
    function balanceOf(address _owner) public view returns(bool _success, uint256 _balance) {
        return ( true, _getBalance(_owner) );
    }
    /* Internals */
    function _getBalance(address _owner) internal returns(uint256 _balance) {
        if ( ( ! balances[_owner].valid ) && oldDBAddress != 0x00 ) {
            bool _subResult;
            ( _subResult, _balance ) = TokenDB(oldDBAddress).balanceOf(_owner);
            balances[_owner].amount = _balance;
            balances[_owner].valid = true;
        }
        return balances[_owner].amount;
    }
    /* Modifiers */
    modifier forToken {
        require( msg.sender == tokenAddress );
        _;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"getAllowance","outputs":[{"name":"_success","type":"bool"},{"name":"_remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"amount","type":"uint256"},{"name":"valid","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"_success","type":"bool"},{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oldDBAddress","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":"tokenAddress","outputs":[{"name":"","type":"address"}],"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":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"changeTokenAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"setAllowance","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"bulkTransfer","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_tokenAddress","type":"address"},{"name":"_icoAddress","type":"address"},{"name":"_oldDBAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

608060405260008054600160a060020a0319163317905534801561002257600080fd5b50604051608080610876833981016040908152815160208301519183015160609093015190929083600160a060020a038116151561005d5750335b60008054600160a060020a031916600160a060020a0392831617905581161580156100905750600160a060020a03821615155b156100b957600160a060020a038216600090815260026020526040902067061b31ab352c000090555b60048054600160a060020a03928316600160a060020a0319918216179091556003805494909216931692909217909155505061077c806100fa6000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630af4187d81146100be57806327e235e31461010057806370a082311461013a5780637e7dd5811461015b5780638da5cb5b1461018c5780639d76ea58146101a1578063a39a45b7146101b6578063beabacc8146101eb578063c9cda91f14610215578063da46098c14610238578063dd62ed3e14610262578063e886dade1461029b575b600080fd5b3480156100ca57600080fd5b506100e5600160a060020a03600435811690602435166102d4565b60408051921515835260208301919091528051918290030190f35b34801561010c57600080fd5b50610121600160a060020a0360043516610303565b6040805192835290151560208301528051918290030190f35b34801561014657600080fd5b506100e5600160a060020a036004351661031f565b34801561016757600080fd5b50610170610336565b60408051600160a060020a039092168252519081900360200190f35b34801561019857600080fd5b50610170610345565b3480156101ad57600080fd5b50610170610354565b3480156101c257600080fd5b506101d7600160a060020a0360043516610363565b604080519115158252519081900360200190f35b3480156101f757600080fd5b506101d7600160a060020a03600435811690602435166044356103aa565b34801561022157600080fd5b50610236600160a060020a036004351661043d565b005b34801561024457600080fd5b506101d7600160a060020a036004358116906024351660443561047f565b34801561026e57600080fd5b50610289600160a060020a03600435811690602435166104cb565b60408051918252519081900360200190f35b3480156102a757600080fd5b506101d760048035600160a060020a031690602480358082019290810135916044359081019101356104e8565b600160a060020a0380831660009081526001602081815260408084209486168452939052919020549250929050565b6002602052600090815260409020805460019091015460ff1682565b600080600161032d846105f8565b91509150915091565b600454600160a060020a031681565b600054600160a060020a031681565b600354600160a060020a031681565b600061036d61071f565b151561037857600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60035460009081908190600160a060020a031633146103c857600080fd5b6103d1866105f8565b91506103dc856105f8565b90506103ee828563ffffffff61073016565b600160a060020a038716600090815260026020526040902055610417818563ffffffff61074316565b600160a060020a0386166000908152600260205260409020556001925050509392505050565b61044561071f565b151561045057600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600090600160a060020a0316331461049957600080fd5b50600160a060020a03808416600090815260016020818152604080842094871684529390529190208290559392505050565b600160209081526000928352604080842090915290825290205481565b600354600090819081908190600160a060020a0316331461050857600080fd5b610511896105f8565b9250600090505b868110156105cd5761054488888381811061052f57fe5b90506020020135600160a060020a03166105f8565b915061056b86868381811061055557fe5b905060200201358461073090919063ffffffff16565b925061059286868381811061057c57fe5b905060200201358361074390919063ffffffff16565b600260008a8a858181106105a257fe5b60209081029290920135600160a060020a031683525081019190915260400160002055600101610518565b600160a060020a03891660009081526002602052604090208390556001935050505095945050505050565b600160a060020a038116600090815260026020526040812060010154819060ff161580156106305750600454600160a060020a031615155b156107025760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0387811694820194909452815193909216926370a082319260248082019392918290030181600087803b15801561069d57600080fd5b505af11580156106b1573d6000803e3d6000fd5b505050506040513d60408110156106c757600080fd5b508051602091820151600160a060020a0386166000908152600290935260409092208281556001908101805460ff1916909117905590925090505b5050600160a060020a031660009081526002602052604090205490565b600054600160a060020a0316331490565b8082038281111561073d57fe5b92915050565b8181018281101561073d57fe00a165627a7a7230582049ba5a569a4b434c1d0e1c1007364aedfee06dae6010f78c184a1354772f589e0029000000000000000000000000da8c0c6311ab6e43aa1c14967ad7abc6035b9596000000000000000000000000f784682c82526e245f50975190ef0fff4e4fc077000000000000000000000000578fa4ab3b27a94fe97bd52167f1b02da20d31e80000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630af4187d81146100be57806327e235e31461010057806370a082311461013a5780637e7dd5811461015b5780638da5cb5b1461018c5780639d76ea58146101a1578063a39a45b7146101b6578063beabacc8146101eb578063c9cda91f14610215578063da46098c14610238578063dd62ed3e14610262578063e886dade1461029b575b600080fd5b3480156100ca57600080fd5b506100e5600160a060020a03600435811690602435166102d4565b60408051921515835260208301919091528051918290030190f35b34801561010c57600080fd5b50610121600160a060020a0360043516610303565b6040805192835290151560208301528051918290030190f35b34801561014657600080fd5b506100e5600160a060020a036004351661031f565b34801561016757600080fd5b50610170610336565b60408051600160a060020a039092168252519081900360200190f35b34801561019857600080fd5b50610170610345565b3480156101ad57600080fd5b50610170610354565b3480156101c257600080fd5b506101d7600160a060020a0360043516610363565b604080519115158252519081900360200190f35b3480156101f757600080fd5b506101d7600160a060020a03600435811690602435166044356103aa565b34801561022157600080fd5b50610236600160a060020a036004351661043d565b005b34801561024457600080fd5b506101d7600160a060020a036004358116906024351660443561047f565b34801561026e57600080fd5b50610289600160a060020a03600435811690602435166104cb565b60408051918252519081900360200190f35b3480156102a757600080fd5b506101d760048035600160a060020a031690602480358082019290810135916044359081019101356104e8565b600160a060020a0380831660009081526001602081815260408084209486168452939052919020549250929050565b6002602052600090815260409020805460019091015460ff1682565b600080600161032d846105f8565b91509150915091565b600454600160a060020a031681565b600054600160a060020a031681565b600354600160a060020a031681565b600061036d61071f565b151561037857600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60035460009081908190600160a060020a031633146103c857600080fd5b6103d1866105f8565b91506103dc856105f8565b90506103ee828563ffffffff61073016565b600160a060020a038716600090815260026020526040902055610417818563ffffffff61074316565b600160a060020a0386166000908152600260205260409020556001925050509392505050565b61044561071f565b151561045057600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600354600090600160a060020a0316331461049957600080fd5b50600160a060020a03808416600090815260016020818152604080842094871684529390529190208290559392505050565b600160209081526000928352604080842090915290825290205481565b600354600090819081908190600160a060020a0316331461050857600080fd5b610511896105f8565b9250600090505b868110156105cd5761054488888381811061052f57fe5b90506020020135600160a060020a03166105f8565b915061056b86868381811061055557fe5b905060200201358461073090919063ffffffff16565b925061059286868381811061057c57fe5b905060200201358361074390919063ffffffff16565b600260008a8a858181106105a257fe5b60209081029290920135600160a060020a031683525081019190915260400160002055600101610518565b600160a060020a03891660009081526002602052604090208390556001935050505095945050505050565b600160a060020a038116600090815260026020526040812060010154819060ff161580156106305750600454600160a060020a031615155b156107025760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0387811694820194909452815193909216926370a082319260248082019392918290030181600087803b15801561069d57600080fd5b505af11580156106b1573d6000803e3d6000fd5b505050506040513d60408110156106c757600080fd5b508051602091820151600160a060020a0386166000908152600290935260409092208281556001908101805460ff1916909117905590925090505b5050600160a060020a031660009081526002602052604090205490565b600054600160a060020a0316331490565b8082038281111561073d57fe5b92915050565b8181018281101561073d57fe00a165627a7a7230582049ba5a569a4b434c1d0e1c1007364aedfee06dae6010f78c184a1354772f589e0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000da8c0c6311ab6e43aa1c14967ad7abc6035b9596000000000000000000000000f784682c82526e245f50975190ef0fff4e4fc077000000000000000000000000578fa4ab3b27a94fe97bd52167f1b02da20d31e80000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _owner (address): 0xda8c0c6311ab6E43aa1C14967ad7aBc6035B9596
Arg [1] : _tokenAddress (address): 0xF784682C82526e245F50975190EF0fff4E4fC077
Arg [2] : _icoAddress (address): 0x578FA4ab3B27A94fe97Bd52167F1B02dA20D31e8
Arg [3] : _oldDBAddress (address): 0x0000000000000000000000000000000000000000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000da8c0c6311ab6e43aa1c14967ad7abc6035b9596
Arg [1] : 000000000000000000000000f784682c82526e245f50975190ef0fff4e4fc077
Arg [2] : 000000000000000000000000578fa4ab3b27a94fe97bd52167f1b02da20d31e8
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000


Swarm Source

bzzr://49ba5a569a4b434c1d0e1c1007364aedfee06dae6010f78c184a1354772f589e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.