ETH Price: $3,013.12 (-4.62%)
Gas: 68 Gwei

Contract

0x70861e862E1Ac0C96f853C8231826e469eAd37B1
 
Transaction Hash
Method
Block
From
To
Value
Approve187904392023-12-15 8:50:35137 days ago1702630235IN
DOS Network Token
0 ETH0.0010289142.31800199
Approve187904372023-12-15 8:50:11137 days ago1702630211IN
DOS Network Token
0 ETH0.0010215242.01395063
Approve187904342023-12-15 8:49:35137 days ago1702630175IN
DOS Network Token
0 ETH0.0010722644.1007146
Transfer176557382023-07-09 11:05:11296 days ago1688900711IN
DOS Network Token
0 ETH0.0010490843.35779322
Transfer156812532022-10-05 10:16:59573 days ago1664965019IN
DOS Network Token
0 ETH0.000149436.12456833
Transfer156812462022-10-05 10:15:35573 days ago1664964935IN
DOS Network Token
0 ETH0.00014826.07404059
Transfer155590842022-09-18 7:56:23590 days ago1663487783IN
DOS Network Token
0 ETH0.000073163
Transfer137982162021-12-13 17:26:40868 days ago1639416400IN
DOS Network Token
0 ETH0.0023558296.55027646
Transfer137859282021-12-11 20:08:40870 days ago1639253320IN
DOS Network Token
0 ETH0.0016746969.28244865
Transfer134495772021-10-19 17:44:20923 days ago1634665460IN
DOS Network Token
0 ETH0.0017097770.66364843
Transfer126259592021-06-13 11:47:481051 days ago1623584868IN
DOS Network Token
0 ETH0.0001225
Transfer126129152021-06-11 11:12:421054 days ago1623409962IN
DOS Network Token
0 ETH0.00019528
Transfer123667192021-05-04 8:33:371092 days ago1620117217IN
DOS Network Token
0 ETH0.0008792636
Transfer123468142021-05-01 7:00:361095 days ago1619852436IN
DOS Network Token
0 ETH0.00036615
Transfer123453532021-05-01 1:27:401095 days ago1619832460IN
DOS Network Token
0 ETH0.00073230
Transfer123248652021-04-27 21:23:321098 days ago1619558612IN
DOS Network Token
0 ETH0.0012944753.00000134
Transfer122879262021-04-22 4:43:061104 days ago1619066586IN
DOS Network Token
0 ETH0.00246952101.21
Transfer122407322021-04-14 21:53:271111 days ago1618437207IN
DOS Network Token
0 ETH0.0023112100
Transfer122407002021-04-14 21:47:331111 days ago1618436853IN
DOS Network Token
0 ETH0.0092448400
Transfer119716192021-03-04 11:51:531152 days ago1614858713IN
DOS Network Token
0 ETH0.0018489680.00000145
Transfer116790522021-01-18 11:41:531197 days ago1610970113IN
DOS Network Token
0 ETH0.0008389636.30000014
Approve116259922021-01-10 8:27:191206 days ago1610267239IN
DOS Network Token
0 ETH0.0012887856.00000145
Transfer116131122021-01-08 9:01:551208 days ago1610096515IN
DOS Network Token
0 ETH0.00239209103.5
Transfer116094452021-01-07 19:33:321208 days ago1610048012IN
DOS Network Token
0 ETH0.0035946155.53
Transfer116089922021-01-07 17:41:471208 days ago1610041307IN
DOS Network Token
0 ETH0.001455363.00000112
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:
DOSToken

Compiler Version
v0.5.4+commit.9549d8ff

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-03-11
*/

pragma solidity >=0.5.0 <0.6.0;

/// @dev The token controller contract must implement these functions
contract TokenController {
    /// @notice Notifies the controller about a token transfer allowing the
    ///  controller to react if desired
    /// @param _from The origin of the transfer
    /// @param _fromBalance Original token balance of _from address
    /// @param _amount The amount of the transfer
    /// @return The adjusted transfer amount filtered by a specific token controller.
    function onTokenTransfer(address _from, uint _fromBalance, uint _amount) public returns(uint);
}


contract DSAuthority {
    function canCall(
        address src, address dst, bytes4 sig
    ) public view returns (bool);
}

contract DSAuthEvents {
    event LogSetAuthority (address indexed authority);
    event LogSetOwner     (address indexed owner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority  public  authority;
    address      public  owner;

    constructor() public {
        owner = msg.sender;
        emit LogSetOwner(msg.sender);
    }

    function setOwner(address owner_)
        public
        auth
    {
        owner = owner_;
        emit LogSetOwner(owner);
    }

    function setAuthority(DSAuthority authority_)
        public
        auth
    {
        authority = authority_;
        emit LogSetAuthority(address(authority));
    }

    modifier auth {
        require(isAuthorized(msg.sender, msg.sig), "ds-auth-unauthorized");
        _;
    }

    function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == DSAuthority(0)) {
            return false;
        } else {
            return authority.canCall(src, address(this), sig);
        }
    }
}


contract DSNote {
    event LogNote(
        bytes4   indexed  sig,
        address  indexed  guy,
        bytes32  indexed  foo,
        bytes32  indexed  bar,
        uint256           wad,
        bytes             fax
    ) anonymous;

    modifier note {
        bytes32 foo;
        bytes32 bar;
        uint256 wad;

        assembly {
            foo := calldataload(4)
            bar := calldataload(36)
            wad := callvalue
        }

        emit LogNote(msg.sig, msg.sender, foo, bar, wad, msg.data);

        _;
    }
}


contract ERC20 {
    function totalSupply() public view returns (uint supply);
    function balanceOf( address who ) public view returns (uint value);
    function allowance( address owner, address spender ) public view returns (uint _allowance);

    function transfer( address to, uint value) public returns (bool ok);
    function transferFrom( address from, address to, uint value) public returns (bool ok);
    function approve( address spender, uint value) public returns (bool ok);

    event Transfer( address indexed from, address indexed to, uint value);
    event Approval( address indexed owner, address indexed spender, uint value);
}





contract DSMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }
    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }
    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
    }

    function min(uint x, uint y) internal pure returns (uint z) {
        return x <= y ? x : y;
    }
    function max(uint x, uint y) internal pure returns (uint z) {
        return x >= y ? x : y;
    }
    function imin(int x, int y) internal pure returns (int z) {
        return x <= y ? x : y;
    }
    function imax(int x, int y) internal pure returns (int z) {
        return x >= y ? x : y;
    }

    uint constant WAD = 10 ** 18;
    uint constant RAY = 10 ** 27;

    function wmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), WAD / 2) / WAD;
    }
    function rmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), RAY / 2) / RAY;
    }
    function wdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, WAD), y / 2) / y;
    }
    function rdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, RAY), y / 2) / y;
    }

    // This famous algorithm is called "exponentiation by squaring"
    // and calculates x^n with x as fixed-point and n as regular unsigned.
    //
    // It's O(log n), instead of O(n) for naive repeated multiplication.
    //
    // These facts are why it works:
    //
    //  If n is even, then x^n = (x^2)^(n/2).
    //  If n is odd,  then x^n = x * x^(n-1),
    //   and applying the equation for even x gives
    //    x^n = x * (x^2)^((n-1) / 2).
    //
    //  Also, EVM division is flooring and
    //    floor[(n-1) / 2] = floor[n / 2].
    //
    function rpow(uint x, uint n) internal pure returns (uint z) {
        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rmul(x, x);

            if (n % 2 != 0) {
                z = rmul(z, x);
            }
        }
    }
}






contract DSStop is DSNote, DSAuth {
    bool public stopped;

    modifier stoppable {
        require(!stopped, "ds-stop-is-stopped");
        _;
    }
    function stop() public auth note {
        stopped = true;
    }
    function start() public auth note {
        stopped = false;
    }
}



contract Managed {
    /// @notice The address of the manager is the only address that can call
    ///  a function with this modifier
    modifier onlyManager { require(msg.sender == manager); _; }

    address public manager;

    constructor() public { manager = msg.sender;}

    /// @notice Changes the manager of the contract
    /// @param _newManager The new manager of the contract
    function changeManager(address _newManager) public onlyManager {
        manager = _newManager;
    }
    
    /// @dev Internal function to determine if an address is a contract
    /// @param _addr The address being queried
    /// @return True if `_addr` is a contract
    function isContract(address _addr) view internal returns(bool) {
        uint size = 0;
        assembly {
            size := extcodesize(_addr)
        }
        return size > 0;
    }
}






contract ControllerManager is DSAuth {
    address[] public controllers;
    
    function addController(address _ctrl) public auth {
        require(_ctrl != address(0));
        controllers.push(_ctrl);
    }
    
    function removeController(address _ctrl) public auth {
        for (uint idx = 0; idx < controllers.length; idx++) {
            if (controllers[idx] == _ctrl) {
                controllers[idx] = controllers[controllers.length - 1];
                controllers.length -= 1;
                return;
            }
        }
    }
    
    // Return the adjusted transfer amount after being filtered by all token controllers.
    function onTransfer(address _from, uint _fromBalance, uint _amount) public returns(uint) {
        uint adjustedAmount = _amount;
        for (uint i = 0; i < controllers.length; i++) {
            adjustedAmount = TokenController(controllers[i]).onTokenTransfer(_from, _fromBalance, adjustedAmount);
            require(adjustedAmount <= _amount, "TokenController-isnot-allowed-to-lift-transfer-amount");
            if (adjustedAmount == 0) return 0;
        }
        return adjustedAmount;
    }
}


contract DOSToken is ERC20, DSMath, DSStop, Managed {
    string public constant name = 'DOS Network Token';
    string public constant symbol = 'DOS';
    uint256 public constant decimals = 18;
    uint256 private constant MAX_SUPPLY = 1e9 * 1e18; // 1 billion total supply
    uint256 private _supply = MAX_SUPPLY;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256))  _approvals;
    
    constructor() public {
        _balances[msg.sender] = _supply;
        emit Transfer(address(0), msg.sender, _supply);
    }

    function totalSupply() public view returns (uint) {
        return _supply;
    }
    
    function balanceOf(address src) public view returns (uint) {
        return _balances[src];
    }
    
    function allowance(address src, address guy) public view returns (uint) {
        return _approvals[src][guy];
    }

    function transfer(address dst, uint wad) public returns (bool) {
        return transferFrom(msg.sender, dst, wad);
    }

    function transferFrom(address src, address dst, uint wad) public stoppable returns (bool) {
        require(_balances[src] >= wad, "token-insufficient-balance");

        // Adjust token transfer amount if necessary.
        if (isContract(manager)) {
            wad = ControllerManager(manager).onTransfer(src, _balances[src], wad);
            require(wad > 0, "transfer-disabled-by-ControllerManager");
        }

        if (src != msg.sender && _approvals[src][msg.sender] != uint(-1)) {
            require(_approvals[src][msg.sender] >= wad, "token-insufficient-approval");
            _approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
        }

        _balances[src] = sub(_balances[src], wad);
        _balances[dst] = add(_balances[dst], wad);

        emit Transfer(src, dst, wad);

        return true;
    }

    function approve(address guy) public stoppable returns (bool) {
        return approve(guy, uint(-1));
    }

    function approve(address guy, uint wad) public stoppable returns (bool) {
        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_guy, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((wad == 0) || (_approvals[msg.sender][guy] == 0));
        
        _approvals[msg.sender][guy] = wad;

        emit Approval(msg.sender, guy, wad);

        return true;
    }

    function burn(uint wad) public {
        burn(msg.sender, wad);
    }
    
    function mint(address guy, uint wad) public auth stoppable {
        _balances[guy] = add(_balances[guy], wad);
        _supply = add(_supply, wad);
        require(_supply <= MAX_SUPPLY, "Total supply overflow");
        emit Transfer(address(0), guy, wad);
    }
    
    function burn(address guy, uint wad) public auth stoppable {
        if (guy != msg.sender && _approvals[guy][msg.sender] != uint(-1)) {
            require(_approvals[guy][msg.sender] >= wad, "token-insufficient-approval");
            _approvals[guy][msg.sender] = sub(_approvals[guy][msg.sender], wad);
        }

        require(_balances[guy] >= wad, "token-insufficient-balance");
        _balances[guy] = sub(_balances[guy], wad);
        _supply = sub(_supply, wad);
        emit Transfer(guy, address(0), wad);
    }
    
    /// @notice Ether sent to this contract won't be returned, thank you.
    function () external payable {}

    /// @notice This method can be used by the owner to extract mistakenly
    ///  sent tokens to this contract.
    /// @param _token The address of the token contract that you want to recover
    ///  set to 0 in case you want to extract ether.
    function claimTokens(address _token, address payable _dst) public auth {
        if (_token == address(0)) {
            _dst.transfer(address(this).balance);
            return;
        }

        ERC20 token = ERC20(_token);
        uint balance = token.balanceOf(address(this));
        token.transfer(_dst, balance);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"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":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_dst","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newManager","type":"address"}],"name":"changeManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"guy","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"},{"anonymous":true,"inputs":[{"indexed":true,"name":"sig","type":"bytes4"},{"indexed":true,"name":"guy","type":"address"},{"indexed":true,"name":"foo","type":"bytes32"},{"indexed":true,"name":"bar","type":"bytes32"},{"indexed":false,"name":"wad","type":"uint256"},{"indexed":false,"name":"fax","type":"bytes"}],"name":"LogNote","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"},{"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"}]

60806040526b033b2e3c9fd0803ce800000060035534801561002057600080fd5b5060018054600160a060020a031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a260028054600160a060020a03191633908117909155600354600082815260046020908152604080832084905580519384525191927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a36117b4806100cd6000396000f3fe60806040526004361061015d576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100d3578063a3fbbaae1161008c578063a3fbbaae146104aa578063a9059cbb146104dd578063be9a655514610516578063bf7e214f1461052b578063daea85c514610540578063dd62ed3e146105735761015d565b806370a08231146103cc57806375f12b21146103ff5780637a9e5e4b146104145780638da5cb5b1461044757806395d89b411461045c5780639dc29fac146104715761015d565b806323b872dd1161012557806323b872dd146102a5578063313ce567146102e857806340c10f19146102fd57806342966c6814610336578063481c6a751461036057806369ffa08a146103915761015d565b806306fdde031461015f57806307da68f5146101e9578063095ea7b3146101fe57806313af40351461024b57806318160ddd1461027e575b005b34801561016b57600080fd5b506101746105ae565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ae578181015183820152602001610196565b50505050905090810190601f1680156101db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f557600080fd5b5061015d6105e5565b34801561020a57600080fd5b506102376004803603604081101561022157600080fd5b50600160a060020a0381351690602001356106cc565b604080519115158252519081900360200190f35b34801561025757600080fd5b5061015d6004803603602081101561026e57600080fd5b5035600160a060020a03166107c0565b34801561028a57600080fd5b50610293610877565b60408051918252519081900360200190f35b3480156102b157600080fd5b50610237600480360360608110156102c857600080fd5b50600160a060020a0381358116916020810135909116906040013561087d565b3480156102f457600080fd5b50610293610c15565b34801561030957600080fd5b5061015d6004803603604081101561032057600080fd5b50600160a060020a038135169060200135610c1a565b34801561034257600080fd5b5061015d6004803603602081101561035957600080fd5b5035610dba565b34801561036c57600080fd5b50610375610dc7565b60408051600160a060020a039092168252519081900360200190f35b34801561039d57600080fd5b5061015d600480360360408110156103b457600080fd5b50600160a060020a0381358116916020013516610dd6565b3480156103d857600080fd5b50610293600480360360208110156103ef57600080fd5b5035600160a060020a0316610fae565b34801561040b57600080fd5b50610237610fc9565b34801561042057600080fd5b5061015d6004803603602081101561043757600080fd5b5035600160a060020a0316610fd9565b34801561045357600080fd5b5061037561108c565b34801561046857600080fd5b5061017461109b565b34801561047d57600080fd5b5061015d6004803603604081101561049457600080fd5b50600160a060020a0381351690602001356110d2565b3480156104b657600080fd5b5061015d600480360360208110156104cd57600080fd5b5035600160a060020a031661138e565b3480156104e957600080fd5b506102376004803603604081101561050057600080fd5b50600160a060020a0381351690602001356113d4565b34801561052257600080fd5b5061015d6113e8565b34801561053757600080fd5b506103756114c9565b34801561054c57600080fd5b506102376004803603602081101561056357600080fd5b5035600160a060020a03166114d8565b34801561057f57600080fd5b506102936004803603604081101561059657600080fd5b50600160a060020a0381358116916020013516611537565b60408051808201909152601181527f444f53204e6574776f726b20546f6b656e000000000000000000000000000000602082015281565b6105fb33600035600160e060020a031916611562565b151561063f576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384928692339260008035600160e060020a03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805474ff0000000000000000000000000000000000000000191660a060020a17905550565b60015460009060a060020a900460ff161561071f576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b81158061074d5750336000908152600560209081526040808320600160a060020a0387168452909152902054155b151561075857600080fd5b336000818152600560209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b6107d633600035600160e060020a031916611562565b151561081a576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60035490565b60015460009060a060020a900460ff16156108d0576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b600160a060020a038416600090815260046020526040902054821115610940576040805160e560020a62461bcd02815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b60025461095590600160a060020a0316611664565b15610a5157600254600160a060020a0385811660008181526004602081815260408084205481517febe9e3f9000000000000000000000000000000000000000000000000000000008152938401959095526024830194909452604482018890529251939094169363ebe9e3f9936064808301949391928390030190829087803b1580156109e157600080fd5b505af11580156109f5573d6000803e3d6000fd5b505050506040513d6020811015610a0b57600080fd5b5051915060008211610a515760405160e560020a62461bcd0281526004018080602001828103825260268152602001806117236026913960400191505060405180910390fd5b600160a060020a0384163314801590610a8f5750600160a060020a038416600090815260056020908152604080832033845290915290205460001914155b15610b6257600160a060020a0384166000908152600560209081526040808320338452909152902054821115610b0f576040805160e560020a62461bcd02815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b600160a060020a0384166000908152600560209081526040808320338452909152902054610b3d908361166c565b600160a060020a03851660009081526005602090815260408083203384529091529020555b600160a060020a038416600090815260046020526040902054610b85908361166c565b600160a060020a038086166000908152600460205260408082209390935590851681522054610bb490836116c7565b600160a060020a0380851660008181526004602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b601281565b610c3033600035600160e060020a031916611562565b1515610c74576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60015460a060020a900460ff1615610cc4576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260046020526040902054610ce790826116c7565b600160a060020a038316600090815260046020526040902055600354610d0d90826116c7565b60038190556b033b2e3c9fd0803ce80000001015610d75576040805160e560020a62461bcd02815260206004820152601560248201527f546f74616c20737570706c79206f766572666c6f770000000000000000000000604482015290519081900360640190fd5b604080518281529051600160a060020a038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b610dc433826110d2565b50565b600254600160a060020a031681565b610dec33600035600160e060020a031916611562565b1515610e30576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b600160a060020a0382161515610e7c57604051600160a060020a03821690303180156108fc02916000818181858888f19350505050158015610e76573d6000803e3d6000fd5b50610faa565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518391600091600160a060020a038416916370a08231916024808301926020929190829003018186803b158015610ee057600080fd5b505afa158015610ef4573d6000803e3d6000fd5b505050506040513d6020811015610f0a57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b505050505b5050565b600160a060020a031660009081526004602052604090205490565b60015460a060020a900460ff1681565b610fef33600035600160e060020a031916611562565b1515611033576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b60408051808201909152600381527f444f530000000000000000000000000000000000000000000000000000000000602082015281565b6110e833600035600160e060020a031916611562565b151561112c576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60015460a060020a900460ff161561117c576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b600160a060020a03821633148015906111ba5750600160a060020a038216600090815260056020908152604080832033845290915290205460001914155b1561128d57600160a060020a038216600090815260056020908152604080832033845290915290205481111561123a576040805160e560020a62461bcd02815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b600160a060020a0382166000908152600560209081526040808320338452909152902054611268908261166c565b600160a060020a03831660009081526005602090815260408083203384529091529020555b600160a060020a0382166000908152600460205260409020548111156112fd576040805160e560020a62461bcd02815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b600160a060020a038216600090815260046020526040902054611320908261166c565b600160a060020a038316600090815260046020526040902055600354611346908261166c565b600355604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600254600160a060020a031633146113a557600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006113e133848461087d565b9392505050565b6113fe33600035600160e060020a031916611562565b1515611442576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384928692339260008035600160e060020a03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805474ff00000000000000000000000000000000000000001916905550565b600054600160a060020a031681565b60015460009060a060020a900460ff161561152b576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b6107ba826000196106cc565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b6000600160a060020a03831630141561157d575060016107ba565b600154600160a060020a038481169116141561159b575060016107ba565b600054600160a060020a031615156115b5575060006107ba565b600054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152306024830152600160e060020a0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561163157600080fd5b505afa158015611645573d6000803e3d6000fd5b505050506040513d602081101561165b57600080fd5b505190506107ba565b6000903b1190565b808203828111156107ba576040805160e560020a62461bcd02815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b808201828110156107ba576040805160e560020a62461bcd02815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe7472616e736665722d64697361626c65642d62792d436f6e74726f6c6c65724d616e6167657264732d73746f702d69732d73746f70706564000000000000000000000000000064732d617574682d756e617574686f72697a6564000000000000000000000000a165627a7a72305820bf9b5df61b4b664008b225bf4628b011b554af093c71c9142f1c1f8a0671a5080029

Deployed Bytecode

0x60806040526004361061015d576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100d3578063a3fbbaae1161008c578063a3fbbaae146104aa578063a9059cbb146104dd578063be9a655514610516578063bf7e214f1461052b578063daea85c514610540578063dd62ed3e146105735761015d565b806370a08231146103cc57806375f12b21146103ff5780637a9e5e4b146104145780638da5cb5b1461044757806395d89b411461045c5780639dc29fac146104715761015d565b806323b872dd1161012557806323b872dd146102a5578063313ce567146102e857806340c10f19146102fd57806342966c6814610336578063481c6a751461036057806369ffa08a146103915761015d565b806306fdde031461015f57806307da68f5146101e9578063095ea7b3146101fe57806313af40351461024b57806318160ddd1461027e575b005b34801561016b57600080fd5b506101746105ae565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ae578181015183820152602001610196565b50505050905090810190601f1680156101db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f557600080fd5b5061015d6105e5565b34801561020a57600080fd5b506102376004803603604081101561022157600080fd5b50600160a060020a0381351690602001356106cc565b604080519115158252519081900360200190f35b34801561025757600080fd5b5061015d6004803603602081101561026e57600080fd5b5035600160a060020a03166107c0565b34801561028a57600080fd5b50610293610877565b60408051918252519081900360200190f35b3480156102b157600080fd5b50610237600480360360608110156102c857600080fd5b50600160a060020a0381358116916020810135909116906040013561087d565b3480156102f457600080fd5b50610293610c15565b34801561030957600080fd5b5061015d6004803603604081101561032057600080fd5b50600160a060020a038135169060200135610c1a565b34801561034257600080fd5b5061015d6004803603602081101561035957600080fd5b5035610dba565b34801561036c57600080fd5b50610375610dc7565b60408051600160a060020a039092168252519081900360200190f35b34801561039d57600080fd5b5061015d600480360360408110156103b457600080fd5b50600160a060020a0381358116916020013516610dd6565b3480156103d857600080fd5b50610293600480360360208110156103ef57600080fd5b5035600160a060020a0316610fae565b34801561040b57600080fd5b50610237610fc9565b34801561042057600080fd5b5061015d6004803603602081101561043757600080fd5b5035600160a060020a0316610fd9565b34801561045357600080fd5b5061037561108c565b34801561046857600080fd5b5061017461109b565b34801561047d57600080fd5b5061015d6004803603604081101561049457600080fd5b50600160a060020a0381351690602001356110d2565b3480156104b657600080fd5b5061015d600480360360208110156104cd57600080fd5b5035600160a060020a031661138e565b3480156104e957600080fd5b506102376004803603604081101561050057600080fd5b50600160a060020a0381351690602001356113d4565b34801561052257600080fd5b5061015d6113e8565b34801561053757600080fd5b506103756114c9565b34801561054c57600080fd5b506102376004803603602081101561056357600080fd5b5035600160a060020a03166114d8565b34801561057f57600080fd5b506102936004803603604081101561059657600080fd5b50600160a060020a0381358116916020013516611537565b60408051808201909152601181527f444f53204e6574776f726b20546f6b656e000000000000000000000000000000602082015281565b6105fb33600035600160e060020a031916611562565b151561063f576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384928692339260008035600160e060020a03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805474ff0000000000000000000000000000000000000000191660a060020a17905550565b60015460009060a060020a900460ff161561071f576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b81158061074d5750336000908152600560209081526040808320600160a060020a0387168452909152902054155b151561075857600080fd5b336000818152600560209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b6107d633600035600160e060020a031916611562565b151561081a576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60035490565b60015460009060a060020a900460ff16156108d0576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b600160a060020a038416600090815260046020526040902054821115610940576040805160e560020a62461bcd02815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b60025461095590600160a060020a0316611664565b15610a5157600254600160a060020a0385811660008181526004602081815260408084205481517febe9e3f9000000000000000000000000000000000000000000000000000000008152938401959095526024830194909452604482018890529251939094169363ebe9e3f9936064808301949391928390030190829087803b1580156109e157600080fd5b505af11580156109f5573d6000803e3d6000fd5b505050506040513d6020811015610a0b57600080fd5b5051915060008211610a515760405160e560020a62461bcd0281526004018080602001828103825260268152602001806117236026913960400191505060405180910390fd5b600160a060020a0384163314801590610a8f5750600160a060020a038416600090815260056020908152604080832033845290915290205460001914155b15610b6257600160a060020a0384166000908152600560209081526040808320338452909152902054821115610b0f576040805160e560020a62461bcd02815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b600160a060020a0384166000908152600560209081526040808320338452909152902054610b3d908361166c565b600160a060020a03851660009081526005602090815260408083203384529091529020555b600160a060020a038416600090815260046020526040902054610b85908361166c565b600160a060020a038086166000908152600460205260408082209390935590851681522054610bb490836116c7565b600160a060020a0380851660008181526004602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b601281565b610c3033600035600160e060020a031916611562565b1515610c74576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60015460a060020a900460ff1615610cc4576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b600160a060020a038216600090815260046020526040902054610ce790826116c7565b600160a060020a038316600090815260046020526040902055600354610d0d90826116c7565b60038190556b033b2e3c9fd0803ce80000001015610d75576040805160e560020a62461bcd02815260206004820152601560248201527f546f74616c20737570706c79206f766572666c6f770000000000000000000000604482015290519081900360640190fd5b604080518281529051600160a060020a038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b610dc433826110d2565b50565b600254600160a060020a031681565b610dec33600035600160e060020a031916611562565b1515610e30576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b600160a060020a0382161515610e7c57604051600160a060020a03821690303180156108fc02916000818181858888f19350505050158015610e76573d6000803e3d6000fd5b50610faa565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518391600091600160a060020a038416916370a08231916024808301926020929190829003018186803b158015610ee057600080fd5b505afa158015610ef4573d6000803e3d6000fd5b505050506040513d6020811015610f0a57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b505050505b5050565b600160a060020a031660009081526004602052604090205490565b60015460a060020a900460ff1681565b610fef33600035600160e060020a031916611562565b1515611033576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b60408051808201909152600381527f444f530000000000000000000000000000000000000000000000000000000000602082015281565b6110e833600035600160e060020a031916611562565b151561112c576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60015460a060020a900460ff161561117c576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b600160a060020a03821633148015906111ba5750600160a060020a038216600090815260056020908152604080832033845290915290205460001914155b1561128d57600160a060020a038216600090815260056020908152604080832033845290915290205481111561123a576040805160e560020a62461bcd02815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b600160a060020a0382166000908152600560209081526040808320338452909152902054611268908261166c565b600160a060020a03831660009081526005602090815260408083203384529091529020555b600160a060020a0382166000908152600460205260409020548111156112fd576040805160e560020a62461bcd02815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b600160a060020a038216600090815260046020526040902054611320908261166c565b600160a060020a038316600090815260046020526040902055600354611346908261166c565b600355604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600254600160a060020a031633146113a557600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006113e133848461087d565b9392505050565b6113fe33600035600160e060020a031916611562565b1515611442576040805160e560020a62461bcd0281526020600482015260146024820152600080516020611769833981519152604482015290519081900360640190fd5b60408051348082526020820183815236938301849052600435936024359384928692339260008035600160e060020a03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805474ff00000000000000000000000000000000000000001916905550565b600054600160a060020a031681565b60015460009060a060020a900460ff161561152b576040805160e560020a62461bcd0281526020600482015260126024820152600080516020611749833981519152604482015290519081900360640190fd5b6107ba826000196106cc565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b6000600160a060020a03831630141561157d575060016107ba565b600154600160a060020a038481169116141561159b575060016107ba565b600054600160a060020a031615156115b5575060006107ba565b600054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152306024830152600160e060020a0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561163157600080fd5b505afa158015611645573d6000803e3d6000fd5b505050506040513d602081101561165b57600080fd5b505190506107ba565b6000903b1190565b808203828111156107ba576040805160e560020a62461bcd02815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b808201828110156107ba576040805160e560020a62461bcd02815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe7472616e736665722d64697361626c65642d62792d436f6e74726f6c6c65724d616e6167657264732d73746f702d69732d73746f70706564000000000000000000000000000064732d617574682d756e617574686f72697a6564000000000000000000000000a165627a7a72305820bf9b5df61b4b664008b225bf4628b011b554af093c71c9142f1c1f8a0671a5080029

Swarm Source

bzzr://bf9b5df61b4b664008b225bf4628b011b554af093c71c9142f1c1f8a0671a508

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.