Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Project Conf... | 21456924 | 5 days ago | IN | 0 ETH | 0.00188923 | ||||
Set Project Conf... | 21230738 | 37 days ago | IN | 0 ETH | 0.00217722 | ||||
Set Project Conf... | 21228871 | 37 days ago | IN | 0 ETH | 0.00334503 | ||||
Set Project Conf... | 21057460 | 61 days ago | IN | 0 ETH | 0.00144661 | ||||
Set Global Drops... | 20747267 | 104 days ago | IN | 0 ETH | 0.00008572 | ||||
Set Signer Enabl... | 20747265 | 104 days ago | IN | 0 ETH | 0.0000854 | ||||
Register Methods | 20747248 | 104 days ago | IN | 0 ETH | 0.0004467 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20747234 | 104 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
ElementDrop
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: MIT pragma solidity ^0.8.17; import "./libs/Ownable.sol"; contract ElementDrop is Ownable { // methodID -> implementation mapping(bytes4 => address) private implementations; event MethodUpdated(bytes4 indexed methodID, address oldImpl, address newImpl); function registerMethods(address impl, bytes4[] calldata methodIDs) external onlyOwner { if (impl != address(0)) { require(impl.code.length > 0, "Invalid implementation address"); } for (uint256 i = 0; i < methodIDs.length; i++) { bytes4 methodID = methodIDs[i]; address oldImpl = implementations[methodID]; implementations[methodID] = impl; emit MethodUpdated(methodID, oldImpl, impl); } } function getMethodImplementation(bytes4 methodID) external view returns (address) { return implementations[methodID]; } receive() external payable {} fallback() external payable { address impl = implementations[msg.sig]; require(impl != address(0), "Not implemented method."); assembly { calldatacopy(0, 0, calldatasize()) if delegatecall(gas(), impl, 0, calldatasize(), 0, 0) { returndatacopy(0, 0, returndatasize()) return(0, returndatasize()) } returndatacopy(0, 0, returndatasize()) revert(0, returndatasize()) } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; import "../storage/LibOwnableStorage.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 Ownable { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(tx.origin); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return LibOwnableStorage.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 { LibOwnableStorage.Storage storage stor = LibOwnableStorage.getStorage(); address oldOwner = stor.owner; stor.owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; library LibOwnableStorage { uint256 constant STORAGE_ID_OWNABLE = 1 << 128; struct Storage { address owner; } /// @dev Get the storage bucket for this contract. function getStorage() internal pure returns (Storage storage stor) { assembly { stor.slot := STORAGE_ID_OWNABLE } } }
{ "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
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"methodID","type":"bytes4"},{"indexed":false,"internalType":"address","name":"oldImpl","type":"address"},{"indexed":false,"internalType":"address","name":"newImpl","type":"address"}],"name":"MethodUpdated","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":"getMethodImplementation","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":"impl","type":"address"},{"internalType":"bytes4[]","name":"methodIDs","type":"bytes4[]"}],"name":"registerMethods","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3261001f565b61008d565b600061003361008560201b6104171760201c565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600160801b90565b6105d58061009c6000396000f3fe6080604052600436106100435760003560e01c80634f333d35146100e65780638da5cb5b14610108578063b31de22514610141578063f2fde38b146101815761004a565b3661004a57005b600080356001600160e01b0319168152602081905260409020546001600160a01b0316806100bf5760405162461bcd60e51b815260206004820152601760248201527f4e6f7420696d706c656d656e746564206d6574686f642e00000000000000000060448201526064015b60405180910390fd5b3660008037600080366000845af4156100dc573d6000803e3d6000f35b3d6000803e3d6000fd5b3480156100f257600080fd5b50610106610101366004610490565b6101a1565b005b34801561011457600080fd5b50600160801b546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b34801561014d57600080fd5b5061012561015c366004610516565b6001600160e01b0319166000908152602081905260409020546001600160a01b031690565b34801561018d57600080fd5b5061010661019c366004610547565b61033a565b336101b7600160801b546001600160a01b031690565b6001600160a01b03161461020d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100b6565b6001600160a01b03831615610276576000836001600160a01b03163b116102765760405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420696d706c656d656e746174696f6e2061646472657373000060448201526064016100b6565b60005b8181101561033457600083838381811061029557610295610562565b90506020020160208101906102aa9190610516565b6001600160e01b031981166000818152602081815260409182902080546001600160a01b031981166001600160a01b038c811691821790935584519290911680835292820152939450927f9f13558563f4afe89886ace8e041189e663ef4e4d1dad61cd64cc601a89b3725910160405180910390a25050808061032c90610578565b915050610279565b50505050565b33610350600160801b546001600160a01b031690565b6001600160a01b0316146103a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100b6565b6001600160a01b03811661040b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100b6565b6104148161041f565b50565b600160801b90565b600160801b80546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b80356001600160a01b038116811461048b57600080fd5b919050565b6000806000604084860312156104a557600080fd5b6104ae84610474565b9250602084013567ffffffffffffffff808211156104cb57600080fd5b818601915086601f8301126104df57600080fd5b8135818111156104ee57600080fd5b8760208260051b850101111561050357600080fd5b6020830194508093505050509250925092565b60006020828403121561052857600080fd5b81356001600160e01b03198116811461054057600080fd5b9392505050565b60006020828403121561055957600080fd5b61054082610474565b634e487b7160e01b600052603260045260246000fd5b60006001820161059857634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220f887fe76b13d3f0f1d871110a01ad442141377eec7d72fe788b8576e8c0cf57f64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106100435760003560e01c80634f333d35146100e65780638da5cb5b14610108578063b31de22514610141578063f2fde38b146101815761004a565b3661004a57005b600080356001600160e01b0319168152602081905260409020546001600160a01b0316806100bf5760405162461bcd60e51b815260206004820152601760248201527f4e6f7420696d706c656d656e746564206d6574686f642e00000000000000000060448201526064015b60405180910390fd5b3660008037600080366000845af4156100dc573d6000803e3d6000f35b3d6000803e3d6000fd5b3480156100f257600080fd5b50610106610101366004610490565b6101a1565b005b34801561011457600080fd5b50600160801b546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b34801561014d57600080fd5b5061012561015c366004610516565b6001600160e01b0319166000908152602081905260409020546001600160a01b031690565b34801561018d57600080fd5b5061010661019c366004610547565b61033a565b336101b7600160801b546001600160a01b031690565b6001600160a01b03161461020d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100b6565b6001600160a01b03831615610276576000836001600160a01b03163b116102765760405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420696d706c656d656e746174696f6e2061646472657373000060448201526064016100b6565b60005b8181101561033457600083838381811061029557610295610562565b90506020020160208101906102aa9190610516565b6001600160e01b031981166000818152602081815260409182902080546001600160a01b031981166001600160a01b038c811691821790935584519290911680835292820152939450927f9f13558563f4afe89886ace8e041189e663ef4e4d1dad61cd64cc601a89b3725910160405180910390a25050808061032c90610578565b915050610279565b50505050565b33610350600160801b546001600160a01b031690565b6001600160a01b0316146103a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016100b6565b6001600160a01b03811661040b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100b6565b6104148161041f565b50565b600160801b90565b600160801b80546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b80356001600160a01b038116811461048b57600080fd5b919050565b6000806000604084860312156104a557600080fd5b6104ae84610474565b9250602084013567ffffffffffffffff808211156104cb57600080fd5b818601915086601f8301126104df57600080fd5b8135818111156104ee57600080fd5b8760208260051b850101111561050357600080fd5b6020830194508093505050509250925092565b60006020828403121561052857600080fd5b81356001600160e01b03198116811461054057600080fd5b9392505050565b60006020828403121561055957600080fd5b61054082610474565b634e487b7160e01b600052603260045260246000fd5b60006001820161059857634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220f887fe76b13d3f0f1d871110a01ad442141377eec7d72fe788b8576e8c0cf57f64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 100.00% | $694.99 | 0.001 | $0.694991 |
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.