Source Code
Overview
S Balance
0 S
More Info
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
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:
TransparentUpgradeableProxy2Step
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 800 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.20;import {ERC1967Utils} from "openzeppelin/proxy/ERC1967/ERC1967Utils.sol";import {ERC1967Proxy} from "openzeppelin/proxy/ERC1967/ERC1967Proxy.sol";import {ITransparentUpgradeableProxy} from "openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol";import {IERC1967} from "openzeppelin/interfaces/IERC1967.sol";import {ProxyAdmin2Step} from "./ProxyAdmin2Step.sol";/*** @title Transparent Upgradeable Proxy Contract* @dev Copy of the OpenZeppelin TransparentUpgradeableProxy contract with the following changes:* - The constructor accepts a ProxyAdmin2Step contract instead of deploying a ProxyAdmin contract. This allows the* ProxyAdmin2Step to be used for multiple TransparentUpgradeableProxy contracts instead of deploying a new ProxyAdmin* contract for each TransparentUpgradeableProxy contract.** This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.** To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector* clashing], which can potentially be used in an attack, this contract uses the* https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two* things that go hand in hand:** 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if* that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)pragma solidity ^0.8.20;import {IBeacon} from "../beacon/IBeacon.sol";import {Address} from "../../utils/Address.sol";import {StorageSlot} from "../../utils/StorageSlot.sol";/*** @dev This abstract contract provides getters and event emitting update functions for* https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.*/library ERC1967Utils {// We re-declare ERC-1967 events here because they can't be used directly from IERC1967.// This will be fixed in Solidity 0.8.21. At that point we should remove these events./*** @dev Emitted when the implementation is upgraded.*/event Upgraded(address indexed implementation);/*** @dev Emitted when the admin account has changed.*/event AdminChanged(address previousAdmin, address newAdmin);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Proxy.sol)pragma solidity ^0.8.20;import {Proxy} from "../Proxy.sol";import {ERC1967Utils} from "./ERC1967Utils.sol";/*** @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an* implementation address that can be changed. This address is stored in storage in the location specified by* https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the* implementation behind the proxy.*/contract ERC1967Proxy is Proxy {/*** @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.** If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an* encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.** Requirements:** - If `data` is empty, `msg.value` must be zero.*/constructor(address implementation, bytes memory _data) payable {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/transparent/TransparentUpgradeableProxy.sol)pragma solidity ^0.8.20;import {ERC1967Utils} from "../ERC1967/ERC1967Utils.sol";import {ERC1967Proxy} from "../ERC1967/ERC1967Proxy.sol";import {IERC1967} from "../../interfaces/IERC1967.sol";import {ProxyAdmin} from "./ProxyAdmin.sol";/*** @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}* does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch* mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not* include them in the ABI so this interface must be used to interact with it.*/interface ITransparentUpgradeableProxy is IERC1967 {function upgradeToAndCall(address, bytes calldata) external payable;}/*** @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.** To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector* clashing], which can potentially be used in an attack, this contract uses the* https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)pragma solidity ^0.8.20;/*** @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.*/interface IERC1967 {/*** @dev Emitted when the implementation is upgraded.*/event Upgraded(address indexed implementation);/*** @dev Emitted when the admin account has changed.*/event AdminChanged(address previousAdmin, address newAdmin);/*** @dev Emitted when the beacon is changed.*/event BeaconUpgraded(address indexed beacon);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.20;import {Ownable2Step, Ownable} from "openzeppelin/access/Ownable2Step.sol";import {ProxyAdmin} from "openzeppelin/proxy/transparent/ProxyAdmin.sol";/*** @title Proxy Admin 2 Step Contract* @dev The ProxyAdmin2Step Contract is a ProxyAdmin contract that uses the Ownable2Step contract.*/contract ProxyAdmin2Step is ProxyAdmin, Ownable2Step {error ProxyAdmin2Step__CannotRenounceOwnership();constructor(address initialOwner) ProxyAdmin(initialOwner) {}function transferOwnership(address newOwner) public override(Ownable2Step, Ownable) {Ownable2Step.transferOwnership(newOwner);}function renounceOwnership() public pure override {revert ProxyAdmin2Step__CannotRenounceOwnership();}function _transferOwnership(address newOwner) internal override(Ownable2Step, Ownable) {Ownable2Step._transferOwnership(newOwner);}
12345678910111213141516// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)pragma solidity ^0.8.20;/*** @dev This is the interface that {BeaconProxy} expects of its beacon.*/interface IBeacon {/*** @dev Must return an address that can be used as a delegate call target.** {UpgradeableBeacon} will check that this address is a contract.*/function implementation() external view returns (address);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)pragma solidity ^0.8.20;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev The ETH balance of the account is not enough to perform the operation.*/error AddressInsufficientBalance(address account);/*** @dev There's no code at `target` (it is not a contract).*/error AddressEmptyCode(address target);/*** @dev A call to an address target failed. The target may have reverted.*/error FailedInnerCall();/*** @dev Replacement for Solidity's `transfer`: sends `amount` wei to
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.pragma solidity ^0.8.20;/*** @dev Library for reading and writing primitive types to specific storage slots.** Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.* This library helps with reading and writing to such slots without the need for inline assembly.** The functions in this library return Slot structs that contain a `value` member that can be used to read or write.** Example usage to set ERC1967 implementation slot:* ```solidity* contract ERC1967 {* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;** function _getImplementation() internal view returns (address) {* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;* }** function _setImplementation(address newImplementation) internal {* require(newImplementation.code.length > 0);* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)pragma solidity ^0.8.20;/*** @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to* be specified by overriding the virtual {_implementation} function.** Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a* different contract through the {_delegate} function.** The success and return data of the delegated call will be returned back to the caller of the proxy.*/abstract contract Proxy {/*** @dev Delegates the current call to `implementation`.** This function does not return to its internal call site, it will return directly to the external caller.*/function _delegate(address implementation) internal virtual {assembly {// Copy msg.data. We take full control of memory in this inline assembly// block because it will not return to Solidity code. We overwrite the// Solidity scratch pad at memory position 0.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (proxy/transparent/ProxyAdmin.sol)pragma solidity ^0.8.20;import {ITransparentUpgradeableProxy} from "./TransparentUpgradeableProxy.sol";import {Ownable} from "../../access/Ownable.sol";/*** @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an* explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.*/contract ProxyAdmin is Ownable {/*** @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address)`* and `upgradeAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,* while `upgradeAndCall` will invoke the `receive` function if the second argument is the empty byte string.* If the getter returns `"5.0.0"`, only `upgradeAndCall(address,bytes)` is present, and the second argument must* be the empty byte string if no function should be called, making it impossible to invoke the `receive` function* during an upgrade.*/string public constant UPGRADE_INTERFACE_VERSION = "5.0.0";/*** @dev Sets the initial owner who can perform upgrades.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable2Step.sol)pragma solidity ^0.8.20;import {Ownable} from "./Ownable.sol";/*** @dev Contract module which provides access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** The initial owner is specified at deployment time in the constructor for `Ownable`. This* can later be changed with {transferOwnership} and {acceptOwnership}.** This module is used through inheritance. It will make available all functions* from parent (Ownable).*/abstract contract Ownable2Step is Ownable {address private _pendingOwner;event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);/*** @dev Returns the address of the pending owner.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)pragma solidity ^0.8.20;import {Context} from "../utils/Context.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.** The initial owner is set to the address provided by the deployer. 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 is Context {address private _owner;/*** @dev The caller account is not authorized to perform an operation.*/error OwnableUnauthorizedAccount(address account);
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Context.sol)pragma solidity ^0.8.20;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526{"remappings": ["ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","openzeppelin/=lib/openzeppelin-contracts/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","solmate/=lib/solmate/","joe-v2/=lib/joe-v2/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer": {"enabled": true,"runs": 800},"metadata": {"useLiteralContent": false,"bytecodeHash": "ipfs","appendCBOR": true},"outputSelection": {"*": {"*": ["evm.bytecode",
[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"contract ProxyAdmin2Step","name":"initialProxyAdmin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"ProxyDeniedAdminAccess","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}]
Contract Creation Code
60a0604052604051620009713803806200097183398101604081905262000026916200037c565b828162000034828262000060565b50506001600160a01b038216608052620000576200005160805190565b620000c6565b5050506200047f565b6200006b8262000138565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115620000b857620000b38282620001b8565b505050565b620000c262000235565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200010860008051602062000951833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001358162000257565b50565b806001600160a01b03163b6000036200017457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b031684604051620001d7919062000461565b600060405180830381855af49150503d806000811462000214576040519150601f19603f3d011682016040523d82523d6000602084013e62000219565b606091505b5090925090506200022c8583836200029a565b95945050505050565b3415620002555760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166200028357604051633173bdd160e11b8152600060048201526024016200016b565b806000805160206200095183398151915262000197565b606082620002b357620002ad8262000300565b620002f9565b8151158015620002cb57506001600160a01b0384163b155b15620002f657604051639996b31560e01b81526001600160a01b03851660048201526024016200016b565b50805b9392505050565b805115620003115780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146200013557600080fd5b634e487b7160e01b600052604160045260246000fd5b60005b838110156200037357818101518382015260200162000359565b50506000910152565b6000806000606084860312156200039257600080fd5b83516200039f816200032a565b6020850151909350620003b2816200032a565b60408501519092506001600160401b0380821115620003d057600080fd5b818601915086601f830112620003e557600080fd5b815181811115620003fa57620003fa62000340565b604051601f8201601f19908116603f0116810190838211818310171562000425576200042562000340565b816040528281528960208487010111156200043f57600080fd5b6200045283602083016020880162000356565b80955050505050509250925092565b600082516200047581846020870162000356565b9190910192915050565b6080516104b76200049a6000396000601001526104b76000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610093576000357fffffffff000000000000000000000000000000000000000000000000000000001663278f794360e11b14610089576040516334ad5dbb60e21b815260040160405180910390fd5b61009161009b565b565b6100916100ca565b6000806100ab3660048184610342565b8101906100b89190610382565b915091506100c682826100da565b5050565b6100916100d5610135565b61016d565b6100e382610191565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561012d576101288282610225565b505050565b6100c661029b565b60006101687f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e80801561018c573d6000f35b3d6000fd5b806001600160a01b03163b6000036101cc57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102429190610452565b600060405180830381855af49150503d806000811461027d576040519150601f19603f3d011682016040523d82523d6000602084013e610282565b606091505b50915091506102928583836102ba565b95945050505050565b34156100915760405163b398979f60e01b815260040160405180910390fd5b6060826102cf576102ca82610319565b610312565b81511580156102e657506001600160a01b0384163b155b1561030f57604051639996b31560e01b81526001600160a01b03851660048201526024016101c3565b50805b9392505050565b8051156103295780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561035257600080fd5b8386111561035f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561039557600080fd5b82356001600160a01b03811681146103ac57600080fd5b9150602083013567ffffffffffffffff808211156103c957600080fd5b818501915085601f8301126103dd57600080fd5b8135818111156103ef576103ef61036c565b604051601f8201601f19908116603f011681019083821181831017156104175761041761036c565b8160405282815288602084870101111561043057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104735760208186018101518583015201610459565b50600092019182525091905056fea26469706673582212200c6206a7fd08fa9b5d8dcd2df526b35a744cd544ef0775ec6149a769264261d264736f6c63430008140033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000df5bd72e999e5298bef86e6f2d23eded2209bc7f000000000000000000000000ea71adaf8c31f5996d8a2b17a5faab95ddc61cd800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e6300a030000000000000000000000004a3723b6e427ecbd90f2848d6df9381a676a02b9000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000007a1d40864982f4d7c7151ea70b576efc404e82fe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405261000c61000e565b005b7f000000000000000000000000ea71adaf8c31f5996d8a2b17a5faab95ddc61cd86001600160a01b03163303610093576000357fffffffff000000000000000000000000000000000000000000000000000000001663278f794360e11b14610089576040516334ad5dbb60e21b815260040160405180910390fd5b61009161009b565b565b6100916100ca565b6000806100ab3660048184610342565b8101906100b89190610382565b915091506100c682826100da565b5050565b6100916100d5610135565b61016d565b6100e382610191565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561012d576101288282610225565b505050565b6100c661029b565b60006101687f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e80801561018c573d6000f35b3d6000fd5b806001600160a01b03163b6000036101cc57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102429190610452565b600060405180830381855af49150503d806000811461027d576040519150601f19603f3d011682016040523d82523d6000602084013e610282565b606091505b50915091506102928583836102ba565b95945050505050565b34156100915760405163b398979f60e01b815260040160405180910390fd5b6060826102cf576102ca82610319565b610312565b81511580156102e657506001600160a01b0384163b155b1561030f57604051639996b31560e01b81526001600160a01b03851660048201526024016101c3565b50805b9392505050565b8051156103295780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561035257600080fd5b8386111561035f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561039557600080fd5b82356001600160a01b03811681146103ac57600080fd5b9150602083013567ffffffffffffffff808211156103c957600080fd5b818501915085601f8301126103dd57600080fd5b8135818111156103ef576103ef61036c565b604051601f8201601f19908116603f011681019083821181831017156104175761041761036c565b8160405282815288602084870101111561043057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104735760208186018101518583015201610459565b50600092019182525091905056fea26469706673582212200c6206a7fd08fa9b5d8dcd2df526b35a744cd544ef0775ec6149a769264261d264736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000df5bd72e999e5298bef86e6f2d23eded2209bc7f000000000000000000000000ea71adaf8c31f5996d8a2b17a5faab95ddc61cd800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e6300a030000000000000000000000004a3723b6e427ecbd90f2848d6df9381a676a02b9000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000007a1d40864982f4d7c7151ea70b576efc404e82fe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0xdf5BD72E999e5298bef86e6f2d23EDED2209BC7f
Arg [1] : initialProxyAdmin (address): 0xea71adaF8c31f5996D8A2B17a5fAAb95dDC61cD8
Arg [2] : _data (bytes): 0xe6300a030000000000000000000000004a3723b6e427ecbd90f2848d6df9381a676a02b9000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000007a1d40864982f4d7c7151ea70b576efc404e82fe0000000000000000000000000000000000000000000000000000000000000000
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 000000000000000000000000df5bd72e999e5298bef86e6f2d23eded2209bc7f
Arg [1] : 000000000000000000000000ea71adaf8c31f5996d8a2b17a5faab95ddc61cd8
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000124
Arg [4] : e6300a030000000000000000000000004a3723b6e427ecbd90f2848d6df9381a
Arg [5] : 676a02b900000000000000000000000000000000000000000000000000000000
Arg [6] : 0000006000000000000000000000000000000000000000000000000000000000
Arg [7] : 000000c000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000200000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000100000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000200000000000000000000000000000000000000000000000000000000
Arg [11] : 000000020000000000000000000000007a1d40864982f4d7c7151ea70b576efc
Arg [12] : 404e82fe00000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.