ETH Price: $3,391.60 (+1.86%)

Contract

0x19cd4F3820E7BBed45762a30BFA37dFC6c9C145b
 

Multichain Info

Transaction Hash
Method
Block
From
To
Withdraw Fee210626022024-10-28 7:20:4762 days ago1730100047IN
0x19cd4F38...C6c9C145b
0 ETH0.000409397.33661691
Withdraw Fee192953672024-02-24 5:30:23309 days ago1708752623IN
0x19cd4F38...C6c9C145b
0 ETH0.0017837524.46821742
Withdraw Fee192953532024-02-24 5:27:35309 days ago1708752455IN
0x19cd4F38...C6c9C145b
0 ETH0.0013844526.52156074
Transfer Ownersh...179326492023-08-17 6:08:11500 days ago1692252491IN
0x19cd4F38...C6c9C145b
0 ETH0.0005349116.19980415

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
179322032023-08-17 4:38:11500 days ago1692247091  Contract Creation0 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
File 1 of 3 : SquidFeeCollectorProxy.sol
// 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");
    }
}

File 2 of 3 : IUpgradable.sol
// 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;
}

File 3 of 3 : Proxy.sol
// 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();
    }
}

Settings
{
  "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

Contract ABI

[{"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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.