ETH Price: $3,083.10 (+0.04%)
Gas: 12 Gwei

Contract

0x7D3D221A8D8AbDd868E8e88811fFaF033e68E108
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Drain120874742021-03-22 8:17:351124 days ago1616401055IN
WeDEX: Beta 1
0 ETH0.00603301115
Drain120874472021-03-22 8:09:541124 days ago1616400594IN
WeDEX: Beta 1
0 ETH0.00461708114.95
Withdraw Exchang...120762772021-03-20 14:41:561126 days ago1616251316IN
WeDEX: Beta 1
0 ETH0.00745454167
Withdraw From Me...96028942020-03-04 5:46:411507 days ago1583300801IN
WeDEX: Beta 1
0 ETH0.004076253
Withdraw From Me...96028922020-03-04 5:46:361507 days ago1583300796IN
WeDEX: Beta 1
0 ETH0.004047893
Withdraw From Me...96028922020-03-04 5:46:361507 days ago1583300796IN
WeDEX: Beta 1
0 ETH0.004076113
Withdraw From Me...96028922020-03-04 5:46:361507 days ago1583300796IN
WeDEX: Beta 1
0 ETH0.00404793
Withdraw From Me...96028922020-03-04 5:46:361507 days ago1583300796IN
WeDEX: Beta 1
0 ETH0.004121053
Withdraw From Me...96028912020-03-04 5:46:221507 days ago1583300782IN
WeDEX: Beta 1
0 ETH0.004047763
Withdraw From Me...96028912020-03-04 5:46:221507 days ago1583300782IN
WeDEX: Beta 1
0 ETH0.00404773
Withdraw From Me...96028862020-03-04 5:44:181507 days ago1583300658IN
WeDEX: Beta 1
0 ETH0.004076223
Withdraw From Me...96028862020-03-04 5:44:181507 days ago1583300658IN
WeDEX: Beta 1
0 ETH0.0040483
Withdraw From Me...96028862020-03-04 5:44:181507 days ago1583300658IN
WeDEX: Beta 1
0 ETH0.004076163
Withdraw From Me...96028862020-03-04 5:44:181507 days ago1583300658IN
WeDEX: Beta 1
0 ETH0.00404793
Withdraw From Me...96028832020-03-04 5:43:261507 days ago1583300606IN
WeDEX: Beta 1
0 ETH0.004121063
Withdraw From Me...96028822020-03-04 5:43:151507 days ago1583300595IN
WeDEX: Beta 1
0 ETH0.004047773
Withdraw From Me...96028822020-03-04 5:43:151507 days ago1583300595IN
WeDEX: Beta 1
0 ETH0.004075893
Withdraw From Me...96028822020-03-04 5:43:151507 days ago1583300595IN
WeDEX: Beta 1
0 ETH0.004047713
Withdraw From Me...96028802020-03-04 5:42:391507 days ago1583300559IN
WeDEX: Beta 1
0 ETH0.004076093
Withdraw From Me...96028802020-03-04 5:42:391507 days ago1583300559IN
WeDEX: Beta 1
0 ETH0.004047763
Withdraw From Me...96028802020-03-04 5:42:391507 days ago1583300559IN
WeDEX: Beta 1
0 ETH0.004075993
Withdraw From Me...96028802020-03-04 5:42:391507 days ago1583300559IN
WeDEX: Beta 1
0 ETH0.004047773
Withdraw From Me...96028792020-03-04 5:42:331507 days ago1583300553IN
WeDEX: Beta 1
0 ETH0.004075933
Withdraw From Me...96028792020-03-04 5:42:331507 days ago1583300553IN
WeDEX: Beta 1
0 ETH0.004047683
Withdraw From Me...96028792020-03-04 5:42:331507 days ago1583300553IN
WeDEX: Beta 1
0 ETH0.004075763
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
120874472021-03-22 8:09:541124 days ago1616400594
WeDEX: Beta 1
1.31693665 ETH
96028922020-03-04 5:46:361507 days ago1583300796
WeDEX: Beta 1
0.00000001 ETH
96028922020-03-04 5:46:361507 days ago1583300796
WeDEX: Beta 1
0.00009 ETH
96028912020-03-04 5:46:221507 days ago1583300782
WeDEX: Beta 1
0.00000802 ETH
96028912020-03-04 5:46:221507 days ago1583300782
WeDEX: Beta 1
0.06 ETH
96028862020-03-04 5:44:181507 days ago1583300658
WeDEX: Beta 1
0.408246 ETH
96028862020-03-04 5:44:181507 days ago1583300658
WeDEX: Beta 1
0.00122177 ETH
96028822020-03-04 5:43:151507 days ago1583300595
WeDEX: Beta 1
0.26604672 ETH
96028822020-03-04 5:43:151507 days ago1583300595
WeDEX: Beta 1
0.01997475 ETH
96028802020-03-04 5:42:391507 days ago1583300559
WeDEX: Beta 1
0.00000069 ETH
96028802020-03-04 5:42:391507 days ago1583300559
WeDEX: Beta 1
0.0089581 ETH
96028792020-03-04 5:42:331507 days ago1583300553
WeDEX: Beta 1
0.02773386 ETH
96028792020-03-04 5:42:331507 days ago1583300553
WeDEX: Beta 1
0.0000001 ETH
96028782020-03-04 5:42:281507 days ago1583300548
WeDEX: Beta 1
0.00000006 ETH
96028782020-03-04 5:42:281507 days ago1583300548
WeDEX: Beta 1
0.00251011 ETH
96028772020-03-04 5:42:211507 days ago1583300541
WeDEX: Beta 1
0.00000038 ETH
96028772020-03-04 5:42:211507 days ago1583300541
WeDEX: Beta 1
0.00974224 ETH
96028762020-03-04 5:42:131507 days ago1583300533
WeDEX: Beta 1
0.00299986 ETH
96028762020-03-04 5:42:131507 days ago1583300533
WeDEX: Beta 1
0.00000017 ETH
96028752020-03-04 5:42:071507 days ago1583300527
WeDEX: Beta 1
0.00000008 ETH
96028712020-03-04 5:41:211507 days ago1583300481
WeDEX: Beta 1
0.00000016 ETH
96028712020-03-04 5:41:211507 days ago1583300481
WeDEX: Beta 1
0.0018835 ETH
96028702020-03-04 5:41:121507 days ago1583300472
WeDEX: Beta 1
0.00000002 ETH
96028692020-03-04 5:41:071507 days ago1583300467
WeDEX: Beta 1
0.00000481 ETH
96028682020-03-04 5:40:591507 days ago1583300459
WeDEX: Beta 1
0.00231807 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AutoUpgradabilityProxy

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *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

Contract ABI

[{"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"}]

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.