ETH Price: $2,701.39 (+2.37%)

Contract

0x4dD28be042F85e287E9AaCe4147152bf1CD835e9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Global Deleg...94928292020-02-16 7:48:571821 days ago1581839337IN
0x4dD28be0...f1CD835e9
0 ETH0.000172391
Set Global Deleg...94928292020-02-16 7:48:571821 days ago1581839337IN
0x4dD28be0...f1CD835e9
0 ETH0.000172391
Set Global Deleg...94928282020-02-16 7:48:521821 days ago1581839332IN
0x4dD28be0...f1CD835e9
0 ETH0.000172391
Set Global Deleg...94928282020-02-16 7:48:521821 days ago1581839332IN
0x4dD28be0...f1CD835e9
0 ETH0.000172391
Set Global Deleg...94928282020-02-16 7:48:521821 days ago1581839332IN
0x4dD28be0...f1CD835e9
0 ETH0.000172391
Set Global Deleg...94928062020-02-16 7:43:331821 days ago1581839013IN
0x4dD28be0...f1CD835e9
0 ETH0.000172391
Set Global Deleg...94928062020-02-16 7:43:331821 days ago1581839013IN
0x4dD28be0...f1CD835e9
0 ETH0.000172391
Set Token Delega...94884552020-02-15 15:24:061822 days ago1581780246IN
0x4dD28be0...f1CD835e9
0 ETH0.000423442
Set Token Delega...94884482020-02-15 15:23:061822 days ago1581780186IN
0x4dD28be0...f1CD835e9
0 ETH0.000520972
Set Global Deleg...94706472020-02-12 21:32:541825 days ago1581543174IN
0x4dD28be0...f1CD835e9
0 ETH0.000517193
Set Global Deleg...94706352020-02-12 21:30:441825 days ago1581543044IN
0x4dD28be0...f1CD835e9
0 ETH0.000517193
Set Global Deleg...94706262020-02-12 21:28:501825 days ago1581542930IN
0x4dD28be0...f1CD835e9
0 ETH0.000517193
Set Global Deleg...84244402019-08-26 7:10:221995 days ago1566803422IN
0x4dD28be0...f1CD835e9
0 ETH0.001307927
Set Global Deleg...84236342019-08-26 4:10:481996 days ago1566792648IN
0x4dD28be0...f1CD835e9
0 ETH0.001276619
Set Global Deleg...84236332019-08-26 4:10:261996 days ago1566792626IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236332019-08-26 4:10:261996 days ago1566792626IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236332019-08-26 4:10:261996 days ago1566792626IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236332019-08-26 4:10:261996 days ago1566792626IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236322019-08-26 4:10:161996 days ago1566792616IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236312019-08-26 4:10:131996 days ago1566792613IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236262019-08-26 4:09:081996 days ago1566792548IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236242019-08-26 4:08:571996 days ago1566792537IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84236242019-08-26 4:08:571996 days ago1566792537IN
0x4dD28be0...f1CD835e9
0 ETH0.001681619
Set Global Deleg...84229462019-08-26 1:35:331996 days ago1566783333IN
0x4dD28be0...f1CD835e9
0 ETH0.000992927
Set Token Delega...84149252019-08-24 19:54:381997 days ago1566676478IN
0x4dD28be0...f1CD835e9
0 ETH0.000158681
View all transactions

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SVDelegationV0101

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.19;

// DELEGATION SC v1.1
// (c) SecureVote 2018
// Author: Max Kaye <[email protected]>
// Released under MIT licence

// the most up-to-date version of the contract lives at delegate.secvote.eth


// Main delegation contract v1.1
contract SVDelegationV0101 {

    address public owner;

    // in the last version we didn't include enough data - this makes it trivial to traverse off-chain
    struct Delegation {
        uint64 thisDelegationId;
        uint64 prevDelegationId;
        uint64 setAtBlock;
        address delegatee;
        address delegator;
        address tokenContract;
    }

    // easy lookups
    mapping (address => mapping (address => Delegation)) tokenDlgts;
    mapping (address => Delegation) globalDlgts;

    // track which token contracts we know about for easy traversal + backwards compatibility
    mapping (address => bool) knownTokenContracts;
    address[] logTokenContracts;

    // track all delegations via an indexed map
    mapping (uint64 => Delegation) historicalDelegations;
    uint64 public totalDelegations = 0;

    // reference to v1.0 of contract
    SVDelegation prevSVDelegation;

    // pretty straight forward - events
    event SetGlobalDelegation(address voter, address delegate);
    event SetTokenDelegation(address voter, address tokenContract, address delegate);

    // main constructor - requires the prevDelegationSC address
    function SVDelegationV0101(address prevDelegationSC) public {
        owner = msg.sender;

        prevSVDelegation = SVDelegation(prevDelegationSC);

        // commit the genesis historical delegation to history (like genesis block) - somewhere to point back to
        createDelegation(address(0), 0, address(0));
    }

    // internal function to handle inserting delegates into state
    function createDelegation(address dlgtAddress, uint64 prevDelegationId, address tokenContract) internal returns(Delegation) {
        // use this to log known tokenContracts
        if (!knownTokenContracts[tokenContract]) {
            logTokenContracts.push(tokenContract);
            knownTokenContracts[tokenContract] = true;
        }

        uint64 myDelegationId = totalDelegations;
        historicalDelegations[myDelegationId] = Delegation(myDelegationId, prevDelegationId, uint64(block.number), dlgtAddress, msg.sender, tokenContract);
        totalDelegations += 1;

        return historicalDelegations[myDelegationId];
    }

    // get previous delegation, create new delegation via function and then commit to globalDlgts
    function setGlobalDelegation(address dlgtAddress) public {
        uint64 prevDelegationId = globalDlgts[msg.sender].thisDelegationId;
        globalDlgts[msg.sender] = createDelegation(dlgtAddress, prevDelegationId, address(0));
        SetGlobalDelegation(msg.sender, dlgtAddress);
    }

    // get previous delegation, create new delegation via function and then commit to tokenDlgts
    function setTokenDelegation(address tokenContract, address dlgtAddress) public {
        uint64 prevDelegationId = tokenDlgts[tokenContract][msg.sender].thisDelegationId;
        tokenDlgts[tokenContract][msg.sender] = createDelegation(dlgtAddress, prevDelegationId, tokenContract);
        SetTokenDelegation(msg.sender, tokenContract, dlgtAddress);
    }

    // given some voter and token address, get the delegation id - failover to global on 0 address
    function getDelegationID(address voter, address tokenContract) public constant returns(uint64) {
        // default to token resolution but use global if no delegation
        Delegation memory _tokenDlgt = tokenDlgts[tokenContract][voter];
        if (tokenContract == address(0)) {
            _tokenDlgt = globalDlgts[voter];
        }

        // default to 0 if we don't have a valid delegation
        if (_validDelegation(_tokenDlgt)) {
            return _tokenDlgt.thisDelegationId;
        }
        return 0;
    }

    function resolveDelegation(address voter, address tokenContract) public constant returns(uint64, uint64, uint64, address, address, address) {
        Delegation memory _tokenDlgt = tokenDlgts[tokenContract][voter];

        // if we have a delegation in this contract return it
        if (_validDelegation(_tokenDlgt)) {
            return _dlgtRet(_tokenDlgt);
        }

        // otherwise try the global delegation
        Delegation memory _globalDlgt = globalDlgts[voter];
        if (_validDelegation(_globalDlgt)) {
            return _dlgtRet(_globalDlgt);
        }

        // but if we don't have a delegation in this contract then resolve according the prev contract
        address _dlgt;
        uint256 meh;
        (meh, _dlgt, meh, meh) = prevSVDelegation.resolveDelegation(voter, tokenContract);
        return (0, 0, 0, _dlgt, voter, tokenContract);
    }

    // returns 2 lists: first of voter addresses, second of token contracts
    function findPossibleDelegatorsOf(address delegate) public view returns(address[] memory, address[] memory) {
        // not meant to be run on-chain, but off-chain via API, mostly convenience
        address[] memory voters;
        address[] memory tokenContracts;
        Delegation memory _delegation;

        // all the senders who participated in v1.0 of the contract prior to block 5203500
        address[43] memory oldSenders =
            [ 0xE8193Bc3D5F3F482406706F843A5f161563F37Bf
            , 0x7A933c8a0Eb99e8Bdb07E1b42Aa10872845394B7
            , 0x88341191EfA40Cd031F46138817830A5D3545Ba9
            , 0xB6dc48E8583C8C6e320DaF918CAdef65f2d85B46
            , 0xF02d417c8c6736Dbc7Eb089DC6738b950c2F444e
            , 0xF66fE29Ad1E87104A8816AD1A8427976d83CB033
            , 0xfd5955bf412B7537873CBB77eB1E39871e20e142
            , 0xe83Efc57d9C487ACc55a7B62896dA43928E64C3E
            , 0xd0c41588b27E64576ddA4e6a08452c59F5A2B2dD
            , 0x640370126072f6B890d4Ca2E893103e9363DbE8B
            , 0x887dbaCD9a0e58B46065F93cc1f82a52DEfDb979
            , 0xe223771699665bCB0AAf7930277C35d3deC573aF
            , 0x364B503B0e86b20B7aC1484c247DE50f10DfD8cf
            , 0x4512F5867d91D6B0131427b89Bdb7b460fF30397
            , 0xF5fBff477F5Bf5a950F661B70F6b5364875A1bD7
            , 0x9EbB758483Da174DC3d411386B75afd093CEfCf1
            , 0x499B36A6B92F91524A6B5b8Ff321740e84a2B57e
            , 0x05D6e87fd6326F977a2d8c67b9F3EcC030527261
            , 0x7f679053a1679dE7913885F0Db1278e91e8927Ca
            , 0xF9CD08d36e972Bb070bBD2C1598D21045259AB0D
            , 0xa5617800B8FD754fB81F47A65dc49A60acCc3432
            , 0xa9F6238B83fcb65EcA3c3189a0dce8689e275D57
            , 0xa30F92F9cc478562e0dde73665f1B7ADddDC2dCd
            , 0x70278C15A29f0Ef62A845e1ac31AE41988F24C10
            , 0xd42622471946CCFf9F7b9246e8D786c74410bFcC
            , 0xd65955EF0f8890D7996f5a7b7b5b05B80605C06a
            , 0xB46F4eBDD6404686D785EDACE37D66f815ED7cF8
            , 0xf4d3aa8091D23f97706177CDD94b8dF4c7e4C2FB
            , 0x4Fe584FFc9C755BF6Aa9354323e97166958475c9
            , 0xB4802f497Bf6238A29e043103EE6eeae1331BFde
            , 0x3EeE0f8Fadc1C29bFB782E70067a8D91B4ddeD56
            , 0x46381F606014C5D68B38aD5C7e8f9401149FAa75
            , 0xC81Be3496d053364255f9cb052F81Ca9e84A9cF3
            , 0xa632837B095d8fa2ef46a22099F91Fe10B3F0538
            , 0x19FA94aEbD4bC694802B566Ae65aEd8F07B992f7
            , 0xE9Ef7664d36191Ad7aB001b9BB0aAfAcD260277F
            , 0x17DAB6BB606f32447aff568c1D0eEDC3649C101C
            , 0xaBA96c77E3dd7EEa16cc5EbdAAA05483CDD0FF89
            , 0x57d36B0B5f5E333818b1ce072A6D84218E734deC
            , 0x59E7612706DFB1105220CcB97aaF3cBF304cD608
            , 0xCf7EC4dcA84b5c8Dc7896c38b4834DC6379BB73D
            , 0x5Ed1Da246EA52F302FFf9391e56ec64b9c14cce1
            , 0x4CabFD1796Ec9EAd77457768e5cA782a1A9e576F
            ];

        // there were no global delegations in v1.0 of contract
        address oldToken = 0x9e88613418cF03dCa54D6a2cf6Ad934A78C7A17A;

        // first loop through delegations in this contract
        uint64 i;
        // start at 1 because the first delegation is a "genesis" delegation in constructor
        for (i = 1; i < totalDelegations; i++) {
            _delegation = historicalDelegations[i];
            if (_delegation.delegatee == delegate) {
                // since `.push` isn't available on memory arrays, use their length as the next index location
                voters = _appendMemArray(voters, _delegation.delegator);
                tokenContracts = _appendMemArray(tokenContracts, _delegation.tokenContract);
            }
        }

        // then loop through delegations in the previous contract
        for (i = 0; i < oldSenders.length; i++) {
            uint256 _oldId;
            address _oldDlgt;
            uint256 _oldSetAtBlock;
            uint256 _oldPrevId;
            (_oldId, _oldDlgt, _oldSetAtBlock, _oldPrevId) = prevSVDelegation.resolveDelegation(oldSenders[i], oldToken);
            if (_oldDlgt == delegate && _oldSetAtBlock != 0) {
                voters = _appendMemArray(voters, oldSenders[i]);
                tokenContracts = _appendMemArray(tokenContracts, oldToken);
            }
        }

        return (voters, tokenContracts);
    }

    // give access to historicalDelegations
    function getHistoricalDelegation(uint64 delegationId) public constant returns(uint64, uint64, uint64, address, address, address) {
        return _dlgtRet(historicalDelegations[delegationId]);
    }

    // access the globalDelegation map
    function _rawGetGlobalDelegation(address _voter) public constant returns(uint64, uint64, uint64, address, address, address) {
        return _dlgtRet(globalDlgts[_voter]);
    }

    // access the tokenDelegation map
    function _rawGetTokenDelegation(address _voter, address _tokenContract) public constant returns(uint64, uint64, uint64, address, address, address) {
        return _dlgtRet(tokenDlgts[_tokenContract][_voter]);
    }

    // access our log list of token contracts
    function _getLogTokenContract(uint256 i) public constant returns(address) {
        return logTokenContracts[i];
    }

    // convenience function to turn Delegations into a returnable structure
    function _dlgtRet(Delegation d) internal pure returns(uint64, uint64, uint64, address, address, address) {
        return (d.thisDelegationId, d.prevDelegationId, d.setAtBlock, d.delegatee, d.delegator, d.tokenContract);
    }

    // internal function to test if a delegation is valid or revoked / nonexistent
    function _validDelegation(Delegation d) internal pure returns(bool) {
        // probs simplest test to check if we have a valid delegation - important to check if delegation is set to 0x00
        // to avoid counting a revocation (which is done by delegating to 0x00)
        return d.setAtBlock > 0 && d.delegatee != address(0);
    }

    function _appendMemArray(address[] memory arr, address toAppend) internal pure returns(address[] memory arr2) {
        arr2 = new address[](arr.length + 1);

        for (uint k = 0; k < arr.length; k++) {
            arr2[k] = arr[k];
        }

        arr2[arr.length] = toAppend;
    }
}



// Minimal interface for delegation needs
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/issues/20
contract ERC20Interface {
    // Get the account balance of another account with address _owner
    function balanceOf(address _owner) constant public returns (uint256 balance);
}



// Include previous contract in this one so we can access the various components. Not all things needed are accessible
// through functions - e.g. `historicalDelegations` mapping.
contract SVDelegation {

    address public owner;

    struct Delegation {
        uint256 thisDelegationId;
        address dlgt;
        uint256 setAtBlock;
        uint256 prevDelegation;
    }

    mapping (address => mapping (address => Delegation)) tokenDlgts;
    mapping (address => Delegation) globalDlgts;

    mapping (uint256 => Delegation) public historicalDelegations;
    uint256 public totalDelegations = 0;

    event SetGlobalDelegation(address voter, address delegate);
    event SetTokenDelegation(address voter, address tokenContract, address delegate);

    function SVDelegation() public {
        owner = msg.sender;

        // commit the genesis historical delegation to history (like genesis block)
        createDelegation(address(0), 0);
    }

    function createDelegation(address dlgtAddress, uint256 prevDelegationId) internal returns(Delegation) {
        uint256 myDelegationId = totalDelegations;
        historicalDelegations[myDelegationId] = Delegation(myDelegationId, dlgtAddress, block.number, prevDelegationId);
        totalDelegations += 1;

        return historicalDelegations[myDelegationId];
    }

    // get previous delegation, create new delegation via function and then commit to globalDlgts
    function setGlobalDelegation(address dlgtAddress) public {
        uint256 prevDelegationId = globalDlgts[msg.sender].thisDelegationId;
        globalDlgts[msg.sender] = createDelegation(dlgtAddress, prevDelegationId);
        SetGlobalDelegation(msg.sender, dlgtAddress);
    }

    // get previous delegation, create new delegation via function and then commit to tokenDlgts
    function setTokenDelegation(address tokenContract, address dlgtAddress) public {
        uint256 prevDelegationId = tokenDlgts[tokenContract][msg.sender].thisDelegationId;
        tokenDlgts[tokenContract][msg.sender] = createDelegation(dlgtAddress, prevDelegationId);
        SetTokenDelegation(msg.sender, tokenContract, dlgtAddress);
    }

    function resolveDelegation(address voter, address tokenContract) public constant returns(uint256, address, uint256, uint256) {
        Delegation memory _tokenDlgt = tokenDlgts[tokenContract][voter];

        // probs simplest test to check if we have a valid delegation
        if (_tokenDlgt.setAtBlock > 0) {
            return _dlgtRet(_tokenDlgt);
        } else {
            return _dlgtRet(globalDlgts[voter]);
        }
    }

    function _rawGetGlobalDelegation(address _voter) public constant returns(uint256, address, uint256, uint256) {
        return _dlgtRet(globalDlgts[_voter]);
    }

    function _rawGetTokenDelegation(address _voter, address _tokenContract) public constant returns(uint256, address, uint256, uint256) {
        return _dlgtRet(tokenDlgts[_tokenContract][_voter]);
    }

    function _dlgtRet(Delegation d) internal pure returns(uint256, address, uint256, uint256) {
        return (d.thisDelegationId, d.dlgt, d.setAtBlock, d.prevDelegation);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"totalDelegations","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"delegationId","type":"uint64"}],"name":"getHistoricalDelegation","outputs":[{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_voter","type":"address"},{"name":"_tokenContract","type":"address"}],"name":"_rawGetTokenDelegation","outputs":[{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"voter","type":"address"},{"name":"tokenContract","type":"address"}],"name":"resolveDelegation","outputs":[{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"address"},{"name":"","type":"address"},{"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":false,"inputs":[{"name":"dlgtAddress","type":"address"}],"name":"setGlobalDelegation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"voter","type":"address"},{"name":"tokenContract","type":"address"}],"name":"getDelegationID","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"delegate","type":"address"}],"name":"findPossibleDelegatorsOf","outputs":[{"name":"","type":"address[]"},{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"i","type":"uint256"}],"name":"_getLogTokenContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenContract","type":"address"},{"name":"dlgtAddress","type":"address"}],"name":"setTokenDelegation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_voter","type":"address"}],"name":"_rawGetGlobalDelegation","outputs":[{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"prevDelegationSC","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"voter","type":"address"},{"indexed":false,"name":"delegate","type":"address"}],"name":"SetGlobalDelegation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"voter","type":"address"},{"indexed":false,"name":"tokenContract","type":"address"},{"indexed":false,"name":"delegate","type":"address"}],"name":"SetTokenDelegation","type":"event"}]

6060604052600680546001604060020a031916905534156200002057600080fd5b60405160208062001b968339810160405280805160008054600160a060020a03338116600160a060020a0319909216919091178255600680549184166801000000000000000002604060020a60e060020a03199092169190911790559092506200009b91508080640100000000620013a6620000a382021704565b5050620003c2565b620000ad6200033d565b600160a060020a03821660009081526003602052604081205460ff16151562000125576004805460018101620000e4838262000372565b5060009182526020808320919091018054600160a060020a031916600160a060020a03871690811790915582526003905260409020805460ff191660011790555b506006546001604060020a031660c060405190810160409081526001604060020a038084168084528782166020808601919091524390921683850152600160a060020a03808a1660608601523381166080860152871660a08501526000908152600590915220815181546001604060020a0319166001604060020a0391909116178155602082015181546001604060020a03919091166801000000000000000002604060020a608060020a0319909116178155604082015181546001604060020a039190911670010000000000000000000000000000000002608060020a60c060020a03199091161781556060820151600182018054600160a060020a031916600160a060020a03929092169190911790556080820151600282018054600160a060020a031916600160a060020a039290921691909117905560a08201516003919091018054600160a060020a031916600160a060020a0390921691909117905550600680546001604060020a031981166001604060020a039182166001018216179091558116600090815260056020526040908190209060c09051908101604090815282546001604060020a0380821684526801000000000000000082048116602085015270010000000000000000000000000000000090910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015295945050505050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b8154818355818115116200039957600083815260209020620003999181019083016200039e565b505050565b620003bf91905b80821115620003bb5760008155600101620003a5565b5090565b90565b6117c480620003d26000396000f3006060604052600436106100955763ffffffff60e060020a60003504166305b9cb3c811461009a57806330381f5f146100ca5780635fc31aeb1461013957806361efc7db1461015e5780638da5cb5b14610183578063b1194bc4146101b2578063b2b28679146101d3578063d8e6b249146101f8578063dbf1ede3146102b0578063df6e7a5f146102c6578063efc63bd3146102eb575b600080fd5b34156100a557600080fd5b6100ad61030a565b60405167ffffffffffffffff909116815260200160405180910390f35b34156100d557600080fd5b6100ea67ffffffffffffffff6004351661031a565b60405167ffffffffffffffff9687168152948616602086015292909416604080850191909152600160a060020a03918216606085015293811660808401521660a082015260c001905180910390f35b341561014457600080fd5b6100ea600160a060020a03600435811690602435166103cd565b341561016957600080fd5b6100ea600160a060020a03600435811690602435166104a2565b341561018e57600080fd5b6101966106cf565b604051600160a060020a03909116815260200160405180910390f35b34156101bd57600080fd5b6101d1600160a060020a03600435166106de565b005b34156101de57600080fd5b6100ad600160a060020a0360043581169060243516610873565b341561020357600080fd5b610217600160a060020a03600435166109bb565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561025b578082015183820152602001610243565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561029a578082015183820152602001610282565b5050505090500194505050505060405180910390f35b34156102bb57600080fd5b6101966004356110bb565b34156102d157600080fd5b6101d1600160a060020a03600435811690602435166110e7565b34156102f657600080fd5b6100ea600160a060020a03600435166112a4565b60065467ffffffffffffffff1681565b6000806000806000806103b9600560008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060c06040519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015261133d565b949c939b5091995097509550909350915050565b60008060008060008061048d6001600089600160a060020a0316600160a060020a0316815260200190815260200160002060008a600160a060020a0316600160a060020a0316815260200190815260200160002060c06040519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015261133d565b949d939c50919a509850965090945092505050565b6000806000806000806104b36116de565b6104bb6116de565b600160a060020a03808a166000908152600160209081526040808320938e168352929052818120909182919060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a0820152935061055884611373565b15610577576105668461133d565b9950995099509950995099506106c1565b600160a060020a038c16600090815260026020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a0820152925061060383611373565b15610611576105668361133d565b600654604060020a9004600160a060020a03166361efc7db8d8d60006040516080015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401608060405180830381600087803b151561067957600080fd5b6102c65a03f1151561068a57600080fd5b50505060405180519060200180519060200180519060200180515060009d508d9c508c9b509199508e98508d975089945091925050505b505050509295509295509295565b600054600160a060020a031681565b600160a060020a03331660009081526002602052604081205467ffffffffffffffff169061070f90839083906113a6565b600160a060020a03331660009081526002602052604090208151815467ffffffffffffffff191667ffffffffffffffff919091161781556020820151815467ffffffffffffffff91909116604060020a026fffffffffffffffff0000000000000000199091161781556040820151815467ffffffffffffffff91909116608060020a0277ffffffffffffffff00000000000000000000000000000000199091161781556060820151600182018054600160a060020a031916600160a060020a03929092169190911790556080820151600282018054600160a060020a031916600160a060020a039290921691909117905560a08201516003919091018054600160a060020a031916600160a060020a03909216919091179055507f80e8ffc3c5dd5acf237f5c6e5855a312b8778e3df8ac7346f51155bcfeacf7cd3383604051600160a060020a039283168152911660208201526040908101905180910390a15050565b600061087d6116de565b600160a060020a03808416600090815260016020908152604080832093881683529290528190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a039081166060830152600283015481166080830152600390920154821660a082015291508316151561099857600160a060020a038416600090815260026020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015290505b6109a181611373565b156109af57805191506109b4565b600091505b5092915050565b6109c3611713565b6109cb611713565b6109d3611713565b6109db611713565b6109e36116de565b6109eb611725565b600080600080600080610560604051908101604090815273e8193bc3d5f3f482406706f843a5f161563f37bf8252737a933c8a0eb99e8bdb07e1b42aa10872845394b760208301527388341191efa40cd031f46138817830a5d3545ba99082015273b6dc48e8583c8c6e320daf918cadef65f2d85b46606082015273f02d417c8c6736dbc7eb089dc6738b950c2f444e608082015273f66fe29ad1e87104a8816ad1a8427976d83cb03360a082015273fd5955bf412b7537873cbb77eb1e39871e20e14260c082015273e83efc57d9c487acc55a7b62896da43928e64c3e60e082015273d0c41588b27e64576dda4e6a08452c59f5a2b2dd61010082015273640370126072f6b890d4ca2e893103e9363dbe8b61012082015273887dbacd9a0e58b46065f93cc1f82a52defdb97961014082015273e223771699665bcb0aaf7930277c35d3dec573af61016082015273364b503b0e86b20b7ac1484c247de50f10dfd8cf610180820152734512f5867d91d6b0131427b89bdb7b460ff303976101a082015273f5fbff477f5bf5a950f661b70f6b5364875a1bd76101c0820152739ebb758483da174dc3d411386b75afd093cefcf16101e082015273499b36a6b92f91524a6b5b8ff321740e84a2b57e6102008201527305d6e87fd6326f977a2d8c67b9f3ecc030527261610220820152737f679053a1679de7913885f0db1278e91e8927ca61024082015273f9cd08d36e972bb070bbd2c1598d21045259ab0d61026082015273a5617800b8fd754fb81f47a65dc49a60accc343261028082015273a9f6238b83fcb65eca3c3189a0dce8689e275d576102a082015273a30f92f9cc478562e0dde73665f1b7addddc2dcd6102c08201527370278c15a29f0ef62a845e1ac31ae41988f24c106102e082015273d42622471946ccff9f7b9246e8d786c74410bfcc61030082015273d65955ef0f8890d7996f5a7b7b5b05b80605c06a61032082015273b46f4ebdd6404686d785edace37d66f815ed7cf861034082015273f4d3aa8091d23f97706177cdd94b8df4c7e4c2fb610360820152734fe584ffc9c755bf6aa9354323e97166958475c961038082015273b4802f497bf6238a29e043103ee6eeae1331bfde6103a0820152733eee0f8fadc1c29bfb782e70067a8d91b4dded566103c08201527346381f606014c5d68b38ad5c7e8f9401149faa756103e082015273c81be3496d053364255f9cb052f81ca9e84a9cf361040082015273a632837b095d8fa2ef46a22099f91fe10b3f05386104208201527319fa94aebd4bc694802b566ae65aed8f07b992f761044082015273e9ef7664d36191ad7ab001b9bb0aafacd260277f6104608201527317dab6bb606f32447aff568c1d0eedc3649c101c61048082015273aba96c77e3dd7eea16cc5ebdaaa05483cdd0ff896104a08201527357d36b0b5f5e333818b1ce072a6d84218e734dec6104c08201527359e7612706dfb1105220ccb97aaf3cbf304cd6086104e082015273cf7ec4dca84b5c8dc7896c38b4834dc6379bb73d610500820152735ed1da246ea52f302fff9391e56ec64b9c14cce1610520820152734cabfd1796ec9ead77457768e5ca782a1a9e576f6105408201529650739e88613418cf03dca54d6a2cf6ad934a78c7a17a9550600194505b60065467ffffffffffffffff9081169086161015610f7a5767ffffffffffffffff8516600090815260056020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a0390811660608301908152600284015482166080840152600390930154811660a08301529099508e169051600160a060020a03161415610f6f57610f5c8a8960800151611634565b9950610f6c898960a00151611634565b98505b600190940193610e9d565b600094505b602b8567ffffffffffffffff1610156110a857600654604060020a9004600160a060020a03166361efc7db8867ffffffffffffffff8816602b8110610fc057fe5b60200201518860006040516080015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401608060405180830381600087803b151561101457600080fd5b6102c65a03f1151561102557600080fd5b5050506040518051906020018051906020018051906020018051939750919550935090915050600160a060020a03808416908e1614801561106557508115155b1561109d5761108e8a8867ffffffffffffffff8816602b811061108457fe5b6020020151611634565b995061109a8987611634565b98505b600190940193610f7f565b50979b969a509598505050505050505050565b60006004828154811015156110cc57fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a038083166000908152600160209081526040808320339094168352929052205467ffffffffffffffff166111238282856113a6565b600160a060020a038085166000908152600160209081526040808320339094168352929052208151815467ffffffffffffffff191667ffffffffffffffff919091161781556020820151815467ffffffffffffffff91909116604060020a026fffffffffffffffff0000000000000000199091161781556040820151815467ffffffffffffffff91909116608060020a0277ffffffffffffffff00000000000000000000000000000000199091161781556060820151600182018054600160a060020a031916600160a060020a03929092169190911790556080820151600282018054600160a060020a031916600160a060020a039290921691909117905560a08201516003919091018054600160a060020a031916600160a060020a03909216919091179055507f74d96c2392d2b95d269942d650f623d0c7fb1f54a58e773709f4284f7b449cd7338484604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b6000806000806000806103b96002600089600160a060020a0316600160a060020a0316815260200190815260200160002060c06040519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a08201525b6000808080808086518760200151886040015189606001518a608001518b60a00151949c939b5091995097509550909350915050565b600080826040015167ffffffffffffffff161180156113a0575060006060830151600160a060020a031614155b92915050565b6113ae6116de565b600160a060020a03821660009081526003602052604081205460ff1615156114235760048054600181016113e2838261174e565b5060009182526020808320919091018054600160a060020a031916600160a060020a03871690811790915582526003905260409020805460ff191660011790555b5060065467ffffffffffffffff1660c0604051908101604090815267ffffffffffffffff8084168084528782166020808601919091524390921683850152600160a060020a03808a1660608601523381166080860152871660a085015260009081526005909152208151815467ffffffffffffffff191667ffffffffffffffff919091161781556020820151815467ffffffffffffffff91909116604060020a026fffffffffffffffff0000000000000000199091161781556040820151815467ffffffffffffffff91909116608060020a0277ffffffffffffffff00000000000000000000000000000000199091161781556060820151600182018054600160a060020a031916600160a060020a03929092169190911790556080820151600282018054600160a060020a031916600160a060020a039290921691909117905560a08201516003919091018054600160a060020a031916600160a060020a03909216919091179055506006805467ffffffffffffffff19811667ffffffffffffffff9182166001018216179091558116600090815260056020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015295945050505050565b61163c611713565b600083516001016040518059106116505750595b90808252806020026020018201604052509150600090505b83518110156116b25783818151811061167d57fe5b9060200190602002015182828151811061169357fe5b600160a060020a03909216602092830290910190910152600101611668565b82828551815181106116c057fe5b600160a060020a039092166020928302909101909101525092915050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b60206040519081016040526000815290565b610560604051908101604052602b815b6000815260001990910190602001816117355790505090565b81548183558181151161177257600083815260209020611772918101908301611777565b505050565b61179591905b80821115611791576000815560010161177d565b5090565b905600a165627a7a723058201c080e492d2b5154da88b259df7db87ce8f4daa8416450c1a03cc1560365fa3f0029000000000000000000000000d78d4beabfd3054390d10aeb4258dc2d867f5e17

Deployed Bytecode

0x6060604052600436106100955763ffffffff60e060020a60003504166305b9cb3c811461009a57806330381f5f146100ca5780635fc31aeb1461013957806361efc7db1461015e5780638da5cb5b14610183578063b1194bc4146101b2578063b2b28679146101d3578063d8e6b249146101f8578063dbf1ede3146102b0578063df6e7a5f146102c6578063efc63bd3146102eb575b600080fd5b34156100a557600080fd5b6100ad61030a565b60405167ffffffffffffffff909116815260200160405180910390f35b34156100d557600080fd5b6100ea67ffffffffffffffff6004351661031a565b60405167ffffffffffffffff9687168152948616602086015292909416604080850191909152600160a060020a03918216606085015293811660808401521660a082015260c001905180910390f35b341561014457600080fd5b6100ea600160a060020a03600435811690602435166103cd565b341561016957600080fd5b6100ea600160a060020a03600435811690602435166104a2565b341561018e57600080fd5b6101966106cf565b604051600160a060020a03909116815260200160405180910390f35b34156101bd57600080fd5b6101d1600160a060020a03600435166106de565b005b34156101de57600080fd5b6100ad600160a060020a0360043581169060243516610873565b341561020357600080fd5b610217600160a060020a03600435166109bb565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561025b578082015183820152602001610243565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561029a578082015183820152602001610282565b5050505090500194505050505060405180910390f35b34156102bb57600080fd5b6101966004356110bb565b34156102d157600080fd5b6101d1600160a060020a03600435811690602435166110e7565b34156102f657600080fd5b6100ea600160a060020a03600435166112a4565b60065467ffffffffffffffff1681565b6000806000806000806103b9600560008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060c06040519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015261133d565b949c939b5091995097509550909350915050565b60008060008060008061048d6001600089600160a060020a0316600160a060020a0316815260200190815260200160002060008a600160a060020a0316600160a060020a0316815260200190815260200160002060c06040519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015261133d565b949d939c50919a509850965090945092505050565b6000806000806000806104b36116de565b6104bb6116de565b600160a060020a03808a166000908152600160209081526040808320938e168352929052818120909182919060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a0820152935061055884611373565b15610577576105668461133d565b9950995099509950995099506106c1565b600160a060020a038c16600090815260026020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a0820152925061060383611373565b15610611576105668361133d565b600654604060020a9004600160a060020a03166361efc7db8d8d60006040516080015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401608060405180830381600087803b151561067957600080fd5b6102c65a03f1151561068a57600080fd5b50505060405180519060200180519060200180519060200180515060009d508d9c508c9b509199508e98508d975089945091925050505b505050509295509295509295565b600054600160a060020a031681565b600160a060020a03331660009081526002602052604081205467ffffffffffffffff169061070f90839083906113a6565b600160a060020a03331660009081526002602052604090208151815467ffffffffffffffff191667ffffffffffffffff919091161781556020820151815467ffffffffffffffff91909116604060020a026fffffffffffffffff0000000000000000199091161781556040820151815467ffffffffffffffff91909116608060020a0277ffffffffffffffff00000000000000000000000000000000199091161781556060820151600182018054600160a060020a031916600160a060020a03929092169190911790556080820151600282018054600160a060020a031916600160a060020a039290921691909117905560a08201516003919091018054600160a060020a031916600160a060020a03909216919091179055507f80e8ffc3c5dd5acf237f5c6e5855a312b8778e3df8ac7346f51155bcfeacf7cd3383604051600160a060020a039283168152911660208201526040908101905180910390a15050565b600061087d6116de565b600160a060020a03808416600090815260016020908152604080832093881683529290528190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a039081166060830152600283015481166080830152600390920154821660a082015291508316151561099857600160a060020a038416600090815260026020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015290505b6109a181611373565b156109af57805191506109b4565b600091505b5092915050565b6109c3611713565b6109cb611713565b6109d3611713565b6109db611713565b6109e36116de565b6109eb611725565b600080600080600080610560604051908101604090815273e8193bc3d5f3f482406706f843a5f161563f37bf8252737a933c8a0eb99e8bdb07e1b42aa10872845394b760208301527388341191efa40cd031f46138817830a5d3545ba99082015273b6dc48e8583c8c6e320daf918cadef65f2d85b46606082015273f02d417c8c6736dbc7eb089dc6738b950c2f444e608082015273f66fe29ad1e87104a8816ad1a8427976d83cb03360a082015273fd5955bf412b7537873cbb77eb1e39871e20e14260c082015273e83efc57d9c487acc55a7b62896da43928e64c3e60e082015273d0c41588b27e64576dda4e6a08452c59f5a2b2dd61010082015273640370126072f6b890d4ca2e893103e9363dbe8b61012082015273887dbacd9a0e58b46065f93cc1f82a52defdb97961014082015273e223771699665bcb0aaf7930277c35d3dec573af61016082015273364b503b0e86b20b7ac1484c247de50f10dfd8cf610180820152734512f5867d91d6b0131427b89bdb7b460ff303976101a082015273f5fbff477f5bf5a950f661b70f6b5364875a1bd76101c0820152739ebb758483da174dc3d411386b75afd093cefcf16101e082015273499b36a6b92f91524a6b5b8ff321740e84a2b57e6102008201527305d6e87fd6326f977a2d8c67b9f3ecc030527261610220820152737f679053a1679de7913885f0db1278e91e8927ca61024082015273f9cd08d36e972bb070bbd2c1598d21045259ab0d61026082015273a5617800b8fd754fb81f47a65dc49a60accc343261028082015273a9f6238b83fcb65eca3c3189a0dce8689e275d576102a082015273a30f92f9cc478562e0dde73665f1b7addddc2dcd6102c08201527370278c15a29f0ef62a845e1ac31ae41988f24c106102e082015273d42622471946ccff9f7b9246e8d786c74410bfcc61030082015273d65955ef0f8890d7996f5a7b7b5b05b80605c06a61032082015273b46f4ebdd6404686d785edace37d66f815ed7cf861034082015273f4d3aa8091d23f97706177cdd94b8df4c7e4c2fb610360820152734fe584ffc9c755bf6aa9354323e97166958475c961038082015273b4802f497bf6238a29e043103ee6eeae1331bfde6103a0820152733eee0f8fadc1c29bfb782e70067a8d91b4dded566103c08201527346381f606014c5d68b38ad5c7e8f9401149faa756103e082015273c81be3496d053364255f9cb052f81ca9e84a9cf361040082015273a632837b095d8fa2ef46a22099f91fe10b3f05386104208201527319fa94aebd4bc694802b566ae65aed8f07b992f761044082015273e9ef7664d36191ad7ab001b9bb0aafacd260277f6104608201527317dab6bb606f32447aff568c1d0eedc3649c101c61048082015273aba96c77e3dd7eea16cc5ebdaaa05483cdd0ff896104a08201527357d36b0b5f5e333818b1ce072a6d84218e734dec6104c08201527359e7612706dfb1105220ccb97aaf3cbf304cd6086104e082015273cf7ec4dca84b5c8dc7896c38b4834dc6379bb73d610500820152735ed1da246ea52f302fff9391e56ec64b9c14cce1610520820152734cabfd1796ec9ead77457768e5ca782a1a9e576f6105408201529650739e88613418cf03dca54d6a2cf6ad934a78c7a17a9550600194505b60065467ffffffffffffffff9081169086161015610f7a5767ffffffffffffffff8516600090815260056020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a0390811660608301908152600284015482166080840152600390930154811660a08301529099508e169051600160a060020a03161415610f6f57610f5c8a8960800151611634565b9950610f6c898960a00151611634565b98505b600190940193610e9d565b600094505b602b8567ffffffffffffffff1610156110a857600654604060020a9004600160a060020a03166361efc7db8867ffffffffffffffff8816602b8110610fc057fe5b60200201518860006040516080015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401608060405180830381600087803b151561101457600080fd5b6102c65a03f1151561102557600080fd5b5050506040518051906020018051906020018051906020018051939750919550935090915050600160a060020a03808416908e1614801561106557508115155b1561109d5761108e8a8867ffffffffffffffff8816602b811061108457fe5b6020020151611634565b995061109a8987611634565b98505b600190940193610f7f565b50979b969a509598505050505050505050565b60006004828154811015156110cc57fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a038083166000908152600160209081526040808320339094168352929052205467ffffffffffffffff166111238282856113a6565b600160a060020a038085166000908152600160209081526040808320339094168352929052208151815467ffffffffffffffff191667ffffffffffffffff919091161781556020820151815467ffffffffffffffff91909116604060020a026fffffffffffffffff0000000000000000199091161781556040820151815467ffffffffffffffff91909116608060020a0277ffffffffffffffff00000000000000000000000000000000199091161781556060820151600182018054600160a060020a031916600160a060020a03929092169190911790556080820151600282018054600160a060020a031916600160a060020a039290921691909117905560a08201516003919091018054600160a060020a031916600160a060020a03909216919091179055507f74d96c2392d2b95d269942d650f623d0c7fb1f54a58e773709f4284f7b449cd7338484604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b6000806000806000806103b96002600089600160a060020a0316600160a060020a0316815260200190815260200160002060c06040519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a08201525b6000808080808086518760200151886040015189606001518a608001518b60a00151949c939b5091995097509550909350915050565b600080826040015167ffffffffffffffff161180156113a0575060006060830151600160a060020a031614155b92915050565b6113ae6116de565b600160a060020a03821660009081526003602052604081205460ff1615156114235760048054600181016113e2838261174e565b5060009182526020808320919091018054600160a060020a031916600160a060020a03871690811790915582526003905260409020805460ff191660011790555b5060065467ffffffffffffffff1660c0604051908101604090815267ffffffffffffffff8084168084528782166020808601919091524390921683850152600160a060020a03808a1660608601523381166080860152871660a085015260009081526005909152208151815467ffffffffffffffff191667ffffffffffffffff919091161781556020820151815467ffffffffffffffff91909116604060020a026fffffffffffffffff0000000000000000199091161781556040820151815467ffffffffffffffff91909116608060020a0277ffffffffffffffff00000000000000000000000000000000199091161781556060820151600182018054600160a060020a031916600160a060020a03929092169190911790556080820151600282018054600160a060020a031916600160a060020a039290921691909117905560a08201516003919091018054600160a060020a031916600160a060020a03909216919091179055506006805467ffffffffffffffff19811667ffffffffffffffff9182166001018216179091558116600090815260056020526040908190209060c090519081016040908152825467ffffffffffffffff8082168452604060020a820481166020850152608060020a90910416908201526001820154600160a060020a03908116606083015260028301548116608083015260039092015490911660a082015295945050505050565b61163c611713565b600083516001016040518059106116505750595b90808252806020026020018201604052509150600090505b83518110156116b25783818151811061167d57fe5b9060200190602002015182828151811061169357fe5b600160a060020a03909216602092830290910190910152600101611668565b82828551815181106116c057fe5b600160a060020a039092166020928302909101909101525092915050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b60206040519081016040526000815290565b610560604051908101604052602b815b6000815260001990910190602001816117355790505090565b81548183558181151161177257600083815260209020611772918101908301611777565b505050565b61179591905b80821115611791576000815560010161177d565b5090565b905600a165627a7a723058201c080e492d2b5154da88b259df7db87ce8f4daa8416450c1a03cc1560365fa3f0029

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

000000000000000000000000d78d4beabfd3054390d10aeb4258dc2d867f5e17

-----Decoded View---------------
Arg [0] : prevDelegationSC (address): 0xd78D4beAbFD3054390D10aeb4258dC2D867f5e17

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d78d4beabfd3054390d10aeb4258dc2d867f5e17


Swarm Source

bzzr://1c080e492d2b5154da88b259df7db87ce8f4daa8416450c1a03cc1560365fa3f

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.