Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 147 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Global Deleg... | 9492829 | 1821 days ago | IN | 0 ETH | 0.00017239 | ||||
Set Global Deleg... | 9492829 | 1821 days ago | IN | 0 ETH | 0.00017239 | ||||
Set Global Deleg... | 9492828 | 1821 days ago | IN | 0 ETH | 0.00017239 | ||||
Set Global Deleg... | 9492828 | 1821 days ago | IN | 0 ETH | 0.00017239 | ||||
Set Global Deleg... | 9492828 | 1821 days ago | IN | 0 ETH | 0.00017239 | ||||
Set Global Deleg... | 9492806 | 1821 days ago | IN | 0 ETH | 0.00017239 | ||||
Set Global Deleg... | 9492806 | 1821 days ago | IN | 0 ETH | 0.00017239 | ||||
Set Token Delega... | 9488455 | 1822 days ago | IN | 0 ETH | 0.00042344 | ||||
Set Token Delega... | 9488448 | 1822 days ago | IN | 0 ETH | 0.00052097 | ||||
Set Global Deleg... | 9470647 | 1825 days ago | IN | 0 ETH | 0.00051719 | ||||
Set Global Deleg... | 9470635 | 1825 days ago | IN | 0 ETH | 0.00051719 | ||||
Set Global Deleg... | 9470626 | 1825 days ago | IN | 0 ETH | 0.00051719 | ||||
Set Global Deleg... | 8424440 | 1995 days ago | IN | 0 ETH | 0.00130792 | ||||
Set Global Deleg... | 8423634 | 1996 days ago | IN | 0 ETH | 0.00127661 | ||||
Set Global Deleg... | 8423633 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423633 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423633 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423633 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423632 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423631 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423626 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423624 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8423624 | 1996 days ago | IN | 0 ETH | 0.00168161 | ||||
Set Global Deleg... | 8422946 | 1996 days ago | IN | 0 ETH | 0.00099292 | ||||
Set Token Delega... | 8414925 | 1997 days ago | IN | 0 ETH | 0.00015868 |
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
Contract Source Code (Solidity)
/** *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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.