ETH Price: $2,322.74 (+1.26%)

Contract

0x77e540a8d7c31fF2F97d8295F45845144Ddc1360

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Parent Transaction Hash Block From To
8395392025-02-03 17:08:0524 days ago1738602485  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SocketDeployFactory

Compiler Version
v0.8.24+commit.e11b9ed9

ZkSolc Version
v1.5.11

Optimization Enabled:
Yes with Mode 3

Other Settings:
paris EvmVersion
File 1 of 6 : SocketDeployFactory.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "../utils/Ownable.sol";
import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol";
import {ERC20} from "solmate/tokens/ERC20.sol";
import {ISocketBridgeBase} from "../interfaces/ISocketBridgeBase.sol";

/**
 * @dev In the constructor, set up the initialization code for socket
 * contracts as well as the keccak256 hash of the given initialization code.
 * that will be used to deploy any transient contracts, which will deploy any
 * socket contracts that require the use of a constructor.
 *
 * Socket contract initialization code (29 bytes):
 *
 *       0x5860208158601c335a63aaf10f428752fa158151803b80938091923cf3
 *
 * Description:
 *
 * pc|op|name         | [stack]                                | <memory>
 *
 * ** set the first stack item to zero - used later **
 * 00 58 getpc          [0]                                       <>
 *
 * ** set second stack item to 32, length of word returned from staticcall **
 * 01 60 push1
 * 02 20 outsize        [0, 32]                                   <>
 *
 * ** set third stack item to 0, position of word returned from staticcall **
 * 03 81 dup2           [0, 32, 0]                                <>
 *
 * ** set fourth stack item to 4, length of selector given to staticcall **
 * 04 58 getpc          [0, 32, 0, 4]                             <>
 *
 * ** set fifth stack item to 28, position of selector given to staticcall **
 * 05 60 push1
 * 06 1c inpos          [0, 32, 0, 4, 28]                         <>
 *
 * ** set the sixth stack item to msg.sender, target address for staticcall **
 * 07 33 caller         [0, 32, 0, 4, 28, caller]                 <>
 *
 * ** set the seventh stack item to msg.gas, gas to forward for staticcall **
 * 08 5a gas            [0, 32, 0, 4, 28, caller, gas]            <>
 *
 * ** set the eighth stack item to selector, "what" to store via mstore **
 * 09 63 push4
 * 10 aaf10f42 selector [0, 32, 0, 4, 28, caller, gas, 0xaaf10f42]    <>
 *
 * ** set the ninth stack item to 0, "where" to store via mstore ***
 * 11 87 dup8           [0, 32, 0, 4, 28, caller, gas, 0xaaf10f42, 0] <>
 *
 * ** call mstore, consume 8 and 9 from the stack, place selector in memory **
 * 12 52 mstore         [0, 32, 0, 4, 0, caller, gas]             <0xaaf10f42>
 *
 * ** call staticcall, consume items 2 through 7, place address in memory **
 * 13 fa staticcall     [0, 1 (if successful)]                    <address>
 *
 * ** flip success bit in second stack item to set to 0 **
 * 14 15 iszero         [0, 0]                                    <address>
 *
 * ** push a third 0 to the stack, position of address in memory **
 * 15 81 dup2           [0, 0, 0]                                 <address>
 *
 * ** place address from position in memory onto third stack item **
 * 16 51 mload          [0, 0, address]                           <>
 *
 * ** place address to fourth stack item for extcodesize to consume **
 * 17 80 dup1           [0, 0, address, address]                  <>
 *
 * ** get extcodesize on fourth stack item for extcodecopy **
 * 18 3b extcodesize    [0, 0, address, size]                     <>
 *
 * ** dup and swap size for use by return at end of init code **
 * 19 80 dup1           [0, 0, address, size, size]               <>
 * 20 93 swap4          [size, 0, address, size, 0]               <>
 *
 * ** push code position 0 to stack and reorder stack items for extcodecopy **
 * 21 80 dup1           [size, 0, address, size, 0, 0]            <>
 * 22 91 swap2          [size, 0, address, 0, 0, size]            <>
 * 23 92 swap3          [size, 0, size, 0, 0, address]            <>
 *
 * ** call extcodecopy, consume four items, clone runtime code to memory **
 * 24 3c extcodecopy    [size, 0]                                 <code>
 *
 * ** return to deploy final code in memory **
 * 25 f3 return         []                                        *deployed!*
 */
contract SocketDeployFactory is Ownable {
    using SafeTransferLib for ERC20;
    address public immutable disabledRouteAddress;

    mapping(address => address) _implementations;
    mapping(uint256 => bool) isDisabled;
    mapping(uint256 => bool) isRouteDeployed;
    mapping(address => bool) canDisableRoute;

    event Deployed(address _addr);
    event DisabledRoute(address _addr);
    event Destroyed(address _addr);
    error ContractAlreadyDeployed();
    error NothingToDestroy();
    error AlreadyDisabled();
    error CannotBeDisabled();
    error OnlyDisabler();

    constructor(address _owner, address disabledRoute) Ownable(_owner) {
        disabledRouteAddress = disabledRoute;
        canDisableRoute[_owner] = true;
    }

    modifier onlyDisabler() {
        if (!canDisableRoute[msg.sender]) {
            revert OnlyDisabler();
        }
        _;
    }

    function addDisablerAddress(address disabler) external onlyOwner {
        canDisableRoute[disabler] = true;
    }

    function removeDisablerAddress(address disabler) external onlyOwner {
        canDisableRoute[disabler] = false;
    }

    /**
     * @notice Deploys a route contract at predetermined location
     * @notice Caller must first deploy the route contract at another location and pass its address as implementation.
     * @param routeId route identifier
     * @param implementationContract address of deployed route contract. Its byte code will be copied to predetermined location.
     */
    function deploy(
        uint256 routeId,
        address implementationContract
    ) external onlyOwner returns (address) {
        // assign the initialization code for the socket contract.

        bytes memory initCode = (
            hex"5860208158601c335a63aaf10f428752fa158151803b80938091923cf3"
        );

        // determine the address of the socket contract.
        address routeContractAddress = _getContractAddress(routeId);

        if (isRouteDeployed[routeId]) {
            revert ContractAlreadyDeployed();
        }

        isRouteDeployed[routeId] = true;

        //first we deploy the code we want to deploy on a separate address
        // store the implementation to be retrieved by the socket contract.
        _implementations[routeContractAddress] = implementationContract;
        address addr;
        assembly {
            let encoded_data := add(0x20, initCode) // load initialization code.
            let encoded_size := mload(initCode) // load init code's length.
            addr := create2(0, encoded_data, encoded_size, routeId) // routeId is used as salt
        }
        require(
            addr == routeContractAddress,
            "Failed to deploy the new socket contract."
        );
        emit Deployed(addr);
        return addr;
    }

    /**
     * @notice Destroy the route deployed at a location.
     * @param routeId route identifier to be destroyed.
     */
    function destroy(uint256 routeId) external onlyDisabler {
        // determine the address of the socket contract.
        _destroy(routeId);
    }

    /**
     * @notice Deploy a disabled contract at destroyed route to handle it gracefully.
     * @param routeId route identifier to be disabled.
     */
    function disableRoute(
        uint256 routeId
    ) external onlyDisabler returns (address) {
        return _disableRoute(routeId);
    }

    /**
     * @notice Destroy a list of routeIds
     * @param routeIds array of routeIds to be destroyed.
     */
    function multiDestroy(uint256[] calldata routeIds) external onlyDisabler {
        for (uint32 index = 0; index < routeIds.length; ) {
            _destroy(routeIds[index]);
            unchecked {
                ++index;
            }
        }
    }

    /**
     * @notice Deploy a disabled contract at list of routeIds.
     * @param routeIds array of routeIds to be disabled.
     */
    function multiDisableRoute(
        uint256[] calldata routeIds
    ) external onlyDisabler {
        for (uint32 index = 0; index < routeIds.length; ) {
            _disableRoute(routeIds[index]);
            unchecked {
                ++index;
            }
        }
    }

    /**
     * @dev External view function for calculating a socket contract address
     * given a particular routeId.
     */
    function getContractAddress(
        uint256 routeId
    ) external view returns (address) {
        // determine the address of the socket contract.
        return _getContractAddress(routeId);
    }

    //those two functions are getting called by the socket Contract
    function getImplementation()
        external
        view
        returns (address implementation)
    {
        return _implementations[msg.sender];
    }

    function _disableRoute(uint256 routeId) internal returns (address) {
        // assign the initialization code for the socket contract.
        bytes memory initCode = (
            hex"5860208158601c335a63aaf10f428752fa158151803b80938091923cf3"
        );

        // determine the address of the socket contract.
        address routeContractAddress = _getContractAddress(routeId);

        if (!isRouteDeployed[routeId]) {
            revert CannotBeDisabled();
        }

        if (isDisabled[routeId]) {
            revert AlreadyDisabled();
        }

        isDisabled[routeId] = true;

        //first we deploy the code we want to deploy on a separate address
        // store the implementation to be retrieved by the socket contract.
        _implementations[routeContractAddress] = disabledRouteAddress;
        address addr;
        assembly {
            let encoded_data := add(0x20, initCode) // load initialization code.
            let encoded_size := mload(initCode) // load init code's length.
            addr := create2(0, encoded_data, encoded_size, routeId) // routeId is used as salt.
        }
        require(
            addr == routeContractAddress,
            "Failed to deploy the new socket contract."
        );
        emit Deployed(addr);
        return addr;
    }

    function _destroy(uint256 routeId) internal {
        // determine the address of the socket contract.
        address routeContractAddress = _getContractAddress(routeId);

        if (!isRouteDeployed[routeId]) {
            revert NothingToDestroy();
        }
        ISocketBridgeBase(routeContractAddress).killme();
        emit Destroyed(routeContractAddress);
    }

    /**
     * @dev Internal view function for calculating a socket contract address
     * given a particular routeId.
     */
    function _getContractAddress(
        uint256 routeId
    ) internal view returns (address) {
        // determine the address of the socket contract.

        bytes memory initCode = (
            hex"5860208158601c335a63aaf10f428752fa158151803b80938091923cf3"
        );
        return
            address(
                uint160( // downcast to match the address type.
                    uint256( // convert to uint to truncate upper digits.
                        keccak256( // compute the CREATE2 hash using 4 inputs.
                            abi.encodePacked( // pack all inputs to the hash together.
                                hex"ff", // start with 0xff to distinguish from RLP.
                                address(this), // this contract will be the caller.
                                routeId, // the routeId is used as salt.
                                keccak256(abi.encodePacked(initCode)) // the init code hash.
                            )
                        )
                    )
                )
            );
    }

    /**
     * @notice Rescues the ERC20 token to an address
               this is a restricted function to be called by only socketGatewayOwner
     * @dev as this is a restricted to socketGatewayOwner, ensure the userAddress is a known address
     * @param token address of the ERC20 token being rescued
     * @param userAddress address to which ERC20 is to be rescued
     * @param amount amount of ERC20 tokens being rescued
     */
    function rescueFunds(
        address token,
        address userAddress,
        uint256 amount
    ) external onlyOwner {
        ERC20(token).safeTransfer(userAddress, amount);
    }

    /**
     * @notice Rescues the native balance to an address
               this is a restricted function to be called by only socketGatewayOwner
     * @dev as this is a restricted to socketGatewayOwner, ensure the userAddress is a known address
     * @param userAddress address to which native-balance is to be rescued
     * @param amount amount of native-balance being rescued
     */
    function rescueEther(
        address payable userAddress,
        uint256 amount
    ) external onlyOwner {
        userAddress.call{value: amount}("");
    }
}

File 2 of 6 : Ownable.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.4;

import {OnlyOwner, OnlyNominee} from "../errors/SocketErrors.sol";

abstract contract Ownable {
    address private _owner;
    address private _nominee;

    event OwnerNominated(address indexed nominee);
    event OwnerClaimed(address indexed claimer);

    constructor(address owner_) {
        _claimOwner(owner_);
    }

    modifier onlyOwner() {
        if (msg.sender != _owner) {
            revert OnlyOwner();
        }
        _;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function nominee() public view returns (address) {
        return _nominee;
    }

    function nominateOwner(address nominee_) external {
        if (msg.sender != _owner) {
            revert OnlyOwner();
        }
        _nominee = nominee_;
        emit OwnerNominated(_nominee);
    }

    function claimOwner() external {
        if (msg.sender != _nominee) {
            revert OnlyNominee();
        }
        _claimOwner(msg.sender);
    }

    function _claimOwner(address claimer_) internal {
        _owner = claimer_;
        _nominee = address(0);
        emit OwnerClaimed(claimer_);
    }
}

File 3 of 6 : ISocketBridgeBase.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

interface ISocketBridgeBase {
    function killme() external;
}

File 4 of 6 : ERC20.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

File 5 of 6 : SafeTransferLib.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

import {ERC20} from "../tokens/ERC20.sol";

/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)
/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.
library SafeTransferLib {
    /*//////////////////////////////////////////////////////////////
                             ETH OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferETH(address to, uint256 amount) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Transfer the ETH and store if it succeeded or not.
            success := call(gas(), to, amount, 0, 0, 0, 0)
        }

        require(success, "ETH_TRANSFER_FAILED");
    }

    /*//////////////////////////////////////////////////////////////
                            ERC20 OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferFrom(
        ERC20 token,
        address from,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "from" argument.
            mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
            mstore(add(freeMemoryPointer, 68), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.

            // We use 100 because the length of our calldata totals up like so: 4 + 32 * 3.
            // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
            success := call(gas(), token, 0, freeMemoryPointer, 100, 0, 32)

            // Set success to whether the call reverted, if not we check it either
            // returned exactly 1 (can't just be non-zero data), or had no return data and token has code.
            if and(iszero(and(eq(mload(0), 1), gt(returndatasize(), 31))), success) {
                success := iszero(or(iszero(extcodesize(token)), returndatasize())) 
            }
        }

        require(success, "TRANSFER_FROM_FAILED");
    }

    function safeTransfer(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.

            // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
            // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
            success := call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)

            // Set success to whether the call reverted, if not we check it either
            // returned exactly 1 (can't just be non-zero data), or had no return data and token has code.
            if and(iszero(and(eq(mload(0), 1), gt(returndatasize(), 31))), success) {
                success := iszero(or(iszero(extcodesize(token)), returndatasize())) 
            }
        }

        require(success, "TRANSFER_FAILED");
    }

    function safeApprove(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.

            // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
            // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
            success := call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)

            // Set success to whether the call reverted, if not we check it either
            // returned exactly 1 (can't just be non-zero data), or had no return data and token has code.
            if and(iszero(and(eq(mload(0), 1), gt(returndatasize(), 31))), success) {
                success := iszero(or(iszero(extcodesize(token)), returndatasize())) 
            }
        }

        require(success, "APPROVE_FAILED");
    }
}

File 6 of 6 : SocketErrors.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

error CelerRefundNotReady();
error OnlySocketDeployer();
error OnlySocketGatewayOwner();
error OnlySocketGateway();
error OnlyOwner();
error OnlyNominee();
error TransferIdExists();
error TransferIdDoesnotExist();
error Address0Provided();
error SwapFailed();
error UnsupportedInterfaceId();
error InvalidCelerRefund();
error CelerAlreadyRefunded();
error IncorrectBridgeRatios();
error ZeroAddressNotAllowed();
error ArrayLengthMismatch();
error PartialSwapsNotAllowed();

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": true,
    "mode": "3"
  },
  "outputSelection": {
    "*": {
      "*": [
        "abi"
      ]
    }
  },
  "detectMissingLibraries": false,
  "forceEVMLA": false,
  "enableEraVMExtensions": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"disabledRoute","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyDisabled","type":"error"},{"inputs":[],"name":"CannotBeDisabled","type":"error"},{"inputs":[],"name":"ContractAlreadyDeployed","type":"error"},{"inputs":[],"name":"NothingToDestroy","type":"error"},{"inputs":[],"name":"OnlyDisabler","type":"error"},{"inputs":[],"name":"OnlyNominee","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"Deployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"Destroyed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"DisabledRoute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"}],"name":"OwnerClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"nominee","type":"address"}],"name":"OwnerNominated","type":"event"},{"inputs":[{"internalType":"address","name":"disabler","type":"address"}],"name":"addDisablerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"routeId","type":"uint256"},{"internalType":"address","name":"implementationContract","type":"address"}],"name":"deploy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"routeId","type":"uint256"}],"name":"destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"routeId","type":"uint256"}],"name":"disableRoute","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disabledRouteAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"routeId","type":"uint256"}],"name":"getContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"routeIds","type":"uint256[]"}],"name":"multiDestroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"routeIds","type":"uint256[]"}],"name":"multiDisableRoute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nominee_","type":"address"}],"name":"nominateOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"disabler","type":"address"}],"name":"removeDisablerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"userAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}]

9c4d535b00000000000000000000000000000000000000000000000000000000000000000100022be63d0ee498b4c941794ecc2b117d2242cf88cd3964cf65ba9e8e961000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b0bbff6311b7f245761a7846d3ce7b1b100c18360000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x0001000000000002000b00000000000200000000000103550000006003100270000001df0330019700000001002001900000002f0000c13d0000008002000039000000400020043f000000040030008c000004850000413d000000000201043b000000e002200270000001e70020009c000000810000213d000001f30020009c000000940000213d000001f90020009c000001120000213d000001fc0020009c000002300000613d000001fd0020009c000004850000c13d0000000001000416000000000001004b000004850000c13d0000000101000039000000000201041a000001e2032001970000000005000411000000000035004b0000048b0000c13d000000000300041a000001e303300197000000000353019f000000000030041b000001e302200197000000000021041b0000000001000414000001df0010009c000001df01008041000000c001100210000001e4011001c70000800d020000390000000203000039000001e504000041000003200000013d0000000002000416000000000002004b000004850000c13d0000001f02300039000001e002200197000000a002200039000000400020043f0000001f0430018f000001e105300198000000a002500039000000400000613d000000a006000039000000000701034f000000007807043c0000000006860436000000000026004b0000003c0000c13d000000000004004b0000004d0000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000400030008c000004850000413d000000a00500043d000001e20050009c000004850000213d000000c00100043d000900000001001d000001e20010009c000004850000213d000000000100041a000001e301100197000000000151019f000000000010041b0000000102000039000000000102041a000001e301100197000000000012041b0000000001000414000001df0010009c000001df01008041000000c001100210000001e4011001c70000800d020000390000000203000039000001e504000041000800000005001d00000008050000290776076c0000040f00000008010000290000000100200190000004850000613d0000000902000029000000800020043f000000000010043f0000000501000039000000200010043f000000400200003900000000010000190776073e0000040f000000000301041a000002270230019700000001022001bf000000000021041b0000014000000443000000090100002900000160001004430000002001000039000001000010044300000001010000390000012000100443000001e601000041000007770001042e000001e80020009c000000f30000213d000001ee0020009c000001300000213d000001f10020009c000002360000613d000001f20020009c000004850000c13d0000000001000416000000000001004b000004850000c13d0000000001000411000000000010043f0000000201000039000000200010043f000000400200003900000000010000190776073e0000040f000002340000013d000001f40020009c000001ee0000213d000001f70020009c000003050000613d000001f80020009c000004850000c13d000000640030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000402100370000000000202043b000900000002001d000001e20020009c000004850000213d0000002402100370000000000202043b000001e20020009c000004850000213d000000000300041a000001e2033001970000000004000411000000000034004b000004870000c13d0000021f03000041000000800030043f000000840020043f0000004401100370000000000101043b000000a40010043f0000000001000414000001df0010009c000001df01008041000000c00110021000000220011001c700000009020000290776076c0000040f0000006003100270000001df08300197000000200080008c000000200300003900000000030840190000001f0430018f0000002003300190000000c80000613d000000000501034f0000000006000019000000005705043c0000000006760436000000000036004b000000c40000c13d000000000004004b000000d50000613d000000000131034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000000100043d000000010010008c0000000001000039000000010100c039000000200080008c00000001011041bf000000000112016f000000010010008c000004b40000c13d000800000008001d00000217010000410000000000100443000000090100002900000004001004430000000001000414000001df0010009c000001df01008041000000c00110021000000218011001c70000800202000039077607710000040f0000000100200190000004c70000613d000000000101043b000000000001004b0000000001000039000000010100603900000008001001b00000049c0000613d000004b60000013d000001e90020009c0000020e0000213d000001ec0020009c000003240000613d000001ed0020009c000004850000c13d000000240030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000401100370000000000101043b000001e20010009c000004850000213d000000000200041a000001e2022001970000000003000411000000000023004b000004870000c13d000000000010043f0000000501000039000000200010043f000000400200003900000000010000190776073e0000040f000000000201041a0000022702200197000000000021041b0000000001000019000007770001042e000001fa0020009c0000033c0000613d000001fb0020009c000004850000c13d000000240030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000401100370000000000101043b000001e20010009c000004850000213d000000000200041a000001e2022001970000000003000411000000000023004b000004870000c13d000000000010043f0000000501000039000000200010043f000000400200003900000000010000190776073e0000040f000000000201041a000002270220019700000001022001bf000000000021041b0000000001000019000007770001042e000001ef0020009c0000034a0000613d000001f00020009c000004850000c13d000000440030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000402100370000000000202043b000900000002001d0000002401100370000000000101043b000800000001001d000001e20010009c000004850000213d000000000100041a000001e2011001970000000002000411000000000012004b000004870000c13d0000001d01000039000000800010043f0000020202000041000000a00020043f000000c00010043f000000e00020043f000001200020043f0000013d0000043f000001000010043f0000014001000039000000400010043f0000000001000414000001df0010009c000001df01008041000000c00110021000000212011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000301043b000000400100043d00000020021000390000020304000041000000000042043500000000040004100000006004400210000000210510003900000000004504350000005504100039000000000034043500000035031000390000000904000029000000000043043500000055030000390000000000310435000002040010009c000004ae0000213d0000008003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000700000001001d0000000901000029000000000010043f0000000401000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff00100190000004c80000c13d0000000901000029000000000010043f0000000401000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d0000000702000029000001e202200197000000000101043b000000000301041a000002270330019700000001033001bf000000000031041b000000000020043f0000000201000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000201041a000001e30220019700000008022001af000000000021041b000000800100043d00000209020000410000000003000414000000a00020043f0000000902000029000000a40020043f0000006002000039000000e40020043f000000840210008a000001040020043f000001df0010009c000001df010080410000006001100210000001df0030009c000001df03008041000000c002300210000000000121019f00000214011001c700008006020000390776076c0000040f00000001002001900000000002000019000001d00000613d000000000201043b000000070320014f000000400100043d000001e200300198000004cb0000c13d000001e202200197000900000002001d0000000000210435000001df0010009c000001df0100804100000040011002100000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f0000020e011001c70000800d0200003900000001030000390000020f040000410776076c0000040f0000000100200190000004850000613d000000400100043d00000009020000290000000000210435000001df0010009c000001df010080410000004001100210000001ff011001c7000007770001042e000001f50020009c000003590000613d000001f60020009c000004850000c13d000000240030008c000004850000413d0000000001000416000000000001004b000004850000c13d0000000001000411000000000010043f0000000501000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff00100190000002280000613d00000004010000390000000001100367000000000101043b077605070000040f0000000001000019000007770001042e000001ea0020009c000003610000613d000001eb0020009c000004850000c13d000000240030008c000004850000413d0000000001000416000000000001004b000004850000c13d0000000001000411000000000010043f0000000501000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff001001900000048f0000c13d000000400100043d0000021e020000410000000000210435000001df0010009c000001df01008041000000400110021000000206011001c700000778000104300000000001000416000000000001004b000004850000c13d0000000101000039000000000101041a0000035d0000013d000000240030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000402100370000000000202043b000002000020009c000004850000213d0000002304200039000000000034004b000004850000813d0000000404200039000000000141034f000000000101043b000500000001001d000002000010009c000004850000213d000400240020003d000000050100002900000005011002100000000401100029000000000031004b000004850000213d0000000001000411000000000010043f0000000501000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff00100190000002280000613d000000050000006b0000049c0000613d00000000010004100003006000100218000800000000001d0000000801000029000000050110021000000004011000290000000001100367000000000101043b000900000001001d000000400100043d000002160010009c000004ae0000813d0000004002100039000000400020043f0000002002100039000002020300004100000000003204350000001d040000390000000000410435000000400100043d0000002002100039000000000032043500000000004104350000003d031000390000000000030435000002010010009c000004ae0000213d0000004003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000301043b000000400100043d0000002002100039000002030400004100000000004204350000002104100039000000030500002900000000005404350000005504100039000000000034043500000035031000390000000904000029000000000043043500000055030000390000000000310435000002040010009c000004ae0000213d0000008003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000700000001001d0000000901000029000000000010043f0000000401000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff00100190000004de0000613d0000000701000029000001e20210019700000217010000410000000000100443000900000002001d00000004002004430000000001000414000001df0010009c000001df01008041000000c00110021000000218011001c70000800202000039077607710000040f0000000100200190000004c70000613d000000000101043b000000000001004b000004850000613d000000400200043d00000219010000410000000000120435000001df0020009c000700000002001d000001df01000041000000000102401900060040001002180000000001000414000001df0010009c000001df01008041000000c00110021000000006011001af00000206011001c700000009020000290776076c0000040f0000000100200190000004e10000613d0000000702000029000002000020009c000004ae0000213d000000400020043f000000090100002900000000001204350000000001000414000001df0010009c000001df01008041000000c00110021000000006011001af0000020e011001c70000800d0200003900000001030000390000021a040000410776076c0000040f0000000100200190000004850000613d00000008010000290000000101100039000001df02100197000800000002001d000000050020006c000002640000413d0000049c0000013d000000240030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000401100370000000000501043b000001e20050009c000004850000213d000000000100041a000001e2011001970000000002000411000000000012004b000004870000c13d0000000101000039000000000201041a000001e302200197000000000252019f000000000021041b0000000001000414000001df0010009c000001df01008041000000c001100210000001e4011001c70000800d02000039000000020300003900000223040000410776076c0000040f0000000100200190000004850000613d0000049c0000013d000000440030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000402100370000000000402043b000001e20040009c000004850000213d000000000200041a000001e2022001970000000003000411000000000023004b000004870000c13d0000002401100370000000000301043b0000000001000414000001df0010009c000001df01008041000000c001100210000000000003004b000004950000c13d0000000002040019000004980000013d0000000001000416000000000001004b000004850000c13d0000000001000412000b00000001001d000a00000000003d0000800501000039000000440300003900000000040004150000000b0440008a00000005044002100000020702000041077607530000040f0000035d0000013d000000240030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000401100370000000000101043b077605d00000040f000000400200043d0000000000120435000001df0020009c000001df020080410000004001200210000001ff011001c7000007770001042e0000000001000416000000000001004b000004850000c13d000000000100041a000001e201100197000000800010043f0000021501000041000007770001042e000000240030008c000004850000413d0000000002000416000000000002004b000004850000c13d0000000402100370000000000202043b000002000020009c000004850000213d0000002304200039000000000034004b000004850000813d0000000404200039000000000141034f000000000101043b000300000001001d000002000010009c000004850000213d000200240020003d000000030100002900000005011002100000000201100029000000000031004b000004850000213d0000000001000411000000000010043f0000000501000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff00100190000002280000613d000000030000006b0000049c0000613d00000000010004100001006000100218000800000000001d0000000801000029000000050110021000000002011000290000000001100367000000000101043b000900000001001d000000400100043d000700000001001d000002010010009c000004ae0000213d00000007020000290000004001200039000000400010043f0000001d0100003900000000021204360000020201000041000600000002001d0000000000120435000000400100043d000002010010009c000004ae0000213d0000004002100039000000400020043f0000002002100039000002020400004100000000004204350000001d030000390000000000310435000000400100043d0000002002100039000000000042043500000000003104350000003d031000390000000000030435000002010010009c000004ae0000213d0000004003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000301043b000000400100043d0000002002100039000002030400004100000000004204350000002104100039000000010500002900000000005404350000005504100039000000000034043500000035031000390000000904000029000000000043043500000055030000390000000000310435000002040010009c000004ae0000213d0000008003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000500000001001d0000000901000029000000000010043f0000000401000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff00100190000005010000613d0000000901000029000000000010043f0000000301000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000101041a000000ff00100190000005040000c13d0000000901000029000000000010043f0000000301000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d000000000101043b000000000201041a000002270220019700000001022001bf000000000021041b000002070100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000001df0010009c000001df01008041000000c00110021000000208011001c70000800502000039077607710000040f0000000100200190000004c70000613d0000000502000029000001e202200197000000000101043b000400000001001d000500000002001d000000000020043f0000000201000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000004850000613d0000000402000029000001e202200197000000000101043b000000000301041a000001e303300197000000000223019f000000000021041b0000000705000029000000000105043300000000020004140000020903000041000000060600002900000000003604350000008403500039000000840410008a0000000000430435000000640350003900000060040000390000000000430435000000240350003900000009040000290000000000430435000001df0060009c000001df060080410000004003600210000001df0010009c000001df010080410000006001100210000000000131019f000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c700008006020000390776076c0000040f00000001002001900000000002000019000004690000613d000000000201043b000000400100043d000001e2022001970000000503000029000000000032004b000004cb0000c13d0000000000310435000001df0010009c000001df0100804100000040011002100000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f0000020e011001c70000800d0200003900000001030000390000020f040000410776076c0000040f0000000100200190000004850000613d00000008010000290000000101100039000001df02100197000800000002001d000000030020006c0000038f0000413d0000049c0000013d000000000100001900000778000104300000022401000041000000800010043f000002250100004100000778000104300000022601000041000000800010043f0000022501000041000007780001043000000004010000390000000001100367000000000101043b077606290000040f000001e201100197000003520000013d000001e4011001c7000080090200003900000000050000190776076c0000040f0000006001100270000001df011001980000049e0000c13d0000000001000019000007770001042e0000001f01100039000001e0011001970000003f011000390000021101100197000000400200043d0000000001120019000000000021004b00000000020000390000000102004039000002000010009c000004ae0000213d0000000100200190000004ae0000c13d000000400010043f0000000001000019000007770001042e0000021c01000041000000000010043f0000004101000039000000040010043f0000021d01000041000007780001043000000001002001900000049c0000c13d000000400100043d00000044021000390000022103000041000000000032043500000024021000390000000f0300003900000000003204350000020c020000410000000000210435000000040210003900000020030000390000000000320435000001df0010009c000001df01008041000000400110021000000222011001c70000077800010430000000000001042f000000400100043d00000213020000410000022a0000013d00000064021000390000020a03000041000000000032043500000044021000390000020b0300004100000000003204350000002402100039000000290300003900000000003204350000020c020000410000000000210435000000040210003900000020030000390000000000320435000001df0010009c000001df0100804100000040011002100000020d011001c70000077800010430000000400100043d0000021b020000410000022a0000013d00000060061002700000001f0460018f000001e105600198000000400200043d0000000003520019000004ed0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000004e90000c13d000001df06600197000000000004004b000004fb0000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000006001600210000001df0020009c000001df020080410000004002200210000000000112019f0000077800010430000000400100043d00000210020000410000022a0000013d000000400100043d00000205020000410000022a0000013d0003000000000002000300000001001d000000400100043d000002160010009c000005a10000813d0000004002100039000000400020043f0000002002100039000002020300004100000000003204350000001d040000390000000000410435000000400100043d0000002002100039000000000032043500000000004104350000003d031000390000000000030435000002010010009c000005a10000213d0000004003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f00000001002001900000059f0000613d000000000301043b000000400100043d00000020021000390000020304000041000000000042043500000000040004100000006004400210000000210510003900000000004504350000005504100039000000000034043500000035031000390000000304000029000000000043043500000055030000390000000000310435000002040010009c000005a10000213d0000008003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f00000001002001900000059f0000613d000000000101043b000200000001001d0000000301000029000000000010043f0000000401000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f00000001002001900000059f0000613d000000000101043b000000000101041a000000ff00100190000005a70000613d0000000201000029000001e20210019700000217010000410000000000100443000300000002001d00000004002004430000000001000414000001df0010009c000001df01008041000000c00110021000000218011001c70000800202000039077607710000040f0000000100200190000005af0000613d000000000101043b000000000001004b0000059f0000613d000000400200043d00000219010000410000000000120435000001df0020009c000200000002001d000001df01000041000000000102401900010040001002180000000001000414000001df0010009c000001df01008041000000c00110021000000001011001af00000206011001c700000003020000290776076c0000040f0000000100200190000005b00000613d0000000202000029000002000020009c000005a10000213d000000400020043f000000030100002900000000001204350000000001000414000001df0010009c000001df01008041000000c00110021000000001011001af0000020e011001c70000800d0200003900000001030000390000021a040000410776076c0000040f00000001002001900000059f0000613d000000000001042d000000000100001900000778000104300000021c01000041000000000010043f0000004101000039000000040010043f0000021d010000410000077800010430000000400100043d0000021b020000410000000000210435000001df0010009c000001df01008041000000400110021000000206011001c70000077800010430000000000001042f00000060061002700000001f0460018f000001e105600198000000400200043d0000000003520019000005bc0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000005b80000c13d000001df06600197000000000004004b000005ca0000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000006001600210000001df0020009c000001df020080410000004002200210000000000112019f00000778000104300001000000000002000100000001001d000000400100043d000002160010009c000006210000813d0000004002100039000000400020043f0000002002100039000002020300004100000000003204350000001d040000390000000000410435000000400100043d0000002002100039000000000032043500000000004104350000003d031000390000000000030435000002010010009c000006210000213d0000004003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000006270000613d000000000301043b000000400100043d00000020021000390000020304000041000000000042043500000000040004100000006004400210000000210510003900000000004504350000005504100039000000000034043500000035031000390000000104000029000000000043043500000055030000390000000000310435000002040010009c000006210000213d0000008003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000006270000613d000000000101043b000001e201100197000000000001042d0000021c01000041000000000010043f0000004101000039000000040010043f0000021d010000410000077800010430000000000100001900000778000104300005000000000002000500000001001d000000400100043d000400000001001d000002160010009c000007180000813d00000004020000290000004001200039000000400010043f0000001d0100003900000000021204360000020203000041000300000002001d0000000000320435000000400200043d000002010020009c000007180000213d0000004004200039000000400040043f000000200420003900000000003404350000000000120435000000400200043d0000002004200039000000000034043500000000001204350000003d012000390000000000010435000002010020009c000007180000213d0000004001200039000000400010043f000001df0040009c000001df0400804100000040014002100000000002020433000001df0020009c000001df020080410000006002200210000000000112019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000007160000613d000000000301043b000000400100043d00000020021000390000020304000041000000000042043500000000040004100000006004400210000000210510003900000000004504350000005504100039000000000034043500000035031000390000000504000029000000000043043500000055030000390000000000310435000002040010009c000007180000213d0000008003100039000000400030043f000001df0020009c000001df0200804100000040022002100000000001010433000001df0010009c000001df010080410000006001100210000000000121019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000007160000613d000000000101043b000200000001001d0000000501000029000000000010043f0000000401000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000007160000613d000000000101043b000000000101041a000000ff001001900000071e0000613d0000000501000029000000000010043f0000000301000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000007160000613d000000000101043b000000000101041a000000ff00100190000007210000c13d0000000501000029000000000010043f0000000301000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000007160000613d000000000101043b000000000201041a000002270220019700000001022001bf000000000021041b000002070100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000001df0010009c000001df01008041000000c00110021000000208011001c70000800502000039077607710000040f0000000100200190000007290000613d0000000202000029000001e202200197000000000101043b000100000001001d000200000002001d000000000020043f0000000201000039000000200010043f0000000001000414000001df0010009c000001df01008041000000c001100210000001fe011001c70000801002000039077607710000040f0000000100200190000007160000613d0000000102000029000001e202200197000000000101043b000000000301041a000001e303300197000000000223019f000000000021041b0000000405000029000000000105043300000209020000410000000003000414000000030600002900000000002604350000008402500039000000840410008a0000000000420435000000640250003900000060040000390000000000420435000000240250003900000005040000290000000000420435000001df0060009c000001df060080410000004002600210000001df0010009c000001df010080410000006001100210000000000121019f000001df0030009c000001df03008041000000c002300210000000000112019f000001e4011001c700008006020000390776076c0000040f00000001002001900000000002000019000006fe0000613d000000000201043b000000400100043d000500000002001d000001e2022001970000000203000029000000000032004b0000072a0000c13d0000000000310435000001df0010009c000001df0100804100000040011002100000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f0000020e011001c70000800d0200003900000001030000390000020f040000410776076c0000040f0000000100200190000007160000613d0000000501000029000000000001042d000000000100001900000778000104300000021c01000041000000000010043f0000004101000039000000040010043f0000021d010000410000077800010430000000400100043d0000021002000041000007230000013d000000400100043d00000205020000410000000000210435000001df0010009c000001df01008041000000400110021000000206011001c70000077800010430000000000001042f00000064021000390000020a03000041000000000032043500000044021000390000020b0300004100000000003204350000002402100039000000290300003900000000003204350000020c020000410000000000210435000000040210003900000020030000390000000000320435000001df0010009c000001df0100804100000040011002100000020d011001c70000077800010430000000000001042f000001df0010009c000001df010080410000004001100210000001df0020009c000001df020080410000006002200210000000000112019f0000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f000001e4011001c70000801002000039077607710000040f0000000100200190000007510000613d000000000101043b000000000001042d0000000001000019000007780001043000000000050100190000000000200443000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b000007560000413d000001df0030009c000001df0300804100000060013002100000000002000414000001df0020009c000001df02008041000000c002200210000000000112019f00000228011001c70000000002050019077607710000040f00000001002001900000076b0000613d000000000101043b000000000001042d000000000001042f0000076f002104210000000102000039000000000001042d0000000002000019000000000001042d00000774002104230000000102000039000000000001042d0000000002000019000000000001042d0000077600000432000007770001042e000007780001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000fbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f87000000020000000000000000000000000000008000000100000000000000000000000000000000000000000000000000000000000000000000000000a6630a5300000000000000000000000000000000000000000000000000000000e42e0ea800000000000000000000000000000000000000000000000000000000fa881c0f00000000000000000000000000000000000000000000000000000000fa881c1000000000000000000000000000000000000000000000000000000000ffcdf4ed00000000000000000000000000000000000000000000000000000000e42e0ea900000000000000000000000000000000000000000000000000000000f94537aa00000000000000000000000000000000000000000000000000000000aefa7d9700000000000000000000000000000000000000000000000000000000aefa7d9800000000000000000000000000000000000000000000000000000000df02995d00000000000000000000000000000000000000000000000000000000a6630a5400000000000000000000000000000000000000000000000000000000aaf10f42000000000000000000000000000000000000000000000000000000005b94db26000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000009d118770000000000000000000000000000000000000000000000000000000005b94db27000000000000000000000000000000000000000000000000000000006ccae0540000000000000000000000000000000000000000000000000000000042cf35260000000000000000000000000000000000000000000000000000000042cf352700000000000000000000000000000000000000000000000000000000570d76ff0000000000000000000000000000000000000000000000000000000020f99c0a000000000000000000000000000000000000000000000000000000003bd1adec02000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf5860208158601c335a63aaf10f428752fa158151803b80938091923cf3000000ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f005ecddb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000003cda33511d41a8a5431b1770c5bc0ddd62e1cd30555d16659b89c0d60f4f9f57636f6e74726163742e00000000000000000000000000000000000000000000004661696c656420746f206465706c6f7920746865206e657720736f636b65742008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000000000000000000000000200000000000000000000000000000000000020000000000000000000000000f40fcec21964ffb566044d083b4073f29f7f7929110ea19e1b3ebe375d89055eb82dbbb60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffe0020000000000000000000000000000000000001d000001200000000000000000955ab4b7000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc01806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000024d97a4a000000000000000000000000000000000000000000000000000000007dec311f70bce33f6997a1cc140bcb6149f9ee83d6be656e848b00d170c98200834904bb000000000000000000000000000000000000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000a87cd2be00000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000008000000000000000005452414e534645525f4641494c454400000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce225fc483c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000008000000000000000007c91ccdd00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a76b64c521734b704928187ed6490d3cf7684bb7c57fccddcf5993ed6fd806a8

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

000000000000000000000000b0bbff6311b7f245761a7846d3ce7b1b100c18360000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _owner (address): 0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836
Arg [1] : disabledRoute (address): 0x0000000000000000000000000000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b0bbff6311b7f245761a7846d3ce7b1b100c1836
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

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