Latest 25 from a total of 100,115 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw From Me... | 20408264 | 314 days ago | IN | 0 ETH | 0.00138612 | ||||
Withdraw Token N... | 15580363 | 991 days ago | IN | 0 ETH | 0.0004492 | ||||
Withdraw | 12345480 | 1499 days ago | IN | 0 ETH | 0.00241713 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00685595 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.007094 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00595677 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.0072021 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00615572 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00635662 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00612133 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00597367 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.01028318 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00730744 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00649669 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00616354 | ||||
Drain | 12010799 | 1551 days ago | IN | 0 ETH | 0.00461909 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.00596206 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.00720302 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.00636996 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.0070035 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.00602991 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.00423188 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.0061088 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.01336208 | ||||
Drain | 12010790 | 1551 days ago | IN | 0 ETH | 0.00621115 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 20408264 | 314 days ago | 0.064102 ETH | ||||
- | 12010799 | 1551 days ago | 374.64626028 ETH | ||||
- | 11780531 | 1586 days ago | 0.01099999 ETH | ||||
- | 11773633 | 1587 days ago | 0.4899 ETH | ||||
- | 11763469 | 1589 days ago | 0.68 ETH | ||||
- | 11756782 | 1590 days ago | 26.7891 ETH | ||||
- | 11755451 | 1590 days ago | 0.311 ETH | ||||
- | 11752902 | 1590 days ago | 0.0561 ETH | ||||
- | 11751819 | 1590 days ago | 0.45 ETH | ||||
- | 11749011 | 1591 days ago | 0.1065 ETH | ||||
- | 11749011 | 1591 days ago | 5.6615 ETH | ||||
- | 11745283 | 1591 days ago | 0.1123 ETH | ||||
- | 11745283 | 1591 days ago | 0.9999 ETH | ||||
- | 11745283 | 1591 days ago | 1.5662 ETH | ||||
- | 11745283 | 1591 days ago | 0.09 ETH | ||||
- | 11743812 | 1592 days ago | 0.4998 ETH | ||||
- | 11739909 | 1592 days ago | 0.2115 ETH | ||||
- | 11737546 | 1593 days ago | 0.48 ETH | ||||
- | 11737546 | 1593 days ago | 20 ETH | ||||
- | 11735988 | 1593 days ago | 0.0513 ETH | ||||
- | 11735988 | 1593 days ago | 0.05 ETH | ||||
- | 11733780 | 1593 days ago | 0.0203 ETH | ||||
- | 11730794 | 1594 days ago | 0.1213 ETH | ||||
- | 11712688 | 1596 days ago | 0.105 ETH | ||||
- | 11709973 | 1597 days ago | 1.1606 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xD97D09f3...5a56Bb51B The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
AutoUpgradabilityProxy
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-01-13 */ /** *Submitted for verification at Etherscan.io on 2019-12-05 */ /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.5.11; /// @title ReentrancyGuard /// @author Brecht Devos - <[email protected]> /// @dev Exposes a modifier that guards a function against reentrancy /// Changing the value of the same storage value multiple times in a transaction /// is cheap (starting from Istanbul) so there is no need to minimize /// the number of times the value is changed contract ReentrancyGuard { //The default value must be 0 in order to work behind a proxy. uint private _guardValue; // Use this modifier on a function to prevent reentrancy modifier nonReentrant() { // Check if the guard value has its original value require(_guardValue == 0, "REENTRANCY"); // Set the value to something else _guardValue = 1; // Function body _; // Set the value back _guardValue = 0; } } /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /// @title Ownable /// @author Brecht Devos - <[email protected]> /// @dev The Ownable contract has an owner address, and provides basic /// authorization control functions, this simplifies the implementation of /// "user permissions". contract Ownable { address public owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @dev The Ownable constructor sets the original `owner` of the contract /// to the sender. constructor() public { owner = msg.sender; } /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(msg.sender == owner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to transfer control of the contract to a /// new owner. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public onlyOwner { require(newOwner != address(0), "ZERO_ADDRESS"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(owner, address(0)); owner = address(0); } } /// @title Claimable /// @author Brecht Devos - <[email protected]> /// @dev Extension for the Ownable contract, where the ownership needs /// to be claimed. This allows the new owner to accept the transfer. contract Claimable is Ownable { address public pendingOwner; /// @dev Modifier throws if called by any account other than the pendingOwner. modifier onlyPendingOwner() { require(msg.sender == pendingOwner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to set the pendingOwner address. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public onlyOwner { require(newOwner != address(0) && newOwner != owner, "INVALID_ADDRESS"); pendingOwner = newOwner; } /// @dev Allows the pendingOwner address to finalize the transfer. function claimOwnership() public onlyPendingOwner { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /// @title IUniversalRegistry /// @dev This contract manages all registered ILoopring versions and all Loopring /// based exchanges. /// /// @author Daniel Wang - <[email protected]> contract IUniversalRegistry is Claimable, ReentrancyGuard { enum ForgeMode { AUTO_UPGRADABLE, MANUAL_UPGRADABLE, PROXIED, NATIVE } /// === Events === event ProtocolRegistered ( address indexed protocol, address indexed implementationManager, string version ); event ProtocolEnabled ( address indexed protocol ); event ProtocolDisabled ( address indexed protocol ); event DefaultProtocolChanged ( address indexed oldDefault, address indexed newDefault ); event ExchangeForged ( address indexed protocol, address indexed implementation, address indexed exchangeAddress, address owner, ForgeMode forgeMode, bool onchainDataAvailability, uint exchangeId, uint amountLRCBurned ); /// === Data === address public lrcAddress; address[] public exchanges; address[] public protocols; // IProtocol.version => IProtocol address mapping (string => address) public versionMap; /// === Functions === /// @dev Registers a new protocol. /// @param protocol The address of the new protocol. /// @param implementation The new protocol's default implementation. /// @return implManager A new implementation manager to manage the protocol's implementations. function registerProtocol( address protocol, address implementation ) external returns (address implManager); /// @dev Sets the default protocol. /// @param protocol The new default protocol. function setDefaultProtocol( address protocol ) external; /// @dev Enables a protocol. /// @param protocol The address of the protocol. function enableProtocol( address protocol ) external; /// @dev Disables a protocol. /// @param protocol The address of the protocol. function disableProtocol( address protocol ) external; /// @dev Creates a new exchange using a specific protocol with msg.sender /// as owner and operator. /// @param forgeMode The forge mode. /// @param onchainDataAvailability IF the on-chain DA is on /// @param protocol The protocol address, use 0x0 for default. /// @param implementation The implementation to use, use 0x0 for default. /// @return exchangeAddress The new exchange's address /// @return exchangeId The new exchange's ID. function forgeExchange( ForgeMode forgeMode, bool onchainDataAvailability, address protocol, address implementation ) external returns ( address exchangeAddress, uint exchangeId ); /// @dev Returns information regarding the default protocol. /// @return protocol The address of the default protocol. /// @return implManager The address of the default protocol's implementation manager. /// @return defaultImpl The default protocol's default implementation address. /// @return defaultImplVersion The version of the default implementation. function defaultProtocol() public view returns ( address protocol, address versionmanager, address defaultImpl, string memory protocolVersion, string memory defaultImplVersion ); /// @dev Checks if a protocol has been registered. /// @param protocol The address of the protocol. /// @return registered True if the prococol is registered. function isProtocolRegistered( address protocol ) public view returns (bool registered); /// @dev Checks if a protocol has been enabled. /// @param protocol The address of the protocol. /// @return enabled True if the prococol is registered and enabled. function isProtocolEnabled( address protocol ) public view returns (bool enabled); /// @dev Checks if the addres is a registered Loopring exchange. /// @return registered True if the address is a registered exchange. function isExchangeRegistered( address exchange ) public view returns (bool registered); /// @dev Checks if the given protocol and implementation are both registered and enabled. /// @param protocol The address of the protocol. /// @param implementation The address of the implementation. /// @return enabled True if both the protocol and the implementation are registered and enabled. function isProtocolAndImplementationEnabled( address protocol, address implementation ) public view returns (bool enabled); /// @dev Returns the protocol associated with an exchange. /// @param exchangeAddress The address of the exchange. /// @return protocol The protocol address. /// @return implementation The protocol's implementation. /// @return enabled Whether the protocol is enabled. function getExchangeProtocol( address exchangeAddress ) public view returns ( address protocol, address implementation ); }/* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /// @title IImplementationManager /// @dev This contract manages implementation versions for a specific ILoopring /// contract. The ILoopring contract can be considered as the "major" version /// of a Loopring protocol and each IExchange implementation can be considered /// as a "minor" version. Multiple IExchange contracts can use the same /// ILoopring contracts. /// /// @author Daniel Wang - <[email protected]> contract IImplementationManager is Claimable, ReentrancyGuard { /// === Events === event DefaultChanged ( address indexed oldDefault, address indexed newDefault ); event Registered ( address indexed implementation, string version ); event Enabled ( address indexed implementation ); event Disabled ( address indexed implementation ); /// === Data === address public protocol; address public defaultImpl; address[] public implementations; // version strings => IExchange addresses mapping (string => address) public versionMap; /// === Functions === /// @dev Registers a new implementation. /// @param implementation The implemenation to add. function register( address implementation ) external; /// @dev Sets the default implemenation. /// @param implementation The new default implementation. function setDefault( address implementation ) external; /// @dev Enables an implemenation. /// @param implementation The implementation to be enabled. function enable( address implementation ) external; /// @dev Disables an implemenation. /// @param implementation The implementation to be disabled. function disable( address implementation ) external; /// @dev Returns version information. /// @return protocolVersion The protocol's version. /// @return defaultImplVersion The default implementation's version. function version() public view returns ( string memory protocolVersion, string memory defaultImplVersion ); /// @dev Returns the latest implemenation added. /// @param implementation The latest implemenation added. function latest() public view returns (address implementation); /// @dev Returns if an implementation has been registered. /// @param registered True if the implementation is registered. function isRegistered( address implementation ) public view returns (bool registered); /// @dev Returns if an implementation has been registered and enabled. /// @param enabled True if the implementation is registered and enabled. function isEnabled( address implementation ) public view returns (bool enabled); }/* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* Copyright 2017 Loopring Project Ltd (Loopring Foundation). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // This code is taken from https://github.com/OpenZeppelin/openzeppelin-labs // with minor modifications. /** * @title Proxy * @dev Gives the possibility to delegate any call to a foreign implementation. */ contract Proxy { /** * @dev Tells the address of the implementation where every call will be delegated. * @return address of the implementation to which it will be delegated */ function implementation() public view returns (address); /** * @dev Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns */ function () payable external { address _impl = implementation(); require(_impl != address(0)); assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize) let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0) let size := returndatasize returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } } /// @title IExchangeProxy /// @author Daniel Wang - <[email protected]> contract IExchangeProxy is Proxy { bytes32 private constant registryPosition = keccak256( "org.loopring.protocol.v3.registry" ); constructor(address _registry) public { setRegistry(_registry); } /// @dev Returns the exchange's registry address. function registry() public view returns (address registryAddress) { bytes32 position = registryPosition; assembly { registryAddress := sload(position) } } /// @dev Returns the exchange's protocol address. function protocol() public view returns (address protocolAddress) { IUniversalRegistry r = IUniversalRegistry(registry()); (protocolAddress, ) = r.getExchangeProtocol(address(this)); } function setRegistry(address _registry) private { require(_registry != address(0), "ZERO_ADDRESS"); bytes32 position = registryPosition; assembly { sstore(position, _registry) } } } /// @title AutoUpgradabilityProxy /// @dev This proxy is designed to support automatic upgradability. /// @author Daniel Wang - <[email protected]> contract AutoUpgradabilityProxy is IExchangeProxy { constructor(address _registry) public IExchangeProxy(_registry) {} function implementation() public view returns (address) { IUniversalRegistry r = IUniversalRegistry(registry()); (, address managerAddr) = r.getExchangeProtocol(address(this)); return IImplementationManager(managerAddr).defaultImpl(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"registryAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"protocol","outputs":[{"internalType":"address","name":"protocolAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_registry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]
Contract Creation Code
0x608060405234801561001057600080fd5b506040516103db3803806103db8339818101604052602081101561003357600080fd5b505180610048816001600160e01b0361004f16565b50506100e6565b6001600160a01b0381166100c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b600060405180806103ba60219139604051908190036021019020929092555050565b6102c5806100f56000396000f3fe6080604052600436106100345760003560e01c80635c60da1b146100785780637b103999146100a95780638ce74426146100be575b600061003e6100d3565b90506001600160a01b03811661005357600080fd5b60405136600082376000803683855af43d806000843e818015610074578184f35b8184fd5b34801561008457600080fd5b5061008d6100d3565b604080516001600160a01b039092168252519081900360200190f35b3480156100b557600080fd5b5061008d6101c8565b3480156100ca57600080fd5b5061008d6101eb565b6000806100de6101c8565b60408051633a731b2f60e11b815230600482015281519293506000926001600160a01b038516926374e6365e9260248082019391829003018186803b15801561012657600080fd5b505afa15801561013a573d6000803e3d6000fd5b505050506040513d604081101561015057600080fd5b506020908101516040805163631ffbf360e01b815290519193506001600160a01b0384169263631ffbf392600480840193829003018186803b15801561019557600080fd5b505afa1580156101a9573d6000803e3d6000fd5b505050506040513d60208110156101bf57600080fd5b50519250505090565b600080604051808061027060219139604051908190036021019020549392505050565b6000806101f66101c8565b60408051633a731b2f60e11b815230600482015281519293506001600160a01b038416926374e6365e92602480840193919291829003018186803b15801561023d57600080fd5b505afa158015610251573d6000803e3d6000fd5b505050506040513d604081101561026757600080fd5b50519291505056fe6f72672e6c6f6f7072696e672e70726f746f636f6c2e76332e7265676973747279a265627a7a723158206b637acb6d50c12eb63348b284a4be3e4b2a319c97c1b962ebb15a959e9f327e64736f6c634300050b00326f72672e6c6f6f7072696e672e70726f746f636f6c2e76332e726567697374727900000000000000000000000036f568ef555df25be4b6e15d16994f3a8374214e
Deployed Bytecode
0x6080604052600436106100345760003560e01c80635c60da1b146100785780637b103999146100a95780638ce74426146100be575b600061003e6100d3565b90506001600160a01b03811661005357600080fd5b60405136600082376000803683855af43d806000843e818015610074578184f35b8184fd5b34801561008457600080fd5b5061008d6100d3565b604080516001600160a01b039092168252519081900360200190f35b3480156100b557600080fd5b5061008d6101c8565b3480156100ca57600080fd5b5061008d6101eb565b6000806100de6101c8565b60408051633a731b2f60e11b815230600482015281519293506000926001600160a01b038516926374e6365e9260248082019391829003018186803b15801561012657600080fd5b505afa15801561013a573d6000803e3d6000fd5b505050506040513d604081101561015057600080fd5b506020908101516040805163631ffbf360e01b815290519193506001600160a01b0384169263631ffbf392600480840193829003018186803b15801561019557600080fd5b505afa1580156101a9573d6000803e3d6000fd5b505050506040513d60208110156101bf57600080fd5b50519250505090565b600080604051808061027060219139604051908190036021019020549392505050565b6000806101f66101c8565b60408051633a731b2f60e11b815230600482015281519293506001600160a01b038416926374e6365e92602480840193919291829003018186803b15801561023d57600080fd5b505afa158015610251573d6000803e3d6000fd5b505050506040513d604081101561026757600080fd5b50519291505056fe6f72672e6c6f6f7072696e672e70726f746f636f6c2e76332e7265676973747279a265627a7a723158206b637acb6d50c12eb63348b284a4be3e4b2a319c97c1b962ebb15a959e9f327e64736f6c634300050b0032
Deployed Bytecode Sourcemap
19180:435:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;17458:13;17474:16;:14;:16::i;:::-;17458:32;-1:-1:-1;;;;;;17505:19:0;;17497:28;;;;;;17569:4;17563:11;17603:12;17600:1;17595:3;17582:34;17685:1;17682;17668:12;17663:3;17656:5;17651:3;17638:49;17707:14;17752:4;17749:1;17744:3;17729:28;17774:6;17788:28;;;;17846:4;17841:3;17834:17;17788:28;17809:4;17804:3;17797:17;19312:300;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19312:300:0;;;:::i;:::-;;;;-1:-1:-1;;;;;19312:300:0;;;;;;;;;;;;;;18269:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18269:209:0;;;:::i;18541:239::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18541:239:0;;;:::i;19312:300::-;19386:7;19411:20;19453:10;:8;:10::i;:::-;19501:36;;;-1:-1:-1;;;19501:36:0;;19531:4;19501:36;;;;;;19411:53;;-1:-1:-1;19478:19:0;;-1:-1:-1;;;;;19501:21:0;;;;;:36;;;;;;;;;;;:21;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;19501:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19501:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19501:36:0;;;;;;19555:49;;-1:-1:-1;;;19555:49:0;;;;19501:36;;-1:-1:-1;;;;;;19555:47:0;;;;;:49;;;;;;;;;;:47;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;19555:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19555:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19555:49:0;;-1:-1:-1;;;19312:300:0;:::o;18269:209::-;18337:23;18378:16;18042:62;;;;;;;;;;;;;;;;;;18454:15;;18433:38;-1:-1:-1;;;18433:38:0:o;18541:239::-;18609:23;18650:20;18692:10;:8;:10::i;:::-;18736:36;;;-1:-1:-1;;;18736:36:0;;18766:4;18736:36;;;;;;18650:53;;-1:-1:-1;;;;;;18736:21:0;;;;;:36;;;;;;;;;;;;;:21;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;18736:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18736:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18736:36:0;;18541:239;-1:-1:-1;;18541:239:0:o
Swarm Source
bzzr://6b637acb6d50c12eb63348b284a4be3e4b2a319c97c1b962ebb15a959e9f327e
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.