More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Exit Config | 18413772 | 484 days ago | IN | 0 ETH | 0.00410125 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16162315 | 800 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Proxy
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.7; import { IDefaultImplementationBeacon } from "./interfaces/IDefaultImplementationBeacon.sol"; import { SlotManipulatable } from "./SlotManipulatable.sol"; /// @title A completely transparent, and thus interface-less, proxy contract. contract Proxy is SlotManipulatable { /// @dev Storage slot with the address of the current factory. `keccak256('eip1967.proxy.factory') - 1`. bytes32 private constant FACTORY_SLOT = bytes32(0x7a45a402e4cb6e08ebc196f20f66d5d30e67285a2a8aa80503fa409e727a4af1); /// @dev Storage slot with the address of the current factory. `keccak256('eip1967.proxy.implementation') - 1`. bytes32 private constant IMPLEMENTATION_SLOT = bytes32(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc); /** * @dev The constructor requires at least one of `factory_` or `implementation_`. * If an implementation is not provided, the factory is treated as an IDefaultImplementationBeacon to fetch the default implementation. * @param factory_ The address of a proxy factory, if any. * @param implementation_ The address of the implementation contract being proxied, if any. */ constructor(address factory_, address implementation_) { _setSlotValue(FACTORY_SLOT, bytes32(uint256(uint160(factory_)))); // If the implementation is empty, fetch it from the factory, which can act as a beacon. address implementation = implementation_ == address(0) ? IDefaultImplementationBeacon(factory_).defaultImplementation() : implementation_; require(implementation != address(0)); _setSlotValue(IMPLEMENTATION_SLOT, bytes32(uint256(uint160(implementation)))); } fallback() payable external virtual { bytes32 implementation = _getSlotValue(IMPLEMENTATION_SLOT); require(address(uint160(uint256(implementation))).code.length != uint256(0)); assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.7; abstract contract SlotManipulatable { function _getReferenceTypeSlot(bytes32 slot_, bytes32 key_) internal pure returns (bytes32 value_) { return keccak256(abi.encodePacked(key_, slot_)); } function _getSlotValue(bytes32 slot_) internal view returns (bytes32 value_) { assembly { value_ := sload(slot_) } } function _setSlotValue(bytes32 slot_, bytes32 value_) internal { assembly { sstore(slot_, value_) } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.7; /// @title An beacon that provides a default implementation for proxies, must implement IDefaultImplementationBeacon. interface IDefaultImplementationBeacon { /// @dev The address of an implementation for proxies. function defaultImplementation() external view returns (address defaultImplementation_); }
{ "remappings": [ "contract-test-utils/=modules/contract-test-utils/contracts/", "erc20-helper/=modules/erc20-helper/src/", "erc20/=modules/erc20/", "maple-proxy-factory/=modules/maple-proxy-factory/", "proxy-factory/=modules/maple-proxy-factory/modules/proxy-factory/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"factory_","type":"address"},{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161024538038061024583398101604081905261002f91610169565b6001600160a01b0382167f7a45a402e4cb6e08ebc196f20f66d5d30e67285a2a8aa80503fa409e727a4af15560006001600160a01b0382161561007257816100e3565b826001600160a01b031663b39c45936040518163ffffffff1660e01b815260040160206040518083038186803b1580156100ab57600080fd5b505afa1580156100bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e39190610147565b90506001600160a01b0381166100f857600080fd5b6001600160a01b03167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc555061019c9050565b80516001600160a01b038116811461014257600080fd5b919050565b60006020828403121561015957600080fd5b6101628261012b565b9392505050565b6000806040838503121561017c57600080fd5b6101858361012b565b91506101936020840161012b565b90509250929050565b609b806101aa6000396000f3fe60806040526000602d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b0381163b604257600080fd5b3660008037600080366000845af43d6000803e8080156060573d6000f35b3d6000fdfea26469706673582212202c0d2188f6da67b62f4fc29a9a5dd4a8b6c624d019ccff37946e299ca5936d4b64736f6c63430008070033000000000000000000000000b9e25b584dc4a7c9d47aef577f111fbe5705773b0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526000602d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b0381163b604257600080fd5b3660008037600080366000845af43d6000803e8080156060573d6000f35b3d6000fdfea26469706673582212202c0d2188f6da67b62f4fc29a9a5dd4a8b6c624d019ccff37946e299ca5936d4b64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b9e25b584dc4a7c9d47aef577f111fbe5705773b0000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : factory_ (address): 0xb9e25B584dc4a7C9d47aEF577f111fBE5705773B
Arg [1] : implementation_ (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b9e25b584dc4a7c9d47aef577f111fbe5705773b
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.