Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 11389797 | 48 days ago | IN | 0 S | 0.00273124 |
Loading...
Loading
Contract Name:
ProxyAdmin2Step
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 600 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.20;import {Ownable2Step, Ownable} from "@openzeppelin/contracts/access/Ownable2Step.sol";import {ProxyAdmin} from "@openzeppelin/contracts/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);}
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.** This extension of the {Ownable} contract includes a two-step mechanism to transfer* ownership, where the new owner must call {acceptOwnership} in order to replace the* old one. This can help prevent common mistakes, such as transfers of ownership to* incorrect accounts, or to contracts that are unable to interact with the* permission system.** 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;
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/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);
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
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.1) (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;}function _contextSuffixLength() internal view virtual returns (uint256) {return 0;
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[ERC-1967] slots.*/library ERC1967Utils {/*** @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.
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[ERC-1967], 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 {
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);}
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 ERC-1967 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{"remappings": ["@lb-protocol/=lib/lb-rewarder/lib/dexv2/","@moe-core/=lib/lb-rewarder/lib/moe-core/","@openzeppelin/contracts-upgradeable/=lib/lb-rewarder/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/lb-rewarder/lib/openzeppelin-contracts/contracts/","@solmate/=lib/lb-rewarder/lib/moe-core/lib/solmate/","@tj-dexv2/=lib/lb-rewarder/lib/moe-core/lib/dexv2/","dexv2/=lib/lb-rewarder/lib/dexv2/","ds-test/=lib/lb-rewarder/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/lb-rewarder/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","lb-rewarder/=lib/lb-rewarder/src/","moe-core/=lib/lb-rewarder/lib/moe-core/","openzeppelin-contracts-upgradeable/=lib/lb-rewarder/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/lb-rewarder/lib/openzeppelin-contracts/","solmate/=lib/lb-rewarder/lib/moe-core/lib/solmate/src/","solrary/=lib/solrary/src/"],"optimizer": {"enabled": true,"runs": 600},"metadata": {"useLiteralContent": false,"bytecodeHash": "ipfs",
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ProxyAdmin2Step__CannotRenounceOwnership","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161064b38038061064b83398101604081905261002f916100e0565b80806001600160a01b03811661005f57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006881610070565b505050610110565b6100798161007c565b50565b600180546001600160a01b031916905561007981600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100f257600080fd5b81516001600160a01b038116811461010957600080fd5b9392505050565b61052c8061011f6000396000f3fe6080604052600436106100705760003560e01c80639623609d1161004e5780639623609d146100d8578063ad3cb1cc146100eb578063e30c397814610129578063f2fde38b1461014757600080fd5b8063715018a61461007557806379ba50971461008c5780638da5cb5b146100a1575b600080fd5b34801561008157600080fd5b5061008a610167565b005b34801561009857600080fd5b5061008a610180565b3480156100ad57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61008a6100e6366004610379565b6101c9565b3480156100f757600080fd5b5061011c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100cf9190610495565b34801561013557600080fd5b506001546001600160a01b03166100bb565b34801561015357600080fd5b5061008a6101623660046104af565b610238565b6040516342cf0ad560e11b815260040160405180910390fd5b60015433906001600160a01b031681146101bd5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6101c681610241565b50565b6101d161024a565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061020190869086906004016104cc565b6000604051808303818588803b15801561021a57600080fd5b505af115801561022e573d6000803e3d6000fd5b5050505050505050565b6101c681610279565b6101c6816102ea565b6000546001600160a01b031633146102775760405163118cdaa760e01b81523360048201526024016101b4565b565b61028161024a565b600180546001600160a01b0383166001600160a01b031990911681179091556102b26000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600180546001600160a01b03191690556101c681600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c657600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561038e57600080fd5b83356103998161034e565b925060208401356103a98161034e565b9150604084013567ffffffffffffffff808211156103c657600080fd5b818601915086601f8301126103da57600080fd5b8135818111156103ec576103ec610363565b604051601f8201601f19908116603f0116810190838211818310171561041457610414610363565b8160405282815289602084870101111561042d57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561047557602081850181015186830182015201610459565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006104a8602083018461044f565b9392505050565b6000602082840312156104c157600080fd5b81356104a88161034e565b6001600160a01b03831681526040602082015260006104ee604083018461044f565b94935050505056fea264697066735822122088ab4c9718e51b371e1681a8303d0340b885b9f6d92bebe21e434ad5d9b32a7b64736f6c634300081400330000000000000000000000004a3723b6e427ecbd90f2848d6df9381a676a02b9
Deployed Bytecode
0x6080604052600436106100705760003560e01c80639623609d1161004e5780639623609d146100d8578063ad3cb1cc146100eb578063e30c397814610129578063f2fde38b1461014757600080fd5b8063715018a61461007557806379ba50971461008c5780638da5cb5b146100a1575b600080fd5b34801561008157600080fd5b5061008a610167565b005b34801561009857600080fd5b5061008a610180565b3480156100ad57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b61008a6100e6366004610379565b6101c9565b3480156100f757600080fd5b5061011c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100cf9190610495565b34801561013557600080fd5b506001546001600160a01b03166100bb565b34801561015357600080fd5b5061008a6101623660046104af565b610238565b6040516342cf0ad560e11b815260040160405180910390fd5b60015433906001600160a01b031681146101bd5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6101c681610241565b50565b6101d161024a565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061020190869086906004016104cc565b6000604051808303818588803b15801561021a57600080fd5b505af115801561022e573d6000803e3d6000fd5b5050505050505050565b6101c681610279565b6101c6816102ea565b6000546001600160a01b031633146102775760405163118cdaa760e01b81523360048201526024016101b4565b565b61028161024a565b600180546001600160a01b0383166001600160a01b031990911681179091556102b26000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600180546001600160a01b03191690556101c681600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c657600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561038e57600080fd5b83356103998161034e565b925060208401356103a98161034e565b9150604084013567ffffffffffffffff808211156103c657600080fd5b818601915086601f8301126103da57600080fd5b8135818111156103ec576103ec610363565b604051601f8201601f19908116603f0116810190838211818310171561041457610414610363565b8160405282815289602084870101111561042d57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561047557602081850181015186830182015201610459565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006104a8602083018461044f565b9392505050565b6000602082840312156104c157600080fd5b81356104a88161034e565b6001600160a01b03831681526040602082015260006104ee604083018461044f565b94935050505056fea264697066735822122088ab4c9718e51b371e1681a8303d0340b885b9f6d92bebe21e434ad5d9b32a7b64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004a3723b6e427ecbd90f2848d6df9381a676a02b9
-----Decoded View---------------
Arg [0] : initialOwner (address): 0x4A3723B6e427Ecbd90f2848d6dF9381A676a02b9
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004a3723b6e427ecbd90f2848d6df9381a676a02b9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.