WeDEX: Beta 1 contract address has depreciated and been replaced by a new address - WeDEX: Beta 2.
More Info
Private Name Tags
ContractCreator
Sponsored
Latest 25 from a total of 21,551 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Drain | 12087474 | 920 days 13 hrs ago | IN | 0 ETH | 0.00603301 | ||||
Drain | 12087447 | 920 days 13 hrs ago | IN | 0 ETH | 0.00461708 | ||||
Withdraw Exchang... | 12076277 | 922 days 6 hrs ago | IN | 0 ETH | 0.00745454 | ||||
Withdraw From Me... | 9602894 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407625 | ||||
Withdraw From Me... | 9602892 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00404789 | ||||
Withdraw From Me... | 9602892 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407611 | ||||
Withdraw From Me... | 9602892 | 1303 days 15 hrs ago | IN | 0 ETH | 0.0040479 | ||||
Withdraw From Me... | 9602892 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00412105 | ||||
Withdraw From Me... | 9602891 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00404776 | ||||
Withdraw From Me... | 9602891 | 1303 days 15 hrs ago | IN | 0 ETH | 0.0040477 | ||||
Withdraw From Me... | 9602886 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407622 | ||||
Withdraw From Me... | 9602886 | 1303 days 15 hrs ago | IN | 0 ETH | 0.004048 | ||||
Withdraw From Me... | 9602886 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407616 | ||||
Withdraw From Me... | 9602886 | 1303 days 15 hrs ago | IN | 0 ETH | 0.0040479 | ||||
Withdraw From Me... | 9602883 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00412106 | ||||
Withdraw From Me... | 9602882 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00404777 | ||||
Withdraw From Me... | 9602882 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407589 | ||||
Withdraw From Me... | 9602882 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00404771 | ||||
Withdraw From Me... | 9602880 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407609 | ||||
Withdraw From Me... | 9602880 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00404776 | ||||
Withdraw From Me... | 9602880 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407599 | ||||
Withdraw From Me... | 9602880 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00404777 | ||||
Withdraw From Me... | 9602879 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407593 | ||||
Withdraw From Me... | 9602879 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00404768 | ||||
Withdraw From Me... | 9602879 | 1303 days 15 hrs ago | IN | 0 ETH | 0.00407576 |
Latest 25 internal transactions (View All)
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
12087447 | 920 days 13 hrs ago | 1.31693665 ETH | ||||
9602892 | 1303 days 15 hrs ago | 0.00000001 ETH | ||||
9602892 | 1303 days 15 hrs ago | 0.00009 ETH | ||||
9602891 | 1303 days 15 hrs ago | 0.00000802 ETH | ||||
9602891 | 1303 days 15 hrs ago | 0.06 ETH | ||||
9602886 | 1303 days 15 hrs ago | 0.408246 ETH | ||||
9602886 | 1303 days 15 hrs ago | 0.00122177 ETH | ||||
9602882 | 1303 days 15 hrs ago | 0.26604672 ETH | ||||
9602882 | 1303 days 15 hrs ago | 0.01997475 ETH | ||||
9602880 | 1303 days 15 hrs ago | 0.00000069 ETH | ||||
9602880 | 1303 days 15 hrs ago | 0.0089581 ETH | ||||
9602879 | 1303 days 15 hrs ago | 0.02773386 ETH | ||||
9602879 | 1303 days 15 hrs ago | 0.0000001 ETH | ||||
9602878 | 1303 days 15 hrs ago | 0.00000006 ETH | ||||
9602878 | 1303 days 15 hrs ago | 0.00251011 ETH | ||||
9602877 | 1303 days 15 hrs ago | 0.00000038 ETH | ||||
9602877 | 1303 days 15 hrs ago | 0.00974224 ETH | ||||
9602876 | 1303 days 15 hrs ago | 0.00299986 ETH | ||||
9602876 | 1303 days 15 hrs ago | 0.00000017 ETH | ||||
9602875 | 1303 days 15 hrs ago | 0.00000008 ETH | ||||
9602871 | 1303 days 15 hrs ago | 0.00000016 ETH | ||||
9602871 | 1303 days 15 hrs ago | 0.0018835 ETH | ||||
9602870 | 1303 days 15 hrs ago | 0.00000002 ETH | ||||
9602869 | 1303 days 15 hrs ago | 0.00000481 ETH | ||||
9602868 | 1303 days 15 hrs ago | 0.00231807 ETH |
Loading...
Loading
Contract Name:
AutoUpgradabilityProxy
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/** *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
[{"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
608060405234801561001057600080fd5b506040516103db3803806103db8339818101604052602081101561003357600080fd5b505180610048816001600160e01b0361004f16565b50506100e6565b6001600160a01b0381166100c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b600060405180806103ba60219139604051908190036021019020929092555050565b6102c5806100f56000396000f3fe6080604052600436106100345760003560e01c80635c60da1b146100785780637b103999146100a95780638ce74426146100be575b600061003e6100d3565b90506001600160a01b03811661005357600080fd5b60405136600082376000803683855af43d806000843e818015610074578184f35b8184fd5b34801561008457600080fd5b5061008d6100d3565b604080516001600160a01b039092168252519081900360200190f35b3480156100b557600080fd5b5061008d6101c8565b3480156100ca57600080fd5b5061008d6101eb565b6000806100de6101c8565b60408051633a731b2f60e11b815230600482015281519293506000926001600160a01b038516926374e6365e9260248082019391829003018186803b15801561012657600080fd5b505afa15801561013a573d6000803e3d6000fd5b505050506040513d604081101561015057600080fd5b506020908101516040805163631ffbf360e01b815290519193506001600160a01b0384169263631ffbf392600480840193829003018186803b15801561019557600080fd5b505afa1580156101a9573d6000803e3d6000fd5b505050506040513d60208110156101bf57600080fd5b50519250505090565b600080604051808061027060219139604051908190036021019020549392505050565b6000806101f66101c8565b60408051633a731b2f60e11b815230600482015281519293506001600160a01b038416926374e6365e92602480840193919291829003018186803b15801561023d57600080fd5b505afa158015610251573d6000803e3d6000fd5b505050506040513d604081101561026757600080fd5b50519291505056fe6f72672e6c6f6f7072696e672e70726f746f636f6c2e76332e7265676973747279a265627a7a72315820e42b816ccaf235c960e6fa24f5a0031ab5057b5dcfeec5fb5811fc465f2a9e3b64736f6c634300050b00326f72672e6c6f6f7072696e672e70726f746f636f6c2e76332e72656769737472790000000000000000000000004c2103152a1a402af283fa52903569f05477611f
Deployed Bytecode
0x6080604052600436106100345760003560e01c80635c60da1b146100785780637b103999146100a95780638ce74426146100be575b600061003e6100d3565b90506001600160a01b03811661005357600080fd5b60405136600082376000803683855af43d806000843e818015610074578184f35b8184fd5b34801561008457600080fd5b5061008d6100d3565b604080516001600160a01b039092168252519081900360200190f35b3480156100b557600080fd5b5061008d6101c8565b3480156100ca57600080fd5b5061008d6101eb565b6000806100de6101c8565b60408051633a731b2f60e11b815230600482015281519293506000926001600160a01b038516926374e6365e9260248082019391829003018186803b15801561012657600080fd5b505afa15801561013a573d6000803e3d6000fd5b505050506040513d604081101561015057600080fd5b506020908101516040805163631ffbf360e01b815290519193506001600160a01b0384169263631ffbf392600480840193829003018186803b15801561019557600080fd5b505afa1580156101a9573d6000803e3d6000fd5b505050506040513d60208110156101bf57600080fd5b50519250505090565b600080604051808061027060219139604051908190036021019020549392505050565b6000806101f66101c8565b60408051633a731b2f60e11b815230600482015281519293506001600160a01b038416926374e6365e92602480840193919291829003018186803b15801561023d57600080fd5b505afa158015610251573d6000803e3d6000fd5b505050506040513d604081101561026757600080fd5b50519291505056fe6f72672e6c6f6f7072696e672e70726f746f636f6c2e76332e7265676973747279a265627a7a72315820e42b816ccaf235c960e6fa24f5a0031ab5057b5dcfeec5fb5811fc465f2a9e3b64736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004c2103152a1a402af283fa52903569f05477611f
-----Decoded View---------------
Arg [0] : _registry (address): 0x4c2103152a1A402af283fa52903569f05477611f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004c2103152a1a402af283fa52903569f05477611f
Deployed Bytecode Sourcemap
19109:435:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;17387:13;17403:16;:14;:16::i;:::-;17387:32;-1:-1:-1;;;;;;17434:19:0;;17426:28;;;;;;17498:4;17492:11;17532:12;17529:1;17524:3;17511:34;17614:1;17611;17597:12;17592:3;17585:5;17580:3;17567:49;17636:14;17681:4;17678:1;17673:3;17658:28;17703:6;17717:28;;;;17775:4;17770:3;17763:17;17717:28;17738:4;17733:3;17726:17;19241:300;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19241:300:0;;;:::i;:::-;;;;-1:-1:-1;;;;;19241:300:0;;;;;;;;;;;;;;18198:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18198:209:0;;;:::i;18470:239::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18470:239:0;;;:::i;19241:300::-;19315:7;19340:20;19382:10;:8;:10::i;:::-;19430:36;;;-1:-1:-1;;;19430:36:0;;19460:4;19430:36;;;;;;19340:53;;-1:-1:-1;19407:19:0;;-1:-1:-1;;;;;19430:21:0;;;;;:36;;;;;;;;;;;:21;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;19430:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19430:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19430:36:0;;;;;;19484:49;;-1:-1:-1;;;19484:49:0;;;;19430:36;;-1:-1:-1;;;;;;19484:47:0;;;;;:49;;;;;;;;;;:47;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;19484:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19484:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19484:49:0;;-1:-1:-1;;;19241:300:0;:::o;18198:209::-;18266:23;18307:16;17971:62;;;;;;;;;;;;;;;;;;18383:15;;18362:38;-1:-1:-1;;;18362:38:0:o;18470:239::-;18538:23;18579:20;18621:10;:8;:10::i;:::-;18665:36;;;-1:-1:-1;;;18665:36:0;;18695:4;18665:36;;;;;;18579:53;;-1:-1:-1;;;;;;18665:21:0;;;;;:36;;;;;;;;;;;;;:21;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;18665:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18665:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18665:36:0;;18470:239;-1:-1:-1;;18470:239:0:o
Swarm Source
bzzr://e42b816ccaf235c960e6fa24f5a0031ab5057b5dcfeec5fb5811fc465f2a9e3b
Loading...
Loading
Loading...
Loading
OVERVIEW
The address is an instance of IExchange30 contract designed by Loopring.This instance will be only used for the invitation-only beta testing on the mainnet, and it will depreciate in about 2 weeks from 24 Dec 2019.
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ 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.