Overview
BERA Balance
BERA Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 194830 | 88 days ago | IN | 0 BERA | 0.00000005 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
8560 | 92 days ago | Contract Creation | 0 BERA |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
UpgradeableBeacon
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 666 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @notice Upgradeable beacon for ERC1967 beacon proxies. /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/UpgradeableBeacon.sol) /// @author Modified from OpenZeppelin /// (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/beacon/UpgradeableBeacon.sol) /// /// @dev Note: /// - The implementation is intended to be used with ERC1967 beacon proxies. /// See: `LibClone.deployERC1967BeaconProxy` and related functions. /// - For gas efficiency, the ownership functionality is baked into this contract. /// /// Optimized creation code (hex-encoded): /// `60406101c73d393d5160205180821760a01c3d3d3e803b1560875781684343a0dc92ed22dbfc558068911c5a209f08d5ec5e557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b3d38a23d7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e03d38a3610132806100953d393df35b636d3e283b3d526004601cfdfe3d3560e01c635c60da1b14610120573d3560e01c80638da5cb5b1461010e5780633659cfe61460021b8163f2fde38b1460011b179063715018a6141780153d3d3e684343a0dc92ed22dbfc805490813303610101573d9260068116610089575b508290557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e03d38a3005b925060048035938460a01c60243610173d3d3e146100ba5782156100ad573861005f565b637448fbae3d526004601cfd5b82803b156100f4578068911c5a209f08d5ec5e557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b3d38a2005b636d3e283b3d526004601cfd5b6382b429003d526004601cfd5b684343a0dc92ed22dbfc543d5260203df35b68911c5a209f08d5ec5e543d5260203df3`. /// See: https://gist.github.com/Vectorized/365bd7f6e9a848010f00adb9e50a2516 /// /// To get the initialization code: /// `abi.encodePacked(creationCode, abi.encode(initialOwner, initialImplementation))` /// /// This optimized bytecode is compiled via Yul and is not verifiable via Etherscan /// at the time of writing. For best gas efficiency, deploy the Yul version. /// The Solidity version is provided as an interface / reference. contract UpgradeableBeacon { /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The new implementation is not a deployed contract. error NewImplementationHasNoCode(); /// @dev The caller is not authorized to perform the operation. error Unauthorized(); /// @dev The `newOwner` cannot be the zero address. error NewOwnerIsZeroAddress(); /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* EVENTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Emitted when the proxy's implementation is upgraded. event Upgraded(address indexed implementation); /// @dev The ownership is transferred from `oldOwner` to `newOwner`. /// This event is intentionally kept the same as OpenZeppelin's Ownable to be /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), /// despite it not being as lightweight as a single argument event. event OwnershipTransferred(address indexed oldOwner, address indexed newOwner); /// @dev `keccak256(bytes("Upgraded(address)"))`. uint256 private constant _UPGRADED_EVENT_SIGNATURE = 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b; /// @dev `keccak256(bytes("OwnershipTransferred(address,address)"))`. uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE = 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* STORAGE */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The storage slot for the implementation address. /// `uint72(bytes9(keccak256("_UPGRADEABLE_BEACON_IMPLEMENTATION_SLOT")))`. uint256 internal constant _UPGRADEABLE_BEACON_IMPLEMENTATION_SLOT = 0x911c5a209f08d5ec5e; /// @dev The storage slot for the owner address. /// `uint72(bytes9(keccak256("_UPGRADEABLE_BEACON_OWNER_SLOT")))`. uint256 internal constant _UPGRADEABLE_BEACON_OWNER_SLOT = 0x4343a0dc92ed22dbfc; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CONSTRUCTOR */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ constructor(address initialOwner, address initialImplementation) payable { _constructUpgradeableBeacon(initialOwner, initialImplementation); } /// @dev Called in the constructor. Override as required. function _constructUpgradeableBeacon(address initialOwner, address initialImplementation) internal virtual { _initializeUpgradeableBeacon(initialOwner, initialImplementation); } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* UPGRADEABLE BEACON OPERATIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Required to be called in the constructor or initializer. /// This function does not guard against double-initialization. function _initializeUpgradeableBeacon(address initialOwner, address initialImplementation) internal virtual { // We don't need to check if `initialOwner` is the zero address here, // as some use cases may not want the beacon to be owned. _setOwner(initialOwner); _setImplementation(initialImplementation); } /// @dev Sets the implementation directly without authorization guard. function _setImplementation(address newImplementation) internal virtual { /// @solidity memory-safe-assembly assembly { newImplementation := shr(96, shl(96, newImplementation)) // Clean the upper 96 bits. if iszero(extcodesize(newImplementation)) { mstore(0x00, 0x6d3e283b) // `NewImplementationHasNoCode()`. revert(0x1c, 0x04) } sstore(_UPGRADEABLE_BEACON_IMPLEMENTATION_SLOT, newImplementation) // Store the implementation. // Emit the {Upgraded} event. log2(codesize(), 0x00, _UPGRADED_EVENT_SIGNATURE, newImplementation) } } /// @dev Sets the owner directly without authorization guard. function _setOwner(address newOwner) internal virtual { /// @solidity memory-safe-assembly assembly { newOwner := shr(96, shl(96, newOwner)) // Clean the upper 96 bits. let oldOwner := sload(_UPGRADEABLE_BEACON_OWNER_SLOT) sstore(_UPGRADEABLE_BEACON_OWNER_SLOT, newOwner) // Store the owner. // Emit the {OwnershipTransferred} event. log3(codesize(), 0x00, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, oldOwner, newOwner) } } /// @dev Returns the implementation stored in the beacon. /// See: https://eips.ethereum.org/EIPS/eip-1967#beacon-contract-address function implementation() public view returns (address result) { /// @solidity memory-safe-assembly assembly { result := sload(_UPGRADEABLE_BEACON_IMPLEMENTATION_SLOT) } } /// @dev Returns the owner of the beacon. function owner() public view returns (address result) { /// @solidity memory-safe-assembly assembly { result := sload(_UPGRADEABLE_BEACON_OWNER_SLOT) } } /// @dev Allows the owner to upgrade the implementation. function upgradeTo(address newImplementation) public virtual onlyOwner { _setImplementation(newImplementation); } /// @dev Allows the owner to transfer the ownership to `newOwner`. function transferOwnership(address newOwner) public virtual onlyOwner { /// @solidity memory-safe-assembly assembly { if iszero(shl(96, newOwner)) { mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`. revert(0x1c, 0x04) } } _setOwner(newOwner); } /// @dev Allows the owner to renounce their ownership. function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /// @dev Throws if the sender is not the owner. function _checkOwner() internal view virtual { /// @solidity memory-safe-assembly assembly { // If the caller is not the stored owner, revert. if iszero(eq(caller(), sload(_UPGRADEABLE_BEACON_OWNER_SLOT))) { mstore(0x00, 0x82b42900) // `Unauthorized()`. revert(0x1c, 0x04) } } } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* MODIFIERS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Marks a function as only callable by the owner. modifier onlyOwner() virtual { _checkOwner(); _; } }
{ "remappings": [ "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/", "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/", "@openzeppelin-gov/=node_modules/@openzeppelin/contracts-upgradeable/governance/", "@openzeppelin-gov-ext/=node_modules/@openzeppelin/contracts-upgradeable/governance/extensions/", "@prb/math/=node_modules/@prb/math/", "@pythnetwork/=node_modules/@pythnetwork/pyth-sdk-solidity/", "forge-std/=lib/forge-std/src/", "solady/src/=lib/solady/src/", "solady/test/=lib/solady/test/", "transient-goodies/=lib/transient-goodies/src/", "@mock/=test/mock/", "@balancer-labs/=node_modules/@balancer-labs/", "ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/", "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/", "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/" ], "optimizer": { "enabled": true, "runs": 666 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "none", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "cancun", "viaIR": true, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"initialImplementation","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"NewImplementationHasNoCode","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080601f61034038819003918201601f19168301916001600160401b038311848410176100f15780849260409485528339810103126100ed5761004d602061004683610105565b9201610105565b9060018060a01b0316684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a36001600160a01b0316803b156100e0578068911c5a209f08d5ec5e557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2604051610226908161011a8239f35b636d3e283b5f526004601cfd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036100ed5756fe60806040526004361015610011575f80fd5b5f3560e01c80633659cfe6146101865780635c60da1b14610158578063715018a6146101025780638da5cb5b146100d45763f2fde38b14610050575f80fd5b346100d05760203660031901126100d0576004356001600160a01b038116908181036100d05761007e6101f9565b60601b156100c357684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b637448fbae5f526004601cfd5b5f80fd5b346100d0575f3660031901126100d0576020684343a0dc92ed22dbfc546001600160a01b0360405191168152f35b346100d0575f3660031901126100d05761011a6101f9565b5f684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100d0575f3660031901126100d057602068911c5a209f08d5ec5e546001600160a01b0360405191168152f35b346100d05760203660031901126100d0576004356001600160a01b0381168091036100d0576101b36101f9565b803b156101ec578068911c5a209f08d5ec5e557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b636d3e283b5f526004601cfd5b684343a0dc92ed22dbfc54330361020c57565b6382b429005f526004601cfdfea164736f6c634300081a000a000000000000000000000000d276d30592be512a418f2448e23f9e7f372b32a200000000000000000000000051f93957b06f15b1ff35ad76bbe31b2ed40ad40f
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c80633659cfe6146101865780635c60da1b14610158578063715018a6146101025780638da5cb5b146100d45763f2fde38b14610050575f80fd5b346100d05760203660031901126100d0576004356001600160a01b038116908181036100d05761007e6101f9565b60601b156100c357684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b637448fbae5f526004601cfd5b5f80fd5b346100d0575f3660031901126100d0576020684343a0dc92ed22dbfc546001600160a01b0360405191168152f35b346100d0575f3660031901126100d05761011a6101f9565b5f684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100d0575f3660031901126100d057602068911c5a209f08d5ec5e546001600160a01b0360405191168152f35b346100d05760203660031901126100d0576004356001600160a01b0381168091036100d0576101b36101f9565b803b156101ec578068911c5a209f08d5ec5e557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2005b636d3e283b5f526004601cfd5b684343a0dc92ed22dbfc54330361020c57565b6382b429005f526004601cfdfea164736f6c634300081a000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d276d30592be512a418f2448e23f9e7f372b32a200000000000000000000000051f93957b06f15b1ff35ad76bbe31b2ed40ad40f
-----Decoded View---------------
Arg [0] : initialOwner (address): 0xD276D30592bE512a418f2448e23f9E7F372b32A2
Arg [1] : initialImplementation (address): 0x51F93957b06f15b1FF35ad76BbE31b2eD40aD40F
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d276d30592be512a418f2448e23f9e7f372b32a2
Arg [1] : 00000000000000000000000051f93957b06f15b1ff35ad76bbe31b2ed40ad40f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.