ETH Price: $3,243.11 (+1.46%)

Contract

0x47BA0689fbd72936749b007d18dFB75d34bF241B
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer186396212023-11-24 5:56:11423 days ago1700805371IN
0x47BA0689...d34bF241B
0 ETH0.0013963519.68856368
Transfer168585102023-03-19 1:29:35673 days ago1679189375IN
0x47BA0689...d34bF241B
0 ETH0.0004877713.24545914
Transfer168585092023-03-19 1:29:23673 days ago1679189363IN
0x47BA0689...d34bF241B
0 ETH0.0009348414.13558269
Transfer160119832022-11-20 15:00:59792 days ago1668956459IN
0x47BA0689...d34bF241B
0 ETH0.0010478114.77173281
Transfer160005622022-11-19 0:44:59794 days ago1668818699IN
0x47BA0689...d34bF241B
0 ETH0.0008417911.86731995
Transfer158378782022-10-27 7:19:59816 days ago1666855199IN
0x47BA0689...d34bF241B
0 ETH0.0008944813.52530749
Transfer155008362022-09-09 4:47:17864 days ago1662698837IN
0x47BA0689...d34bF241B
0 ETH0.0006975218.94734962
Transfer155008362022-09-09 4:47:17864 days ago1662698837IN
0x47BA0689...d34bF241B
0 ETH0.0007435311.24493972
Transfer139899182022-01-12 9:29:281104 days ago1641979768IN
0x47BA0689...d34bF241B
0 ETH0.0090763127.95421011
Transfer137943982021-12-13 3:21:491134 days ago1639365709IN
0x47BA0689...d34bF241B
0 ETH0.0029480860.12326752
Transfer137446442021-12-05 7:02:331142 days ago1638687753IN
0x47BA0689...d34bF241B
0 ETH0.0034347770.03175576
Approve136327742021-11-17 11:53:321160 days ago1637150012IN
0x47BA0689...d34bF241B
0 ETH0.0061774104.38865378
Transfer136182602021-11-15 4:35:401162 days ago1636950940IN
0x47BA0689...d34bF241B
0 ETH0.01001028151.36366489
Transfer135559692021-11-05 10:07:291172 days ago1636106849IN
0x47BA0689...d34bF241B
0 ETH0.00559063112.52611485
Transfer135559632021-11-05 10:06:001172 days ago1636106760IN
0x47BA0689...d34bF241B
0 ETH0.00448292112.52611485
Transfer135559532021-11-05 10:04:101172 days ago1636106650IN
0x47BA0689...d34bF241B
0 ETH0.00337522112.52611485
Transfer135515052021-11-04 17:15:381173 days ago1636046138IN
0x47BA0689...d34bF241B
0 ETH0.00321387107.14699403
Approve135069272021-10-28 16:54:481180 days ago1635440088IN
0x47BA0689...d34bF241B
0 ETH0.01399949236.56983727
Transfer134405362021-10-18 7:42:281190 days ago1634542948IN
0x47BA0689...d34bF241B
0 ETH0.0037048456
Transfer129211492021-07-29 14:13:251271 days ago1627568005IN
0x47BA0689...d34bF241B
0 ETH0.0018462133
Approve128177042021-07-13 8:24:441287 days ago1626164684IN
0x47BA0689...d34bF241B
0 ETH0.001826331
Transfer123788122021-05-06 5:08:081355 days ago1620277688IN
0x47BA0689...d34bF241B
0 ETH0.0020695537
Transfer121449072021-03-31 4:13:351391 days ago1617164015IN
0x47BA0689...d34bF241B
0 ETH0.00678049138
Transfer121448912021-03-31 4:09:491391 days ago1617163789IN
0x47BA0689...d34bF241B
0 ETH0.00413365138
Transfer119970742021-03-08 9:37:151414 days ago1615196235IN
0x47BA0689...d34bF241B
0 ETH0.00364285145.71428571
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MainContract

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-09-28
*/

pragma solidity ^0.4.1;

// File: contracts/OwnerValidator.sol

contract TokenContract {
    function totalSupply() constant returns (uint256 supply);
    function decimals() constant returns(uint8 units);
    function balanceOf(address _owner) constant returns (uint256 balance);
    function transfer(address _to, address _msgSender, uint256 _value) returns (bool success);
    function transferFrom(address _from, address _to, address _msgSender, uint256 _value) returns (bool success);
    function transferFromSender(address _to, uint256 _value) returns (bool success);
    function approve(address _spender, address _msgSender, uint256 _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);
}
contract OwnerValidator {
    function validate(address addr) constant returns (bool);
}

contract Owned {
    function ownerValidate(address addr) constant returns (bool);
    bool public isWorking;

    function Owned() {
        isWorking = true;
    }

    modifier onlyOwner {
        if (!ownerValidate(msg.sender)) throw;
        _;
    }

    modifier onlyWorking {
        if (!isWorking) throw;
        _;
    }

    modifier onlyNotWorking {
        if (isWorking) throw;
        _;
    }

    function setWorking(bool _isWorking) onlyOwner {
        isWorking = _isWorking;
    }
}

contract OwnerValidatorImpl is OwnerValidator, Owned {

    address[] public owners;


    TokenContract public tokenContract;

    function OwnerValidatorImpl() {
        owners.push(msg.sender);
    }


    function indexOfOwners(address _address) private constant returns (uint pos) {
        pos = 0;
        for (uint i = 0; i < owners.length; i++) {
            if (owners[i] == _address) {
                pos = i + 1;
                break;
            }
        }
        return pos;                
    }

    function validate(address addr) constant returns (bool) {
        return (indexOfOwners(addr) != 0);
    }
        
    function getOwners() constant returns (address[]) {
        return owners;
    } 

    function addOwner(address addr) onlyWorking {
        if (validate(msg.sender)) {
            if (!validate(addr)) {
                owners.push(addr);
            }
        }
    }

    function removeOwner(address addr) onlyWorking {
        if (validate(msg.sender)) {
            uint pos = indexOfOwners(addr);
            if (pos > 0) {
                owners[pos - 1] = 0x0;
            }
        }
    }

    function setTokenContract(address _tokenContract) onlyWorking {
        if (validate(msg.sender)) {
            tokenContract = TokenContract(_tokenContract);
        }
    }

    function ownerValidate(address addr) constant returns (bool) {
        return validate(addr);
    }

    function transferFromSender(address _to, uint256 _value) returns (bool success) {
        if (!validate(msg.sender)) throw;
        return tokenContract.transferFromSender(_to, _value);
    }

    function sendFromOwn(address _to, uint256 _value) returns (bool success) {
        if (!validate(msg.sender)) throw;
        if (!_to.send(_value)) throw;
        return true;
    }
}

// File: contracts/OffChainManager.sol

contract OffChainManager {
    function isToOffChainAddress(address addr) constant returns (bool);
    function getOffChainRootAddress() constant returns (address);
}

contract OffChainManagerImpl is OffChainManager, Owned {
    address public rootAddress;
    address[] public offChainAddreses;

    mapping (address => uint256) refOffChainAddresses; 

    OwnerValidator public ownerValidator;

    TokenContract public tokenContract;

    function OffChainManagerImpl(
        address _rootAddress,
        address _ownerValidator
    ) {
        rootAddress = _rootAddress;
        ownerValidator = OwnerValidator(_ownerValidator);
    }

    function setRootAddress(address _address) onlyWorking {
        if (ownerValidator.validate(msg.sender)) {
            rootAddress = _address;
        }
    }

    function setOwnerValidatorAddress(address _ownerValidator) onlyWorking {
        if (ownerValidator.validate(msg.sender)) {
            ownerValidator = OwnerValidator(_ownerValidator);
        }
    }

    function setTokenContract(address _tokenContract) {
        if (ownerValidator.validate(msg.sender)) {
            tokenContract = TokenContract(_tokenContract);
        }
    }

    function offChainAddresesValidCount() constant returns (uint) {
        uint cnt = 0;
        for (uint i = 0; i < offChainAddreses.length; i++) {
            if (offChainAddreses[i] != 0) {
                cnt++;
            }
        }
        return cnt;
    }

    function addOffChainAddress(address _address) private {
        if (!isToOffChainAddress(_address)) {
            offChainAddreses.push(_address);
            refOffChainAddresses[_address] = offChainAddreses.length;
        }
    }

    function removeOffChainAddress(address _address) private {
        uint pos = refOffChainAddresses[_address];
        if (pos > 0) {
            offChainAddreses[pos - 1] = 0;
            refOffChainAddresses[_address] = 0x0;
        }
    }

    function addOffChainAddresses(address[] _addresses) onlyWorking {
        if (ownerValidator.validate(msg.sender)) {
            for (uint i = 0; i < _addresses.length; i++) {
                addOffChainAddress(_addresses[i]);
            }
        }
    }

    function removeOffChainAddresses(address[] _addresses) onlyWorking {
        if (ownerValidator.validate(msg.sender)) {
            for (uint i = 0; i < _addresses.length; i++) {
                removeOffChainAddress(_addresses[i]);
            }
        }
    }

    function ownerValidate(address addr) constant returns (bool) {
        return ownerValidator.validate(addr);
    }

    function transferFromSender(address _to, uint256 _value) returns (bool success) {
        if (!ownerValidator.validate(msg.sender)) throw;
        return tokenContract.transferFromSender(_to, _value);
    }

    function sendFromOwn(address _to, uint256 _value) returns (bool success) {
        if (!ownerValidator.validate(msg.sender)) throw; 
        if (!_to.send(_value)) throw;
        return true;
    }

    function isToOffChainAddress(address addr) constant returns (bool) {
        return refOffChainAddresses[addr] > 0;
    }

    function getOffChainRootAddress() constant returns (address) {
        return rootAddress;
    }

    function getOffChainAddresses() constant returns (address[]) {
        return offChainAddreses;
    } 

    function isToOffChainAddresses(address[] _addresses) constant returns (bool) {
        for (uint i = 0; i < _addresses.length; i++) {
            if (!isToOffChainAddress(_addresses[i])) {
                return false;
            }
        }
        return true;
    }
}

// File: contracts/TokenContract.sol

library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant returns (uint256) {
// assert(b > 0);
    uint256 c = a / b;
// assert(a == b * c + a % b);
    return c;
  }

  function sub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract TokenContractImpl is TokenContract, Owned {
    using SafeMath for uint256;
    string public standard = "Token 0.1";
    uint256 _totalSupply;
    uint8 _decimals;
    address public _mainAddress;

    mapping (address => uint256) public balances;
    mapping (address => mapping (address => uint256)) public allowed;

    OwnerValidator public ownerValidator;
    OffChainManager public offChainManager;

    bool public isRedenominated;
    uint256 public redenomiValue;
    mapping (address => uint256) public redenominatedBalances;
    mapping (address => mapping (address => uint256)) public redenominatedAllowed;

    function TokenContractImpl(
        uint256 initialSupply,
        uint8 decimals,
        address _ownerValidator,
        address _offChainManager
    ){
        balances[msg.sender] = initialSupply;
        _totalSupply = initialSupply;
        _decimals = decimals;
        ownerValidator = OwnerValidator(_ownerValidator);
        offChainManager = OffChainManager(_offChainManager);
    }

    function totalSupply() constant returns (uint256 totalSupply) {
        if (isRedenominated) {
            return redenominatedValue(_totalSupply);
        }
        return _totalSupply;
    }

    function decimals() constant returns (uint8 decimals) {
        return _decimals;
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        if (isRedenominated) {
            if (redenominatedBalances[_owner] > 0) {
                return redenominatedBalances[_owner];
            }
            return redenominatedValue(balances[_owner]);
        }
        return balances[_owner];
    }

    function allowance(address _owner, address _spender) constant returns (uint remaining) {
        if (isRedenominated) {
            if (redenominatedAllowed[_owner][_spender] > 0) {
                return redenominatedAllowed[_owner][_spender];
            }
            return redenominatedValue(allowed[_owner][_spender]);
        }
        return allowed[_owner][_spender];
    }

    function redenominatedValue(uint256 _value) private returns (uint256) {
        return _value.mul(redenomiValue);
    }

    function ownerValidate(address addr) constant returns (bool) {
        return ownerValidator.validate(addr);
    }


    function redenominate(uint256 _redenomiValue) {
        if (isRedenominated) throw;
        if (ownerValidator.validate(msg.sender)) {
            redenomiValue = _redenomiValue;
            Redenominate(msg.sender, isRedenominated, redenomiValue);
        }
    }   


    function applyRedenomination() onlyNotWorking {
        if (isRedenominated) throw;
        if (redenomiValue == 0) throw;
        if (ownerValidator.validate(msg.sender)) {
            isRedenominated = true;
            ApplyRedenomination(msg.sender, isRedenominated, redenomiValue);
        }
    }   

    function setOwnerValidatorAddress(address _ownerValidator) onlyWorking {
        if (ownerValidator.validate(msg.sender)) {
            ownerValidator = OwnerValidator(_ownerValidator);
        }
    }

    function setOffChainManagerAddress(address _offChainManager) onlyWorking {
        if (ownerValidator.validate(msg.sender)) {
            offChainManager = OffChainManager(_offChainManager);
        }
    }

    function transfer(address _to, address _msgSender, uint256 _value) onlyWorking returns (bool success) {
        if (msg.sender != _mainAddress) throw; 
        return transferProcess(_msgSender, _to, _value);
    }

    function transferProcess(address _from, address _to, uint256 _value) private returns (bool success) {
        if (balanceOf(_from) < _value) throw;
        subtractBalance(_from, _value);
        if (offChainManager.isToOffChainAddress(_to)) {
            addBalance(offChainManager.getOffChainRootAddress(), _value);
            ToOffChainTransfer(_from, _to, _to, _value);
        } else {
            addBalance(_to, _value);
        }
        return true;        
    }

    function addBalance(address _address, uint256 _value) private {
        if (isRedenominated) {
            if (redenominatedBalances[_address] == 0) {
                if (balances[_address] > 0) {
                    redenominatedBalances[_address] = redenominatedValue(balances[_address]);
                    balances[_address] = 0;
                }
            }
            redenominatedBalances[_address] = redenominatedBalances[_address].add(_value);
        } else {
            balances[_address] = balances[_address].add(_value);
        }
    }

    function subtractBalance(address _address, uint256 _value) private {
        if (isRedenominated) {
            if (redenominatedBalances[_address] == 0) {
                if (balances[_address] > 0) {
                    redenominatedBalances[_address] = redenominatedValue(balances[_address]);
                    balances[_address] = 0;
                }
            }
            redenominatedBalances[_address] = redenominatedBalances[_address].sub(_value);
        } else {
            balances[_address] = balances[_address].sub(_value);
        }
    }

    function transferFrom(address _from, address _to, address _msgSender, uint256 _value) onlyWorking returns (bool success) {
        if (msg.sender != _mainAddress) throw; 
        if (balanceOf(_from) < _value) throw;
        if (balanceOf(_to).add(_value) < balanceOf(_to)) throw;
        if (_value > allowance(_from, _msgSender)) throw;
        subtractBalance(_from, _value);
        if (offChainManager.isToOffChainAddress(_to)) {
            addBalance(offChainManager.getOffChainRootAddress(), _value);
            ToOffChainTransfer(_msgSender, _to, _to, _value);
        } else {
            addBalance(_to, _value);
        }
        subtractAllowed(_from, _msgSender, _value);
        return true;
    }


    function transferFromSender(address _to, uint256 _value) onlyWorking returns (bool success) {
        if (!transferProcess(msg.sender, _to, _value)) throw;
        TransferFromSender(msg.sender, _to, _value);
        return true;
    }


    function transferFromOwn(address _to, uint256 _value) onlyWorking returns (bool success) {
        if (!ownerValidator.validate(msg.sender)) throw;
        if (!transferProcess(this, _to, _value)) throw;
        TransferFromSender(this, _to, _value);    
        return true;
    }

    function sendFromOwn(address _to, uint256 _value) returns (bool success) {
        if (!ownerValidator.validate(msg.sender)) throw; 
        if (!_to.send(_value)) throw;
        return true;
    }

    function approve(address _spender, address _msgSender, uint256 _value) onlyWorking returns (bool success) {
        if (msg.sender != _mainAddress) throw; 
        setAllowed(_msgSender, _spender, _value);
        return true;
    }

    function subtractAllowed(address _from, address _spender, uint256 _value) private {
        if (isRedenominated) {
            if (redenominatedAllowed[_from][_spender] == 0) {
                if (allowed[_from][_spender] > 0) {
                    redenominatedAllowed[_from][_spender] = redenominatedValue(allowed[_from][_spender]);
                    allowed[_from][_spender] = 0;
                }
            }
            redenominatedAllowed[_from][_spender] = redenominatedAllowed[_from][_spender].sub(_value);
        } else {
            allowed[_from][_spender] = allowed[_from][_spender].sub(_value);
        }
    }

    function setAllowed(address _owner, address _spender, uint256 _value) private {
        if (isRedenominated) {
            redenominatedAllowed[_owner][_spender] = _value;
        } else {
            allowed[_owner][_spender] = _value;
        }
    }

    function setMainAddress(address _address) onlyOwner {
        _mainAddress = _address;
    }

    event TransferFromSender(address indexed _from, address indexed _to, uint256 _value);
    event ToOffChainTransfer(address indexed _from, address indexed _toKey, address _to, uint256 _value);
    event Redenominate(address _owner, bool _isRedenominated, uint256 _redenomiVakye);
    event ApplyRedenomination(address _owner, bool _isRedenominated, uint256 _redenomiVakye);
}

// File: contracts/MainContract.sol

contract MainContract {
    string public standard = "Token 0.1";
    string public name;
    string public symbol;

    OwnerValidator public ownerValidator;
    TokenContract public tokenContract;

    function MainContract(
        string _tokenName,
        address _ownerValidator,
        address _tokenContract,
        string _symbol
    ) {
        ownerValidator = OwnerValidator(_ownerValidator);
        tokenContract = TokenContract(_tokenContract);
        name = _tokenName;
        symbol = _symbol;
    }

    function totalSupply() constant returns(uint256 totalSupply) {
        return tokenContract.totalSupply();
    }

    function decimals() constant returns(uint8 decimals) {
        return tokenContract.decimals();
    }

    function setOwnerValidateAddress(address _ownerValidator) {
        if (ownerValidator.validate(msg.sender)) {
            ownerValidator = OwnerValidator(_ownerValidator);
        }
    }

    function setTokenContract(address _tokenContract) {
        if (ownerValidator.validate(msg.sender)) {
            tokenContract = TokenContract(_tokenContract);
        }
    }

    function transferFromSender(address _to, uint256 _value) returns (bool success) {
        if (!ownerValidator.validate(msg.sender)) throw;
        return tokenContract.transferFromSender(_to, _value);
    }

    function sendFromOwn(address _to, uint256 _value) returns (bool success) {
        if (!ownerValidator.validate(msg.sender)) throw; 
        if (!_to.send(_value)) throw;
        return true;
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return uint256(tokenContract.balanceOf(_owner));
    }

    function transfer(address _to, uint256 _value) returns (bool success) {
        if (tokenContract.transfer(_to, msg.sender, _value)) {
            Transfer(msg.sender, _to, _value);
            return true;
        } else {
            throw;
        }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        if (tokenContract.transferFrom(_from, _to, msg.sender, _value)) {
            Transfer(_from, _to, _value);
            return true;
        } else {
            throw;
        }
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        if (tokenContract.approve(_spender,msg.sender,_value)) {
            Approval(msg.sender,_spender,_value);
            return true;
        } else {
            throw;
        }
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
        return tokenContract.allowance(_owner,_spender);
    }

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

Contract Security Audit

Contract ABI

[{"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":true,"inputs":[],"name":"decimals","outputs":[{"name":"decimals","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ownerValidator","type":"address"}],"name":"setOwnerValidateAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"","type":"string"}],"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":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"sendFromOwn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFromSender","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"setTokenContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerValidator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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"},{"inputs":[{"name":"_tokenName","type":"string"},{"name":"_ownerValidator","type":"address"},{"name":"_tokenContract","type":"address"},{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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"}]

60c0604052600960808190527f546f6b656e20302e31000000000000000000000000000000000000000000000060a090815261003e91600091906100dc565b5034801561004b57600080fd5b50604051610eac380380610eac833981016040908152815160208084015192840151606085015160038054600160a060020a03808816600160a060020a0319928316179092556004805492851692909116919091179055928501805190959193909101916100be916001918701906100dc565b5080516100d29060029060208401906100dc565b5050505050610177565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061011d57805160ff191683800117855561014a565b8280016001018555821561014a579182015b8281111561014a57825182559160200191906001019061012f565b5061015692915061015a565b5090565b61017491905b808211156101565760008155600101610160565b90565b610d26806101866000396000f3006080604052600436106100cc5763ffffffff60e060020a60003504166306fdde0381146100d1578063095ea7b31461015b57806318160ddd1461019357806323b872dd146101ba578063313ce567146101e457806350e86e1e1461020f57806355a373d6146102325780635a3b7e421461026357806370a08231146102785780637e6216671461029957806395d89b41146102bd578063a9059cbb146102d2578063bae804a7146102f6578063bbcd5bbe1461031a578063d2d5a55c1461033b578063dd62ed3e14610350575b600080fd5b3480156100dd57600080fd5b506100e6610377565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016757600080fd5b5061017f600160a060020a0360043516602435610404565b604080519115158252519081900360200190f35b34801561019f57600080fd5b506101a86104f9565b60408051918252519081900360200190f35b3480156101c657600080fd5b5061017f600160a060020a036004358116906024351660443561057f565b3480156101f057600080fd5b506101f9610687565b6040805160ff9092168252519081900360200190f35b34801561021b57600080fd5b50610230600160a060020a03600435166106dc565b005b34801561023e57600080fd5b50610247610789565b60408051600160a060020a039092168252519081900360200190f35b34801561026f57600080fd5b506100e6610798565b34801561028457600080fd5b506101a8600160a060020a03600435166107f3565b3480156102a557600080fd5b5061017f600160a060020a0360043516602435610892565b3480156102c957600080fd5b506100e6610951565b3480156102de57600080fd5b5061017f600160a060020a03600435166024356109a9565b34801561030257600080fd5b5061017f600160a060020a0360043516602435610a9c565b34801561032657600080fd5b50610230600160a060020a0360043516610bc8565b34801561034757600080fd5b50610247610c76565b34801561035c57600080fd5b506101a8600160a060020a0360043581169060243516610c85565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fc5780601f106103d1576101008083540402835291602001916103fc565b820191906000526020600020905b8154815290600101906020018083116103df57829003601f168201915b505050505081565b60048054604080517fe1f21c67000000000000000000000000000000000000000000000000000000008152600160a060020a03868116948201949094523360248201526044810185905290516000939092169163e1f21c679160648082019260209290919082900301818787803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050506040513d60208110156104a857600080fd5b5051156100cc57604080518381529051600160a060020a0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360200190a35060015b92915050565b6000600460009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561054e57600080fd5b505af1158015610562573d6000803e3d6000fd5b505050506040513d602081101561057857600080fd5b5051905090565b60048054604080517f15dacbea000000000000000000000000000000000000000000000000000000008152600160a060020a03878116948201949094528584166024820152336044820152606481018590529051600093909216916315dacbea9160848082019260209290919082900301818787803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b505050506040513d602081101561062b57600080fd5b5051156100cc5782600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35060019392505050565b6000600460009054906101000a9004600160a060020a0316600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561054e57600080fd5b6003546040805160e060020a63207c64fb0281523360048201529051600160a060020a039092169163207c64fb916024808201926020929091908290030181600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b505050506040513d602081101561075657600080fd5b505115610786576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b600454600160a060020a031681565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fc5780601f106103d1576101008083540402835291602001916103fc565b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03858116948201949094529051600093909216916370a082319160248082019260209290919082900301818787803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d602081101561088a57600080fd5b505192915050565b6003546040805160e060020a63207c64fb0281523360048201529051600092600160a060020a03169163207c64fb91602480830192602092919082900301818787803b1580156108e157600080fd5b505af11580156108f5573d6000803e3d6000fd5b505050506040513d602081101561090b57600080fd5b5051151561091857600080fd5b604051600160a060020a0384169083156108fc029084906000818181858888f19350505050151561094857600080fd5b50600192915050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156103fc5780601f106103d1576101008083540402835291602001916103fc565b60048054604080517fbeabacc8000000000000000000000000000000000000000000000000000000008152600160a060020a03868116948201949094523360248201526044810185905290516000939092169163beabacc89160648082019260209290919082900301818787803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b5051156100cc57604080518381529051600160a060020a0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35060016104f3565b6003546040805160e060020a63207c64fb0281523360048201529051600092600160a060020a03169163207c64fb91602480830192602092919082900301818787803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050506040513d6020811015610b1557600080fd5b50511515610b2257600080fd5b60048054604080517fbae804a7000000000000000000000000000000000000000000000000000000008152600160a060020a0387811694820194909452602481018690529051929091169163bae804a7916044808201926020929091908290030181600087803b158015610b9557600080fd5b505af1158015610ba9573d6000803e3d6000fd5b505050506040513d6020811015610bbf57600080fd5b50519392505050565b6003546040805160e060020a63207c64fb0281523360048201529051600160a060020a039092169163207c64fb916024808201926020929091908290030181600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050506040513d6020811015610c4257600080fd5b5051156107865760048054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600354600160a060020a031681565b60048054604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a0386811694820194909452848416602482015290516000939092169163dd62ed3e9160448082019260209290919082900301818787803b158015610b9557600080fd00a165627a7a723058206acf518e718535a435a0ec953e858465b7bbf424b07f0e5c9702091e19d7931b0029000000000000000000000000000000000000000000000000000000000000008000000000000000000000000057bfdc2f6142f5388d697fd44fa79435b9ce144c0000000000000000000000005ab29bff32e9d910a6319a761837612d467a2d4000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000084e4147455a454e4900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034e5a450000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100cc5763ffffffff60e060020a60003504166306fdde0381146100d1578063095ea7b31461015b57806318160ddd1461019357806323b872dd146101ba578063313ce567146101e457806350e86e1e1461020f57806355a373d6146102325780635a3b7e421461026357806370a08231146102785780637e6216671461029957806395d89b41146102bd578063a9059cbb146102d2578063bae804a7146102f6578063bbcd5bbe1461031a578063d2d5a55c1461033b578063dd62ed3e14610350575b600080fd5b3480156100dd57600080fd5b506100e6610377565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016757600080fd5b5061017f600160a060020a0360043516602435610404565b604080519115158252519081900360200190f35b34801561019f57600080fd5b506101a86104f9565b60408051918252519081900360200190f35b3480156101c657600080fd5b5061017f600160a060020a036004358116906024351660443561057f565b3480156101f057600080fd5b506101f9610687565b6040805160ff9092168252519081900360200190f35b34801561021b57600080fd5b50610230600160a060020a03600435166106dc565b005b34801561023e57600080fd5b50610247610789565b60408051600160a060020a039092168252519081900360200190f35b34801561026f57600080fd5b506100e6610798565b34801561028457600080fd5b506101a8600160a060020a03600435166107f3565b3480156102a557600080fd5b5061017f600160a060020a0360043516602435610892565b3480156102c957600080fd5b506100e6610951565b3480156102de57600080fd5b5061017f600160a060020a03600435166024356109a9565b34801561030257600080fd5b5061017f600160a060020a0360043516602435610a9c565b34801561032657600080fd5b50610230600160a060020a0360043516610bc8565b34801561034757600080fd5b50610247610c76565b34801561035c57600080fd5b506101a8600160a060020a0360043581169060243516610c85565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fc5780601f106103d1576101008083540402835291602001916103fc565b820191906000526020600020905b8154815290600101906020018083116103df57829003601f168201915b505050505081565b60048054604080517fe1f21c67000000000000000000000000000000000000000000000000000000008152600160a060020a03868116948201949094523360248201526044810185905290516000939092169163e1f21c679160648082019260209290919082900301818787803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b505050506040513d60208110156104a857600080fd5b5051156100cc57604080518381529051600160a060020a0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360200190a35060015b92915050565b6000600460009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561054e57600080fd5b505af1158015610562573d6000803e3d6000fd5b505050506040513d602081101561057857600080fd5b5051905090565b60048054604080517f15dacbea000000000000000000000000000000000000000000000000000000008152600160a060020a03878116948201949094528584166024820152336044820152606481018590529051600093909216916315dacbea9160848082019260209290919082900301818787803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b505050506040513d602081101561062b57600080fd5b5051156100cc5782600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35060019392505050565b6000600460009054906101000a9004600160a060020a0316600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561054e57600080fd5b6003546040805160e060020a63207c64fb0281523360048201529051600160a060020a039092169163207c64fb916024808201926020929091908290030181600087803b15801561072c57600080fd5b505af1158015610740573d6000803e3d6000fd5b505050506040513d602081101561075657600080fd5b505115610786576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b600454600160a060020a031681565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103fc5780601f106103d1576101008083540402835291602001916103fc565b60048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03858116948201949094529051600093909216916370a082319160248082019260209290919082900301818787803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d602081101561088a57600080fd5b505192915050565b6003546040805160e060020a63207c64fb0281523360048201529051600092600160a060020a03169163207c64fb91602480830192602092919082900301818787803b1580156108e157600080fd5b505af11580156108f5573d6000803e3d6000fd5b505050506040513d602081101561090b57600080fd5b5051151561091857600080fd5b604051600160a060020a0384169083156108fc029084906000818181858888f19350505050151561094857600080fd5b50600192915050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156103fc5780601f106103d1576101008083540402835291602001916103fc565b60048054604080517fbeabacc8000000000000000000000000000000000000000000000000000000008152600160a060020a03868116948201949094523360248201526044810185905290516000939092169163beabacc89160648082019260209290919082900301818787803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b5051156100cc57604080518381529051600160a060020a0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35060016104f3565b6003546040805160e060020a63207c64fb0281523360048201529051600092600160a060020a03169163207c64fb91602480830192602092919082900301818787803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050506040513d6020811015610b1557600080fd5b50511515610b2257600080fd5b60048054604080517fbae804a7000000000000000000000000000000000000000000000000000000008152600160a060020a0387811694820194909452602481018690529051929091169163bae804a7916044808201926020929091908290030181600087803b158015610b9557600080fd5b505af1158015610ba9573d6000803e3d6000fd5b505050506040513d6020811015610bbf57600080fd5b50519392505050565b6003546040805160e060020a63207c64fb0281523360048201529051600160a060020a039092169163207c64fb916024808201926020929091908290030181600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050506040513d6020811015610c4257600080fd5b5051156107865760048054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600354600160a060020a031681565b60048054604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a0386811694820194909452848416602482015290516000939092169163dd62ed3e9160448082019260209290919082900301818787803b158015610b9557600080fd00a165627a7a723058206acf518e718535a435a0ec953e858465b7bbf424b07f0e5c9702091e19d7931b0029

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000057bfdc2f6142f5388d697fd44fa79435b9ce144c0000000000000000000000005ab29bff32e9d910a6319a761837612d467a2d4000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000084e4147455a454e4900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034e5a450000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenName (string): NAGEZENI
Arg [1] : _ownerValidator (address): 0x57bFDc2F6142f5388D697fd44FA79435b9CE144C
Arg [2] : _tokenContract (address): 0x5ab29bFF32e9d910A6319A761837612D467a2D40
Arg [3] : _symbol (string): NZE

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000057bfdc2f6142f5388d697fd44fa79435b9ce144c
Arg [2] : 0000000000000000000000005ab29bff32e9d910a6319a761837612d467a2d40
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 4e4147455a454e49000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 4e5a450000000000000000000000000000000000000000000000000000000000


Swarm Source

bzzr://6acf518e718535a435a0ec953e858465b7bbf424b07f0e5c9702091e19d7931b

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.