Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Cross-Chain Transactions
Loading...
Loading
Contract Name:
UUPSProxy
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./AbstractProxy.sol";
import "./ProxyStorage.sol";
import "../errors/AddressError.sol";
import "../utils/AddressUtil.sol";
contract UUPSProxy is AbstractProxy, ProxyStorage {
constructor(address firstImplementation) {
if (firstImplementation == address(0)) {
revert AddressError.ZeroAddress();
}
if (!AddressUtil.isContract(firstImplementation)) {
revert AddressError.NotAContract(firstImplementation);
}
_proxyStore().implementation = firstImplementation;
}
function _getImplementation() internal view virtual override returns (address) {
return _proxyStore().implementation;
}
}//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract AbstractProxy {
fallback() external payable {
_forward();
}
receive() external payable {
_forward();
}
function _forward() internal {
address implementation = _getImplementation();
// solhint-disable-next-line no-inline-assembly
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())
}
}
}
function _getImplementation() internal view virtual returns (address);
}//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract ProxyStorage {
struct ProxyStore {
address implementation;
bool simulatingUpgrade;
}
function _proxyStore() internal pure returns (ProxyStore storage store) {
assembly {
// bytes32(uint(keccak256("io.synthetix.v3.proxy")) - 1)
store.slot := 0x32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e
}
}
}//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library AddressError {
error ZeroAddress();
error NotAContract(address contr);
}//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library AddressUtil {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"firstImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"contr","type":"address"}],"name":"NotAContract","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b506040516101c33803806101c383398101604081905261002f916100df565b6001600160a01b0381166100565760405163d92e233d60e01b815260040160405180910390fd5b610069816100d960201b61006a1760201c565b610095576040516322a2d07b60e21b81526001600160a01b038216600482015260240160405180910390fd5b7f32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e80546001600160a01b0319166001600160a01b039290921691909117905561010f565b3b151590565b6000602082840312156100f157600080fd5b81516001600160a01b038116811461010857600080fd5b9392505050565b60a68061011d6000396000f3fe608060405236601057600e6013565b005b600e5b600060457f32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e546001600160a01b031690565b90503660008037600080366000845af43d6000803e8080156065573d6000f35b3d6000fd5b3b15159056fea2646970667358221220885ba3346b63d4c775141a952a4858cd465956d6f05013d88f7ffdfeb68bb4c564736f6c634300080b00330000000000000000000000007aca85d7092dd028b8d52144f07d2d0ed9a62538
Deployed Bytecode
0x608060405236601057600e6013565b005b600e5b600060457f32402780481dd8149e50baad867f01da72e2f7d02639a6fe378dbd80b6bb446e546001600160a01b031690565b90503660008037600080366000845af43d6000803e8080156065573d6000f35b3d6000fd5b3b15159056fea2646970667358221220885ba3346b63d4c775141a952a4858cd465956d6f05013d88f7ffdfeb68bb4c564736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007aca85d7092dd028b8d52144f07d2d0ed9a62538
-----Decoded View---------------
Arg [0] : firstImplementation (address): 0x7aca85D7092Dd028b8d52144F07D2D0eD9a62538
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007aca85d7092dd028b8d52144f07d2d0ed9a62538
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
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.