Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17932203 | 500 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xd3F8F338...A7a70cc45 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
SquidFeeCollectorProxy
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 99999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; import {Proxy} from "@axelar-network/axelar-gmp-sdk-solidity/contracts/upgradables/Proxy.sol"; contract SquidFeeCollectorProxy is Proxy { function contractId() internal pure override returns (bytes32 id) { id = keccak256("squid-fee-collector"); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // General interface for upgradable contracts interface IUpgradable { error NotOwner(); error InvalidOwner(); error InvalidCodeHash(); error InvalidImplementation(); error SetupFailed(); error NotProxy(); event Upgraded(address indexed newImplementation); event OwnershipTransferred(address indexed newOwner); // Get current owner function owner() external view returns (address); function contractId() external pure returns (bytes32); function upgrade( address newImplementation, bytes32 newImplementationCodeHash, bytes calldata params ) external; function setup(bytes calldata data) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { IUpgradable } from '../interfaces/IUpgradable.sol'; contract Proxy { error InvalidImplementation(); error SetupFailed(); error EtherNotAccepted(); error NotOwner(); error AlreadyInitialized(); // bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1) bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; // keccak256('owner') bytes32 internal constant _OWNER_SLOT = 0x02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0; constructor() { // solhint-disable-next-line no-inline-assembly assembly { sstore(_OWNER_SLOT, caller()) } } function init( address implementationAddress, address newOwner, bytes memory params ) external { address owner; // solhint-disable-next-line no-inline-assembly assembly { owner := sload(_OWNER_SLOT) } if (msg.sender != owner) revert NotOwner(); if (implementation() != address(0)) revert AlreadyInitialized(); if (IUpgradable(implementationAddress).contractId() != contractId()) revert InvalidImplementation(); // solhint-disable-next-line no-inline-assembly assembly { sstore(_IMPLEMENTATION_SLOT, implementationAddress) sstore(_OWNER_SLOT, newOwner) } // solhint-disable-next-line avoid-low-level-calls (bool success, ) = implementationAddress.delegatecall( //0x9ded06df is the setup selector. abi.encodeWithSelector(0x9ded06df, params) ); if (!success) revert SetupFailed(); } // solhint-disable-next-line no-empty-blocks function contractId() internal pure virtual returns (bytes32) {} function implementation() public view returns (address implementation_) { // solhint-disable-next-line no-inline-assembly assembly { implementation_ := sload(_IMPLEMENTATION_SLOT) } } // solhint-disable-next-line no-empty-blocks function setup(bytes calldata data) public {} // solhint-disable-next-line no-complex-fallback fallback() external payable { address implementaion_ = implementation(); // solhint-disable-next-line no-inline-assembly assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall(gas(), implementaion_, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } receive() external payable virtual { revert EtherNotAccepted(); } }
{ "optimizer": { "enabled": true, "runs": 99999 }, "viaIR": true, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"EtherNotAccepted","type":"error"},{"inputs":[],"name":"InvalidImplementation","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"SetupFailed","type":"error"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementationAddress","type":"address"},{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Deployed Bytecode
0x60806040526004361015610018575b366105b3576105f4565b6000803560e01c908163378dfd8e1461004b575080635c60da1b1461004657639ded06df0361000e57610266565b6101f5565b346100f85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f8576100826100fb565b61008a610123565b6044359067ffffffffffffffff82116100f457366023830112156100f457816004013592846100b8856101bb565b936100c66040519586610175565b85855236602487830101116100f057856100ed96602460209301838801378501015261037d565b80f35b5080fd5b8380fd5b80fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011e57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011e57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101b657604052565b610146565b67ffffffffffffffff81116101b657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3461011e5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461011e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011e5760043567ffffffffffffffff80821161011e573660238301121561011e57816004013590811161011e573691016024011161011e57005b9081602091031261011e575190565b6040513d6000823e3d90fd5b60208082528251818301819052939260005b858110610339575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b8181018301518482016040015282016102f9565b3d15610378573d9061035e826101bb565b9161036c6040519384610175565b82523d6000602084013e565b606090565b91909173ffffffffffffffffffffffffffffffffffffffff917f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c093838554163303610589577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc938085541661055f576020600491604051928380927f8291286c00000000000000000000000000000000000000000000000000000000825288165afa801561055a577faa5b287fe0e642fccbedbd5838dfbd85ba5294a1d91803c456dcbdaea79b6dd29160009161052c575b50036105025760009483869555556040516104c48161049860208201947f9ded06df000000000000000000000000000000000000000000000000000000008652602483016102e7565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610175565b51915af46104d061034d565b50156104d857565b60046040517f97905dfb000000000000000000000000000000000000000000000000000000008152fd5b60046040517f68155f9a000000000000000000000000000000000000000000000000000000008152fd5b61054d915060203d8111610553575b6105458183610175565b8101906102cc565b3861044f565b503d61053b565b6102db565b60046040517f0dc149f0000000000000000000000000000000000000000000000000000000008152fd5b60046040517f30cd7471000000000000000000000000000000000000000000000000000000008152fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e156105f0573d90f35b3d90fd5b60046040517f37334834000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212208a8faa01298467ffbac8666957d99f5f5a53d3ef00deae4b3a36738f3046c4fa64736f6c63430008140033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 26.33% | $1 | 1,354.2395 | $1,354.24 | |
ETH | 0.01% | $4,025.76 | 0.00016916 | $0.681 | |
BASE | 22.17% | $1 | 1,138.9375 | $1,140.08 | |
OP | 22.06% | $1 | 1,133.5815 | $1,134.72 | |
ARB | 17.85% | $1 | 917.0639 | $917.98 | |
GLMR | 6.77% | $1 | 348.052 | $348.4 | |
MANTLE | 4.57% | $1 | 234.8936 | $235.13 | |
BSC | 0.14% | $713.51 | 0.0102 | $7.29 | |
CELO | 0.08% | $1 | 4.1156 | $4.12 | |
POL | 0.02% | $0.741149 | 1.0605 | $0.7859 |
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.