ETH Price: $2,928.44 (-0.93%)

Contract

0x701a4A5238AF84a9c4ed8a23DeE670069b44eEb7

Overview

ETH Balance

Linea Mainnet LogoLinea Mainnet LogoLinea Mainnet Logo0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Register Feature45431262024-05-14 7:51:06621 days ago1715673066IN
0x701a4A52...69b44eEb7
0 ETH0.000073081.5
Register Feature45155842024-05-13 8:53:12622 days ago1715590392IN
0x701a4A52...69b44eEb7
0 ETH0.000074741.5
Register Feature45079042024-05-13 2:29:08622 days ago1715567348IN
0x701a4A52...69b44eEb7
0 ETH0.000061081.5
Register Feature9467672023-11-23 8:52:56794 days ago1700729576IN
0x701a4A52...69b44eEb7
0 ETH0.000105542.11807685
Register Feature9466572023-11-23 8:38:16794 days ago1700728696IN
0x701a4A52...69b44eEb7
0 ETH0.000138332.13786644
Register Feature9466392023-11-23 8:35:52794 days ago1700728552IN
0x701a4A52...69b44eEb7
0 ETH0.000376632.1317927
Register Feature9466202023-11-23 8:33:20794 days ago1700728400IN
0x701a4A52...69b44eEb7
0 ETH0.000123052.12800997
Register Feature2161272023-08-17 10:03:53892 days ago1692266633IN
0x701a4A52...69b44eEb7
0 ETH0.000058861.44544934
Register Feature441222023-07-24 10:33:27916 days ago1690194807IN
0x701a4A52...69b44eEb7
0 ETH0.000172823.46828228
Register Feature441142023-07-24 10:31:51916 days ago1690194711IN
0x701a4A52...69b44eEb7
0 ETH0.000388083.88
Register Feature441062023-07-24 10:30:15916 days ago1690194615IN
0x701a4A52...69b44eEb7
0 ETH0.000449062.98971283
Register Feature440972023-07-24 10:28:27916 days ago1690194507IN
0x701a4A52...69b44eEb7
0 ETH0.001593753.17750327
Register Feature440882023-07-24 10:26:39916 days ago1690194399IN
0x701a4A52...69b44eEb7
0 ETH0.00024543.27577657
Register Feature440782023-07-24 10:24:39916 days ago1690194279IN
0x701a4A52...69b44eEb7
0 ETH0.000263543.51742741
Register Feature440702023-07-24 10:23:03916 days ago1690194183IN
0x701a4A52...69b44eEb7
0 ETH0.000184373.70021819

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AggTraderHelper

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
import "./HelperOwnable.sol";
import "./storage/LibHelperFeatureStorage.sol";


contract AggTraderHelper is HelperOwnable {

    event FeatureFunctionUpdated(bytes4 indexed selector, address oldFeature, address newFeature);

    function registerFeature(address feature, bytes4[] calldata methodIDs) external onlyOwner {
        unchecked {
            LibHelperFeatureStorage.Storage storage stor = LibHelperFeatureStorage.getStorage();
            for (uint256 i = 0; i < methodIDs.length; ++i) {
                bytes4 selector = methodIDs[i];
                address oldFeature = stor.impls[selector];
                stor.impls[selector] = feature;
                emit FeatureFunctionUpdated(selector, oldFeature, feature);
            }
        }
    }

    function registerFeatures(address[] calldata features, bytes4[][] calldata methodIDs) external onlyOwner {
        require(features.length == methodIDs.length, "registerFeatures: mismatched inputs.");
        unchecked {
            LibHelperFeatureStorage.Storage storage stor = LibHelperFeatureStorage.getStorage();
            for (uint256 i = 0; i < methodIDs.length; ++i) {
                // register feature
                address feature = features[i];
                bytes4[] calldata featureMethodIDs = methodIDs[i];
                for (uint256 j = 0; j < featureMethodIDs.length; ++j) {
                    bytes4 selector = featureMethodIDs[j];
                    address oldFeature = stor.impls[selector];
                    stor.impls[selector] = feature;
                    emit FeatureFunctionUpdated(selector, oldFeature, feature);
                }
            }
        }
    }

    function getFeature(bytes4 methodID) external view returns (address feature) {
        return LibHelperFeatureStorage.getStorage().impls[methodID];
    }

    /// @dev Fallback for just receiving ether.
    receive() external payable {}

    /// @dev Forwards calls to the appropriate implementation contract.
    fallback() external payable {
        bytes memory data = msg.data;
        bytes4 selector;
        assembly {
            selector := mload(add(data, 32))
            // Solidity does not require us to clean the trailing bytes.
            // We do it anyway
            selector := and(selector, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)
        }

        address feature = LibHelperFeatureStorage.getStorage().impls[selector];
        require(feature != address(0), "Not implemented method.");

        (bool success, ) = feature.delegatecall(data);
        if (success) {
            assembly {
                returndatacopy(0, 0, returndatasize())
                return(0, returndatasize())
            }
        } else {
            assembly {
                returndatacopy(0, 0, returndatasize())
                revert(0, returndatasize())
            }
        }
    }

    function rescueETH(address recipient) external onlyOwner {
        if (address(this).balance > 0) {
            (bool success,) = payable(recipient).call{value: address(this).balance}("");
            require(success, "_transferEth/TRANSFER_FAILED");
        }
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

import "./storage/LibHelperFeatureStorage.sol";


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract HelperOwnable {

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        if (owner() == address(0)) {
            _transferOwnership(msg.sender);
        }
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return LibHelperFeatureStorage.getStorage().owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) private {
        LibHelperFeatureStorage.Storage storage stor = LibHelperFeatureStorage.getStorage();
        address oldOwner = stor.owner;
        stor.owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 6 : LibHelperFeatureStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

import "./LibHelperStorage.sol";


library LibHelperFeatureStorage {

    struct Storage {
        address owner;
        // Mapping of function selector -> function implementation
        mapping(bytes4 => address) impls;
    }

    /// @dev Get the storage bucket for this contract.
    function getStorage() internal pure returns (Storage storage stor) {
        // uint256 storageSlot = LibStorage.STORAGE_ID_FEATURE;
        assembly { stor.slot := 0 }
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 6 of 6 : LibHelperStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


library LibHelperStorage {
    uint256 constant STORAGE_ID_FEATURE = 0 << 128;
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"oldFeature","type":"address"},{"indexed":false,"internalType":"address","name":"newFeature","type":"address"}],"name":"FeatureFunctionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes4","name":"methodID","type":"bytes4"}],"name":"getFeature","outputs":[{"internalType":"address","name":"feature","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"feature","type":"address"},{"internalType":"bytes4[]","name":"methodIDs","type":"bytes4[]"}],"name":"registerFeature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"features","type":"address[]"},{"internalType":"bytes4[][]","name":"methodIDs","type":"bytes4[][]"}],"name":"registerFeatures","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b50600073ffffffffffffffffffffffffffffffffffffffff166200003a6200006e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff160362000068576200006733620000ae60201b60201c565b5b62000197565b6000620000856200019260201b620003561760201c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000620000c56200019260201b620003561760201c565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b600090565b61139c80620001a76000396000f3fe6080604052600436106100595760003560e01c806304824e701461024a578063249671c7146102735780633659871e1461029c578063462c37d9146102d95780638da5cb5b14610302578063f2fde38b1461032d57610060565b3661006057005b600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000602082015190507fffffffff000000000000000000000000000000000000000000000000000000008116905060006100e1610356565b6001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bc90610c87565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16846040516101ec9190610d18565b600060405180830381855af49150503d8060008114610227576040519150601f19603f3d011682016040523d82523d6000602084013e61022c565b606091505b505090508015610240573d6000803e3d6000f35b3d6000803e3d6000fd5b34801561025657600080fd5b50610271600480360381019061026c9190610d97565b61035b565b005b34801561027f57600080fd5b5061029a60048036038101906102959190610e29565b61048a565b005b3480156102a857600080fd5b506102c360048036038101906102be9190610ee1565b6106bc565b6040516102d09190610f1d565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190610fe4565b610740565b005b34801561030e57600080fd5b50610317610a30565b6040516103249190610f1d565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190610d97565b610a63565b005b600090565b3373ffffffffffffffffffffffffffffffffffffffff1661037a610a30565b73ffffffffffffffffffffffffffffffffffffffff16146103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c7906110b1565b60405180910390fd5b60004711156104875760008173ffffffffffffffffffffffffffffffffffffffff16476040516103ff906110f7565b60006040518083038185875af1925050503d806000811461043c576040519150601f19603f3d011682016040523d82523d6000602084013e610441565b606091505b5050905080610485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047c90611158565b60405180910390fd5b505b50565b3373ffffffffffffffffffffffffffffffffffffffff166104a9610a30565b73ffffffffffffffffffffffffffffffffffffffff16146104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f6906110b1565b60405180910390fd5b6000610509610356565b905060005b838390508110156106b557600084848381811061052e5761052d611178565b5b90506020020160208101906105439190610ee1565b90506000836001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905086846001016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167ff05686f2e12debc00665cd81463f2ae8ae5b4f167ea8dead964a3235a7d2a76782896040516106a09291906111a7565b60405180910390a2505080600101905061050e565b5050505050565b60006106c6610356565b6001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661075f610a30565b73ffffffffffffffffffffffffffffffffffffffff16146107b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ac906110b1565b60405180910390fd5b8181905084849050146107fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f490611242565b60405180910390fd5b6000610807610356565b905060005b83839050811015610a2857600086868381811061082c5761082b611178565b5b90506020020160208101906108419190610d97565b905036600086868581811061085957610858611178565b5b905060200281019061086b9190611271565b9150915060005b82829050811015610a1957600083838381811061089257610891611178565b5b90506020020160208101906108a79190610ee1565b90506000876001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085886001016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167ff05686f2e12debc00665cd81463f2ae8ae5b4f167ea8dead964a3235a7d2a7678288604051610a049291906111a7565b60405180910390a25050806001019050610872565b5050505080600101905061080c565b505050505050565b6000610a3a610356565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16610a82610a30565b73ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906110b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90611346565b60405180910390fd5b610b5081610b53565b50565b6000610b5d610356565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b600082825260208201905092915050565b7f4e6f7420696d706c656d656e746564206d6574686f642e000000000000000000600082015250565b6000610c71601783610c2a565b9150610c7c82610c3b565b602082019050919050565b60006020820190508181036000830152610ca081610c64565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610cdb578082015181840152602081019050610cc0565b60008484015250505050565b6000610cf282610ca7565b610cfc8185610cb2565b9350610d0c818560208601610cbd565b80840191505092915050565b6000610d248284610ce7565b915081905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6482610d39565b9050919050565b610d7481610d59565b8114610d7f57600080fd5b50565b600081359050610d9181610d6b565b92915050565b600060208284031215610dad57610dac610d2f565b5b6000610dbb84828501610d82565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610de957610de8610dc4565b5b8235905067ffffffffffffffff811115610e0657610e05610dc9565b5b602083019150836020820283011115610e2257610e21610dce565b5b9250929050565b600080600060408486031215610e4257610e41610d2f565b5b6000610e5086828701610d82565b935050602084013567ffffffffffffffff811115610e7157610e70610d34565b5b610e7d86828701610dd3565b92509250509250925092565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ebe81610e89565b8114610ec957600080fd5b50565b600081359050610edb81610eb5565b92915050565b600060208284031215610ef757610ef6610d2f565b5b6000610f0584828501610ecc565b91505092915050565b610f1781610d59565b82525050565b6000602082019050610f326000830184610f0e565b92915050565b60008083601f840112610f4e57610f4d610dc4565b5b8235905067ffffffffffffffff811115610f6b57610f6a610dc9565b5b602083019150836020820283011115610f8757610f86610dce565b5b9250929050565b60008083601f840112610fa457610fa3610dc4565b5b8235905067ffffffffffffffff811115610fc157610fc0610dc9565b5b602083019150836020820283011115610fdd57610fdc610dce565b5b9250929050565b60008060008060408587031215610ffe57610ffd610d2f565b5b600085013567ffffffffffffffff81111561101c5761101b610d34565b5b61102887828801610f38565b9450945050602085013567ffffffffffffffff81111561104b5761104a610d34565b5b61105787828801610f8e565b925092505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061109b602083610c2a565b91506110a682611065565b602082019050919050565b600060208201905081810360008301526110ca8161108e565b9050919050565b50565b60006110e1600083610cb2565b91506110ec826110d1565b600082019050919050565b6000611102826110d4565b9150819050919050565b7f5f7472616e736665724574682f5452414e534645525f4641494c454400000000600082015250565b6000611142601c83610c2a565b915061114d8261110c565b602082019050919050565b6000602082019050818103600083015261117181611135565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506111bc6000830185610f0e565b6111c96020830184610f0e565b9392505050565b7f726567697374657246656174757265733a206d69736d61746368656420696e7060008201527f7574732e00000000000000000000000000000000000000000000000000000000602082015250565b600061122c602483610c2a565b9150611237826111d0565b604082019050919050565b6000602082019050818103600083015261125b8161121f565b9050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261128e5761128d611262565b5b80840192508235915067ffffffffffffffff8211156112b0576112af611267565b5b6020830192506020820236038313156112cc576112cb61126c565b5b509250929050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611330602683610c2a565b915061133b826112d4565b604082019050919050565b6000602082019050818103600083015261135f81611323565b905091905056fea2646970667358221220518ae08d3e4510fb8471c02aac8a6c584da4aa6cde3d3c579af05b96b049f3e864736f6c63430008110033

Deployed Bytecode

0x6080604052600436106100595760003560e01c806304824e701461024a578063249671c7146102735780633659871e1461029c578063462c37d9146102d95780638da5cb5b14610302578063f2fde38b1461032d57610060565b3661006057005b600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000602082015190507fffffffff000000000000000000000000000000000000000000000000000000008116905060006100e1610356565b6001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bc90610c87565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16846040516101ec9190610d18565b600060405180830381855af49150503d8060008114610227576040519150601f19603f3d011682016040523d82523d6000602084013e61022c565b606091505b505090508015610240573d6000803e3d6000f35b3d6000803e3d6000fd5b34801561025657600080fd5b50610271600480360381019061026c9190610d97565b61035b565b005b34801561027f57600080fd5b5061029a60048036038101906102959190610e29565b61048a565b005b3480156102a857600080fd5b506102c360048036038101906102be9190610ee1565b6106bc565b6040516102d09190610f1d565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190610fe4565b610740565b005b34801561030e57600080fd5b50610317610a30565b6040516103249190610f1d565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190610d97565b610a63565b005b600090565b3373ffffffffffffffffffffffffffffffffffffffff1661037a610a30565b73ffffffffffffffffffffffffffffffffffffffff16146103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c7906110b1565b60405180910390fd5b60004711156104875760008173ffffffffffffffffffffffffffffffffffffffff16476040516103ff906110f7565b60006040518083038185875af1925050503d806000811461043c576040519150601f19603f3d011682016040523d82523d6000602084013e610441565b606091505b5050905080610485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047c90611158565b60405180910390fd5b505b50565b3373ffffffffffffffffffffffffffffffffffffffff166104a9610a30565b73ffffffffffffffffffffffffffffffffffffffff16146104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f6906110b1565b60405180910390fd5b6000610509610356565b905060005b838390508110156106b557600084848381811061052e5761052d611178565b5b90506020020160208101906105439190610ee1565b90506000836001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905086846001016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167ff05686f2e12debc00665cd81463f2ae8ae5b4f167ea8dead964a3235a7d2a76782896040516106a09291906111a7565b60405180910390a2505080600101905061050e565b5050505050565b60006106c6610356565b6001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661075f610a30565b73ffffffffffffffffffffffffffffffffffffffff16146107b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ac906110b1565b60405180910390fd5b8181905084849050146107fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f490611242565b60405180910390fd5b6000610807610356565b905060005b83839050811015610a2857600086868381811061082c5761082b611178565b5b90506020020160208101906108419190610d97565b905036600086868581811061085957610858611178565b5b905060200281019061086b9190611271565b9150915060005b82829050811015610a1957600083838381811061089257610891611178565b5b90506020020160208101906108a79190610ee1565b90506000876001016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085886001016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167ff05686f2e12debc00665cd81463f2ae8ae5b4f167ea8dead964a3235a7d2a7678288604051610a049291906111a7565b60405180910390a25050806001019050610872565b5050505080600101905061080c565b505050505050565b6000610a3a610356565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16610a82610a30565b73ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906110b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90611346565b60405180910390fd5b610b5081610b53565b50565b6000610b5d610356565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b600082825260208201905092915050565b7f4e6f7420696d706c656d656e746564206d6574686f642e000000000000000000600082015250565b6000610c71601783610c2a565b9150610c7c82610c3b565b602082019050919050565b60006020820190508181036000830152610ca081610c64565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610cdb578082015181840152602081019050610cc0565b60008484015250505050565b6000610cf282610ca7565b610cfc8185610cb2565b9350610d0c818560208601610cbd565b80840191505092915050565b6000610d248284610ce7565b915081905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d6482610d39565b9050919050565b610d7481610d59565b8114610d7f57600080fd5b50565b600081359050610d9181610d6b565b92915050565b600060208284031215610dad57610dac610d2f565b5b6000610dbb84828501610d82565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610de957610de8610dc4565b5b8235905067ffffffffffffffff811115610e0657610e05610dc9565b5b602083019150836020820283011115610e2257610e21610dce565b5b9250929050565b600080600060408486031215610e4257610e41610d2f565b5b6000610e5086828701610d82565b935050602084013567ffffffffffffffff811115610e7157610e70610d34565b5b610e7d86828701610dd3565b92509250509250925092565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610ebe81610e89565b8114610ec957600080fd5b50565b600081359050610edb81610eb5565b92915050565b600060208284031215610ef757610ef6610d2f565b5b6000610f0584828501610ecc565b91505092915050565b610f1781610d59565b82525050565b6000602082019050610f326000830184610f0e565b92915050565b60008083601f840112610f4e57610f4d610dc4565b5b8235905067ffffffffffffffff811115610f6b57610f6a610dc9565b5b602083019150836020820283011115610f8757610f86610dce565b5b9250929050565b60008083601f840112610fa457610fa3610dc4565b5b8235905067ffffffffffffffff811115610fc157610fc0610dc9565b5b602083019150836020820283011115610fdd57610fdc610dce565b5b9250929050565b60008060008060408587031215610ffe57610ffd610d2f565b5b600085013567ffffffffffffffff81111561101c5761101b610d34565b5b61102887828801610f38565b9450945050602085013567ffffffffffffffff81111561104b5761104a610d34565b5b61105787828801610f8e565b925092505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061109b602083610c2a565b91506110a682611065565b602082019050919050565b600060208201905081810360008301526110ca8161108e565b9050919050565b50565b60006110e1600083610cb2565b91506110ec826110d1565b600082019050919050565b6000611102826110d4565b9150819050919050565b7f5f7472616e736665724574682f5452414e534645525f4641494c454400000000600082015250565b6000611142601c83610c2a565b915061114d8261110c565b602082019050919050565b6000602082019050818103600083015261117181611135565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506111bc6000830185610f0e565b6111c96020830184610f0e565b9392505050565b7f726567697374657246656174757265733a206d69736d61746368656420696e7060008201527f7574732e00000000000000000000000000000000000000000000000000000000602082015250565b600061122c602483610c2a565b9150611237826111d0565b604082019050919050565b6000602082019050818103600083015261125b8161121f565b9050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261128e5761128d611262565b5b80840192508235915067ffffffffffffffff8211156112b0576112af611267565b5b6020830192506020820236038313156112cc576112cb61126c565b5b509250929050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611330602683610c2a565b915061133b826112d4565b604082019050919050565b6000602082019050818103600083015261135f81611323565b905091905056fea2646970667358221220518ae08d3e4510fb8471c02aac8a6c584da4aa6cde3d3c579af05b96b049f3e864736f6c63430008110033

Block Transaction Gas Used Reward
view all blocks sequenced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.