Overview
ETH Balance
0 ETH
ETH Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Sponsored
Latest 25 from a total of 116,941 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer ERC721s | 8597229 | 2 hrs ago | IN | 0 ETH | 0.00000499 | ||||
Cancel ERC721Ord... | 8593046 | 4 hrs ago | IN | 0 ETH | 0.00000025 | ||||
Transfer ERC721s | 8588915 | 6 hrs ago | IN | 0 ETH | 0.00000096 | ||||
Transfer ERC721s | 8588556 | 6 hrs ago | IN | 0 ETH | 0.00000071 | ||||
Transfer ERC721s | 8588436 | 6 hrs ago | IN | 0 ETH | 0.00000071 | ||||
Transfer ERC721s | 8588299 | 6 hrs ago | IN | 0 ETH | 0.00000076 | ||||
Transfer ERC721s | 8588146 | 7 hrs ago | IN | 0 ETH | 0.00000083 | ||||
Transfer ERC721s | 8588026 | 7 hrs ago | IN | 0 ETH | 0.00000091 | ||||
Transfer ERC721s | 8587885 | 7 hrs ago | IN | 0 ETH | 0.000001 | ||||
Transfer ERC721s | 8587726 | 7 hrs ago | IN | 0 ETH | 0.00000106 | ||||
Transfer ERC721s | 8587360 | 7 hrs ago | IN | 0 ETH | 0.00000115 | ||||
Transfer ERC721s | 8587140 | 7 hrs ago | IN | 0 ETH | 0.00000115 | ||||
Transfer ERC721s | 8583203 | 9 hrs ago | IN | 0 ETH | 0.00000301 | ||||
Transfer ERC721s | 8583107 | 9 hrs ago | IN | 0 ETH | 0.00000313 | ||||
Fill Batch Signe... | 8582104 | 10 hrs ago | IN | 0.0001 ETH | 0.00000117 | ||||
Transfer ERC721s | 8569388 | 17 hrs ago | IN | 0 ETH | 0.00000075 | ||||
Transfer ERC721s | 8567306 | 18 hrs ago | IN | 0 ETH | 0.00000144 | ||||
Cancel ERC721Ord... | 8565535 | 19 hrs ago | IN | 0 ETH | 0.00000021 | ||||
Cancel ERC721Ord... | 8565517 | 19 hrs ago | IN | 0 ETH | 0.00000031 | ||||
Transfer ERC721s | 8558616 | 23 hrs ago | IN | 0 ETH | 0.00000107 | ||||
Fill Batch Signe... | 8558380 | 23 hrs ago | IN | 0.0087 ETH | 0.00000169 | ||||
Transfer ERC721s | 8558241 | 23 hrs ago | IN | 0 ETH | 0.00000108 | ||||
Transfer ERC721s | 8556909 | 24 hrs ago | IN | 0 ETH | 0.00000091 | ||||
Transfer ERC721s | 8556721 | 24 hrs ago | IN | 0 ETH | 0.00000086 | ||||
Transfer ERC721s | 8556360 | 24 hrs ago | IN | 0 ETH | 0.00000073 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
8582104 | 10 hrs ago | 0.000002 ETH | ||||
8582104 | 10 hrs ago | 0.000097 ETH | ||||
8582104 | 10 hrs ago | 0.000001 ETH | ||||
8558380 | 23 hrs ago | 0.000174 ETH | ||||
8558380 | 23 hrs ago | 0.008091 ETH | ||||
8558380 | 23 hrs ago | 0.000435 ETH | ||||
8532465 | 37 hrs ago | 0.0000024 ETH | ||||
8532465 | 37 hrs ago | 0.0001176 ETH | ||||
8508428 | 2 days ago | 0.000002 ETH | ||||
8508428 | 2 days ago | 0.000097 ETH | ||||
8508428 | 2 days ago | 0.000001 ETH | ||||
8495011 | 2 days ago | 0.00004 ETH | ||||
8495011 | 2 days ago | 0.00186 ETH | ||||
8495011 | 2 days ago | 0.0001 ETH | ||||
8482274 | 2 days ago | 0.00012 ETH | ||||
8482274 | 2 days ago | 0.00588 ETH | ||||
8482220 | 2 days ago | 0.000034 ETH | ||||
8482220 | 2 days ago | 0.001581 ETH | ||||
8482220 | 2 days ago | 0.000085 ETH | ||||
8456366 | 3 days ago | 0.0014 ETH | ||||
8456366 | 3 days ago | 0.0651 ETH | ||||
8456366 | 3 days ago | 0.0035 ETH | ||||
8456366 | 3 days ago | 0.07 ETH | ||||
8455801 | 3 days ago | 0.000068 ETH | ||||
8455801 | 3 days ago | 0.003162 ETH |
Loading...
Loading
Contract Name:
ElementEx
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Apache-2.0 /* Modifications Copyright 2022 Element.Market Copyright 2020 ZeroEx Intl. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.8.13; import "./features/interfaces/IOwnableFeature.sol"; import "./features/interfaces/ISimpleFunctionRegistryFeature.sol"; import "./storage/LibProxyStorage.sol"; import "./storage/LibSimpleFunctionRegistryStorage.sol"; import "./storage/LibOwnableStorage.sol"; /// @dev An extensible proxy contract that serves as a universal entry point for /// interacting with the 0x protocol. contract ElementEx { constructor(address registryFeature, address ownableFeature) { // Initialize RegistryFeature. _extend(ISimpleFunctionRegistryFeature.registerMethods.selector, registryFeature); _extend(ISimpleFunctionRegistryFeature.extend.selector, registryFeature); _extend(ISimpleFunctionRegistryFeature.rollback.selector, registryFeature); _extend(ISimpleFunctionRegistryFeature.getRollbackLength.selector, registryFeature); _extend(ISimpleFunctionRegistryFeature.getRollbackEntryAtIndex.selector, registryFeature); // Initialize OwnableFeature. _extend(IOwnableFeature.transferOwnership.selector, ownableFeature); _extend(IOwnableFeature.owner.selector, ownableFeature); // Transfer ownership to the real owner. LibOwnableStorage.getStorage().owner = msg.sender; } /// @dev Forwards calls to the appropriate implementation contract. fallback() external payable { address impl = LibProxyStorage.getStorage().impls[msg.sig]; assembly { if impl { calldatacopy(0, 0, calldatasize()) if delegatecall(gas(), impl, 0, calldatasize(), 0, 0) { // Success, copy the returned data and return. returndatacopy(0, 0, returndatasize()) return(0, returndatasize()) } // Failed, copy the returned data and revert. returndatacopy(0, 0, returndatasize()) revert(0, returndatasize()) } } revert("METHOD_NOT_IMPLEMENTED"); } /// @dev Fallback for just receiving ether. receive() external payable {} /// @dev Get the implementation contract of a registered function. /// @param selector The function selector. /// @return impl The implementation contract address. function getFunctionImplementation(bytes4 selector) public view returns (address impl) { return LibProxyStorage.getStorage().impls[selector]; } event ProxyFunctionUpdated(bytes4 indexed selector, address oldImpl, address newImpl); function _extend(bytes4 selector, address impl) private { LibSimpleFunctionRegistryStorage.Storage storage stor = LibSimpleFunctionRegistryStorage.getStorage(); LibProxyStorage.Storage storage proxyStor = LibProxyStorage.getStorage(); address oldImpl = proxyStor.impls[selector]; address[] storage history = stor.implHistory[selector]; history.push(oldImpl); proxyStor.impls[selector] = impl; emit ProxyFunctionUpdated(selector, oldImpl, impl); } }
// SPDX-License-Identifier: Apache-2.0 /* Modifications Copyright 2022 Element.Market Copyright 2020 ZeroEx Intl. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.8.13; // solhint-disable no-empty-blocks /// @dev Owner management and migration features. interface IOwnableFeature { /// @dev Emitted by Ownable when ownership is transferred. /// @param previousOwner The previous owner of the contract. /// @param newOwner The new owner of the contract. event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /// @dev Transfers ownership of the contract to a new address. /// @param newOwner The address that will become the owner. function transferOwnership(address newOwner) external; /// @dev The owner of this contract. /// @return ownerAddress The owner address. function owner() external view returns (address ownerAddress); }
// SPDX-License-Identifier: Apache-2.0 /* Modifications Copyright 2022 Element.Market Copyright 2020 ZeroEx Intl. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.8.13; /// @dev Basic registry management features. interface ISimpleFunctionRegistryFeature { /// @dev A function implementation was updated via `extend()` or `rollback()`. /// @param selector The function selector. /// @param oldImpl The implementation contract address being replaced. /// @param newImpl The replacement implementation contract address. event ProxyFunctionUpdated(bytes4 indexed selector, address oldImpl, address newImpl); function registerMethods(address impl, bytes4[] calldata methodIDs) external; /// @dev Roll back to a prior implementation of a function. /// @param selector The function selector. /// @param targetImpl The address of an older implementation of the function. function rollback(bytes4 selector, address targetImpl) external; /// @dev Register or replace a function. /// @param selector The function selector. /// @param impl The implementation contract for the function. function extend(bytes4 selector, address impl) external; /// @dev Retrieve the length of the rollback history for a function. /// @param selector The function selector. /// @return rollbackLength The number of items in the rollback history for /// the function. function getRollbackLength(bytes4 selector) external view returns (uint256); /// @dev Retrieve an entry in the rollback history for a function. /// @param selector The function selector. /// @param idx The index in the rollback history. /// @return impl An implementation address for the function at /// index `idx`. function getRollbackEntryAtIndex(bytes4 selector, uint256 idx) external view returns (address impl); }
// SPDX-License-Identifier: Apache-2.0 /* Modifications Copyright 2022 Element.Market Copyright 2020 ZeroEx Intl. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.8.13; import "./LibStorage.sol"; /// @dev Storage helpers for the `Ownable` feature. library LibOwnableStorage { /// @dev Storage bucket for this feature. struct Storage { // The owner of this contract. address owner; } /// @dev Get the storage bucket for this contract. function getStorage() internal pure returns (Storage storage stor) { uint256 storageSlot = LibStorage.STORAGE_ID_OWNABLE; // Dip into assembly to change the slot pointed to by the local // variable `stor`. // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries assembly { stor.slot := storageSlot } } }
// SPDX-License-Identifier: Apache-2.0 /* Modifications Copyright 2022 Element.Market Copyright 2020 ZeroEx Intl. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.8.13; import "./LibStorage.sol"; /// @dev Storage helpers for the proxy contract. library LibProxyStorage { /// @dev Storage bucket for proxy contract. struct Storage { // 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_PROXY; // Dip into assembly to change the slot pointed to by the local // variable `stor`. // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries assembly { stor.slot := storageSlot } } }
// SPDX-License-Identifier: Apache-2.0 /* Modifications Copyright 2022 Element.Market Copyright 2020 ZeroEx Intl. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.8.13; import "./LibStorage.sol"; /// @dev Storage helpers for the `SimpleFunctionRegistry` feature. library LibSimpleFunctionRegistryStorage { /// @dev Storage bucket for this feature. struct Storage { // Mapping of function selector -> implementation history. mapping(bytes4 => address[]) implHistory; } /// @dev Get the storage bucket for this contract. function getStorage() internal pure returns (Storage storage stor) { uint256 storageSlot = LibStorage.STORAGE_ID_SIMPLE_FUNCTION_REGISTRY; // Dip into assembly to change the slot pointed to by the local // variable `stor`. // See https://solidity.readthedocs.io/en/v0.6.8/assembly.html?highlight=slot#access-to-external-variables-functions-and-libraries assembly { stor.slot := storageSlot } } }
// SPDX-License-Identifier: Apache-2.0 /* Modifications Copyright 2022 Element.Market Copyright 2020 ZeroEx Intl. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ pragma solidity ^0.8.17; /// @dev Common storage helpers library LibStorage { /// @dev What to bit-shift a storage ID by to get its slot. /// This gives us a maximum of 2**128 inline fields in each bucket. uint256 constant STORAGE_ID_PROXY = 1 << 128; uint256 constant STORAGE_ID_SIMPLE_FUNCTION_REGISTRY = 2 << 128; uint256 constant STORAGE_ID_OWNABLE = 3 << 128; uint256 constant STORAGE_ID_COMMON_NFT_ORDERS = 4 << 128; uint256 constant STORAGE_ID_ERC721_ORDERS = 5 << 128; uint256 constant STORAGE_ID_ERC1155_ORDERS = 6 << 128; uint256 constant STORAGE_ID_REENTRANCY_GUARD = 7 << 128; }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"registryFeature","type":"address"},{"internalType":"address","name":"ownableFeature","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"oldImpl","type":"address"},{"indexed":false,"internalType":"address","name":"newImpl","type":"address"}],"name":"ProxyFunctionUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getFunctionImplementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516103c53803806103c583398101604081905261002f916101e4565b610040634f333d3560e01b836100df565b610051636eb224cb60e01b836100df565b610062630276d92960e61b836100df565b61007363dfd0074960e01b836100df565b6100846335d35de160e11b836100df565b61009563f2fde38b60e01b826100df565b6100a6638da5cb5b60e01b826100df565b336100b96101b060201b6101281760201c565b80546001600160a01b0319166001600160a01b0392909216919091179055506102179050565b60006100f36101b860201b6101301760201c565b905060006101096101c060201b6101201760201c565b6001600160e01b03198516600081815260208381526040808320805488845282852080546001810182558187528587200180546001600160a01b039384166001600160a01b03199182168117909255968890528886528354909616918b16918217909255825185815293840152949550919392917f2ae221083467de52078b0096696ab88d8d53a7ecb44bb65b56a2bab687598367910160405180910390a2505050505050565b600360801b90565b600160811b90565b600160801b90565b80516001600160a01b03811681146101df57600080fd5b919050565b600080604083850312156101f757600080fd5b610200836101c8565b915061020e602084016101c8565b90509250929050565b61019f806102266000396000f3fe6080604052600436106100225760003560e01c8063972fdd26146100c157610029565b3661002957005b600080356001600160e01b0319168152600160801b60205260409020546001600160a01b0316801561007c573660008037600080366000845af415610072573d6000803e3d6000f35b3d6000803e3d6000fd5b60405162461bcd60e51b81526020600482015260166024820152751351551213d117d393d517d25354131153515395115160521b604482015260640160405180910390fd5b3480156100cd57600080fd5b506101046100dc366004610138565b6001600160e01b0319166000908152600160801b60205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b600160801b90565b600360801b90565b600160811b90565b60006020828403121561014a57600080fd5b81356001600160e01b03198116811461016257600080fd5b939250505056fea26469706673582212203f5941c7b3c3ab12aade22fff3191c27f42f8a3e9504faa87202a71aab0428a464736f6c63430008110033000000000000000000000000a39a5f160a1952ddf38781bd76e402b0006912a90000000000000000000000002317d8b224328644759319dffa2a5da77c72e0e9
Deployed Bytecode
0x6080604052600436106100225760003560e01c8063972fdd26146100c157610029565b3661002957005b600080356001600160e01b0319168152600160801b60205260409020546001600160a01b0316801561007c573660008037600080366000845af415610072573d6000803e3d6000f35b3d6000803e3d6000fd5b60405162461bcd60e51b81526020600482015260166024820152751351551213d117d393d517d25354131153515395115160521b604482015260640160405180910390fd5b3480156100cd57600080fd5b506101046100dc366004610138565b6001600160e01b0319166000908152600160801b60205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b600160801b90565b600360801b90565b600160811b90565b60006020828403121561014a57600080fd5b81356001600160e01b03198116811461016257600080fd5b939250505056fea26469706673582212203f5941c7b3c3ab12aade22fff3191c27f42f8a3e9504faa87202a71aab0428a464736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a39a5f160a1952ddf38781bd76e402b0006912a90000000000000000000000002317d8b224328644759319dffa2a5da77c72e0e9
-----Decoded View---------------
Arg [0] : registryFeature (address): 0xa39A5f160a1952dDf38781Bd76E402B0006912A9
Arg [1] : ownableFeature (address): 0x2317D8B224328644759319DFFA2A5da77C72e0e9
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a39a5f160a1952ddf38781bd76e402b0006912a9
Arg [1] : 0000000000000000000000002317d8b224328644759319dffa2a5da77c72e0e9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.