Source Code
Overview
S Balance
More Info
ContractCreator
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:
InfinexProxyWithOwner
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity ^0.8.21; import { UUPSProxy } from "src/proxy/UUPSProxy.sol"; import { OwnableStorage } from "src/ownership/OwnableStorage.sol"; /** * @dev Infinex Proxy with owner based on Synthetix UUPSProxyWithOwner * https://github.com/Synthetixio/synthetix-v3/blob/main/utils/core-contracts/contracts/proxy/UUPSProxyWithOwner.sol */ // slither-disable-start locked-ether contract InfinexProxyWithOwner is UUPSProxy { constructor(address firstImplementation, address initialOwner) UUPSProxy(firstImplementation) { if (initialOwner == address(0)) revert ZeroAddress(); OwnableStorage._setOwner(initialOwner); } } // slither-disable-end locked-ether
//SPDX-License-Identifier: MIT pragma solidity ^0.8.21; library AddressUtil { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.21; /** * @title Ownable Storage * @dev This library provides storage and functions for managing the ownership of a contract, using the Openzeppelin ownable upgradable storage slot. * Implementation is a modified version of Openzeppelin and Synthetix Ownable implementations. */ library OwnableStorage { // Storage slot copied from the Openzeppelin ownable upgradable contract. // https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/master/contracts/access/OwnableUpgradeable.sol // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.Ownable")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant _SLOT_OWNABLE_STORAGE = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300; //#gitleaks:allow struct Storage { address _owner; address _pendingOwner; } /** * @notice Loads the storage data for the Ownable contract * @return store The storage data for the Ownable contract */ function getStorage() internal pure returns (Storage storage store) { bytes32 s = _SLOT_OWNABLE_STORAGE; assembly { store.slot := s } } /** * @notice Returns the current owner of the contract * @return The address of the owner */ function _getOwner() internal view returns (address) { return getStorage()._owner; } /** * @notice Returns the pending owner of the contract. * @return The address of the pending owner. */ function _getPendingOwner() internal view returns (address) { return getStorage()._pendingOwner; } /** * @notice Sets the owner in ownable storage. * @param _newOwner The new owner of the contract. */ function _setOwner(address _newOwner) internal { getStorage()._owner = _newOwner; } /** * @notice Sets the pending owner. * @param _newOwner The new pending owner of the contract. */ function _setPendingOwner(address _newOwner) internal { getStorage()._pendingOwner = _newOwner; } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.21; /** * @dev Synthetix Abstract Proxy * https://github.com/Synthetixio/synthetix-v3/blob/main/utils/core-contracts/contracts/proxy/AbstractProxy.sol */ 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.21; /** * @dev Modified Synthetix proxy storage contract. * https://github.com/Synthetixio/synthetix-v3/blob/main/utils/core-contracts/contracts/proxy/ProxyStorage.sol */ contract ProxyStorage { // keccak256(abi.encode("io.synthetix.core-contracts.Proxy")); bytes32 private constant _SLOT_PROXY_STORAGE = 0x5a648c35a2f5512218b4683cf10e03f5b7c9dc7346e1bf77d304ae97f60f592b; //#gitleaks:allow struct ProxyStore { address implementation; bool simulatingUpgrade; } function _proxyStore() internal pure returns (ProxyStore storage store) { bytes32 s = _SLOT_PROXY_STORAGE; assembly { store.slot := s } } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.21; import { AbstractProxy } from "src/proxy/AbstractProxy.sol"; import { ProxyStorage } from "src/proxy/ProxyStorage.sol"; import { AddressUtil } from "src/libraries/AddressUtil.sol"; /** * @dev Modified Synthetix UUPS Proxy contract * https://github.com/Synthetixio/synthetix-v3/blob/main/utils/core-contracts/contracts/proxy/UUPSProxy.sol */ contract UUPSProxy is AbstractProxy, ProxyStorage { error ZeroAddress(); error NotAContract(address implementation); constructor(address firstImplementation) { if (firstImplementation == address(0)) { revert ZeroAddress(); } if (!AddressUtil.isContract(firstImplementation)) { revert NotAContract(firstImplementation); } _proxyStore().implementation = firstImplementation; } function _getImplementation() internal view virtual override returns (address) { return _proxyStore().implementation; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "shanghai", "remappings": [ "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@pythnetwork/entropy-sdk-solidity/=node_modules/@pythnetwork/entropy-sdk-solidity/", "@synthetixio/core-contracts/=node_modules/@synthetixio/core-contracts/", "@synthetixio/core-modules/=node_modules/@synthetixio/core-modules/", "@synthetixio/main/=node_modules/@synthetixio/main/", "@synthetixio/oracle-manager/=node_modules/@synthetixio/oracle-manager/", "@synthetixio/perps-market/=node_modules/@synthetixio/perps-market/", "@synthetixio/spot-market/=node_modules/@synthetixio/spot-market/", "ERC721A/=lib/ERC721A/contracts/", "cannon-std/=lib/cannon-std/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "wormhole-circle-integration/=lib/wormhole-circle-integration/evm/src/", "wormhole-solidity-sdk/=lib/wormhole-solidity-sdk/src/", "wormhole/=lib/wormhole-circle-integration/evm/src/" ], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"firstImplementation","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"NotAContract","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561000f575f80fd5b5060405161021038038061021083398101604081905261002e9161013a565b816001600160a01b0381166100565760405163d92e233d60e01b815260040160405180910390fd5b803b610084576040516322a2d07b60e21b81526001600160a01b038216600482015260240160405180910390fd5b7f5a648c35a2f5512218b4683cf10e03f5b7c9dc7346e1bf77d304ae97f60f592b80546001600160a01b0319166001600160a01b0392831617905581166100de5760405163d92e233d60e01b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b0319166001600160a01b038316179055505061016b565b80516001600160a01b0381168114610135575f80fd5b919050565b5f806040838503121561014b575f80fd5b6101548361011f565b91506101626020840161011f565b90509250929050565b6099806101775f395ff3fe608060405236601057600e6013565b005b600e5b5f60447f5a648c35a2f5512218b4683cf10e03f5b7c9dc7346e1bf77d304ae97f60f592b546001600160a01b031690565b9050365f80375f80365f845af43d5f803e808015605f573d5ff35b3d5ffdfea2646970667358221220811a8148ee9fdaadd2d3e891d5a92d2bad50e52e7a0e7d5139b3fda8ac13c63664736f6c6343000815003300000000000000000000000007ae0a6d2a687de98d62ff3b0220c476ebc950b40000000000000000000000003f768e3ac5ee75a2f39cfd7d72eb3a40bddb5ecb
Deployed Bytecode
0x608060405236601057600e6013565b005b600e5b5f60447f5a648c35a2f5512218b4683cf10e03f5b7c9dc7346e1bf77d304ae97f60f592b546001600160a01b031690565b9050365f80375f80365f845af43d5f803e808015605f573d5ff35b3d5ffdfea2646970667358221220811a8148ee9fdaadd2d3e891d5a92d2bad50e52e7a0e7d5139b3fda8ac13c63664736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000007ae0a6d2a687de98d62ff3b0220c476ebc950b40000000000000000000000003f768e3ac5ee75a2f39cfd7d72eb3a40bddb5ecb
-----Decoded View---------------
Arg [0] : firstImplementation (address): 0x07Ae0A6D2a687DE98D62Ff3B0220c476EBC950b4
Arg [1] : initialOwner (address): 0x3F768E3aC5eE75A2F39CFD7d72Eb3a40Bddb5ecB
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000007ae0a6d2a687de98d62ff3b0220c476ebc950b4
Arg [1] : 0000000000000000000000003f768e3ac5ee75a2f39cfd7d72eb3a40bddb5ecb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.