false
true
0
PulseChain Testnet v4
Blockchain
Blocks
Blocks
Uncles
Forked Blocks (Reorgs)
Transactions
Confirmed
Pending
Verified contracts
Tokens
All
tPLS
APIs
GraphQL
RPC
Eth RPC
Apps
Testnet V4 Beacon Explorer
PulseX
PulseChain Bridge
Testnet V4 Faucet
Become a Validator
PulseChain
Testnets
Testnet V4
/
Search
/
Search
Connection Lost
New Solidity Smart Contract Verification
Contract Address
The 0x address supplied on contract creation.
Is Yul contract
No
Yes
Select Yes if you want to verify Yul contract.
Contract Name
Must match the name specified in the code. For example, in
contract MyContract {..}
MyContract
is the contract name.
Include nightly builds
No
Yes
Select yes if you want to show nightly builds.
Compiler
The compiler version is specified in
pragma solidity X.X.X
. Use the compiler version rather than the nightly build. If using the Solidity compiler, run
solc —version
to check.
EVM Version
homestead
tangerineWhistle
spuriousDragon
byzantium
constantinople
petersburg
istanbul
berlin
london
paris
shanghai
default
The EVM version the contract is written for. If the bytecode does not match the version, we try to verify using the latest EVM version.
EVM version details
.
Optimization
No
Yes
If you enabled optimization during compilation, select yes.
Optimization runs
Enter the Solidity Contract Code
// SPDX-FileCopyrightText: 2023 Lido <info@lido.fi> // SPDX-License-Identifier: GPL-3.0 /* See contracts/COMPILERS.md */ pragma solidity 0.8.9; import {Address} from "@openzeppelin/contracts-v4.4/utils/Address.sol"; import {StorageSlot} from "@openzeppelin/contracts-v4.4/utils/StorageSlot.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts-v4.4/proxy/ERC1967/ERC1967Proxy.sol"; /// @notice An ossifiable proxy contract. Extends the ERC1967Proxy contract by /// adding admin functionality contract OssifiableProxy is ERC1967Proxy { /// @dev Initializes the upgradeable proxy with the initial implementation and admin /// @param implementation_ Address of the implementation /// @param admin_ Address of the admin of the proxy /// @param data_ Data used in a delegate call to implementation. The delegate call will be /// skipped if the data is empty bytes constructor( address implementation_, address admin_, bytes memory data_ ) ERC1967Proxy(implementation_, data_) { _changeAdmin(admin_); } /// @notice Returns the current admin of the proxy function proxy__getAdmin() external view returns (address) { return _getAdmin(); } /// @notice Returns the current implementation address function proxy__getImplementation() external view returns (address) { return _implementation(); } /// @notice Returns whether the implementation is locked forever function proxy__getIsOssified() external view returns (bool) { return _getAdmin() == address(0); } /// @notice Allows to transfer admin rights to zero address and prevent future /// upgrades of the proxy function proxy__ossify() external onlyAdmin { address prevAdmin = _getAdmin(); StorageSlot.getAddressSlot(_ADMIN_SLOT).value = address(0); emit AdminChanged(prevAdmin, address(0)); emit ProxyOssified(); } /// @notice Changes the admin of the proxy /// @param newAdmin_ Address of the new admin function proxy__changeAdmin(address newAdmin_) external onlyAdmin { _changeAdmin(newAdmin_); } /// @notice Upgrades the implementation of the proxy /// @param newImplementation_ Address of the new implementation function proxy__upgradeTo(address newImplementation_) external onlyAdmin { _upgradeTo(newImplementation_); } /// @notice Upgrades the proxy to a new implementation, optionally performing an additional /// setup call. /// @param newImplementation_ Address of the new implementation /// @param setupCalldata_ Data for the setup call. The call is skipped if setupCalldata_ is /// empty and forceCall_ is false /// @param forceCall_ Forces make delegate call to the implementation even with empty data_ function proxy__upgradeToAndCall( address newImplementation_, bytes memory setupCalldata_, bool forceCall_ ) external onlyAdmin { _upgradeToAndCall(newImplementation_, setupCalldata_, forceCall_); } /// @dev Validates that proxy is not ossified and that method is called by the admin /// of the proxy modifier onlyAdmin() { address admin = _getAdmin(); if (admin == address(0)) { revert ProxyIsOssified(); } if (admin != msg.sender) { revert NotAdmin(); } _; } event ProxyOssified(); error NotAdmin(); error ProxyIsOssified(); }
We recommend using flattened code. This is necessary if your code utilizes a library or inherits dependencies. Use the
POA solidity flattener or the
truffle flattener
.
Try to fetch constructor arguments automatically
No
Yes
ABI-encoded Constructor Arguments (if required by the contract)
0x0000000000000000000000005e8c7ac45096698e41ae346cb215befd717122490000000000000000000000009f3cafa814362af8963560070ea8636b39c84a7000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Add arguments in
ABI hex encoded form
. Constructor arguments are written right to left, and will be found at the end of the input created bytecode. They may also be
parsed here.
Add Contract Libraries
Contract Libraries
Library 1 Name
A library name called in the .sol file. Multiple libraries (up to 10) may be added for each contract. Click the Add Library button to add an additional one.
Library 1 Address
The 0x library address. This can be found in the generated json file or Truffle output (if using truffle).
Library 2 Name
Library 2 Address
Library 3 Name
Library 3 Address
Library 4 Name
Library 4 Address
Library 5 Name
Library 5 Address
Library 6 Name
Library 6 Address
Library 7 Name
Library 7 Address
Library 8 Name
Library 8 Address
Library 9 Name
Library 9 Address
Library 10 Name
Library 10 Address
Add Library
Loading...
Verify & publish
Cancel
Ok
Ok
Ok
No
Yes