FRAX Price: $0.90 (+10.60%)

Contract

0xDC3D8e1Abe590BCa428a8a2FC4CfDbD1AcF57Bd9

Overview

FRAX Balance | FXTL Balance

0 FRAX | 1,765,342 FXTL

FRAX Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Age:7D
Amount:Between 1-100
Reset Filter

Transaction Hash
Block
From
To

There are no matching entries

> 10 Internal Transactions and > 10 Token Transfers found.

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
316375262026-02-03 2:29:235 hrs ago1770085763
0xDC3D8e1A...1AcF57Bd9
0.43850268 FRAX
316375262026-02-03 2:29:235 hrs ago1770085763
0xDC3D8e1A...1AcF57Bd9
0.43850268 FRAX
316227932026-02-02 18:18:1714 hrs ago1770056297
0xDC3D8e1A...1AcF57Bd9
0.08168449 FRAX
316227932026-02-02 18:18:1714 hrs ago1770056297
0xDC3D8e1A...1AcF57Bd9
0.08168449 FRAX
316167462026-02-02 14:56:4317 hrs ago1770044203
0xDC3D8e1A...1AcF57Bd9
0.12485344 FRAX
316167462026-02-02 14:56:4317 hrs ago1770044203
0xDC3D8e1A...1AcF57Bd9
0.12485344 FRAX
316065902026-02-02 9:18:1123 hrs ago1770023891
0xDC3D8e1A...1AcF57Bd9
0.09457403 FRAX
316065902026-02-02 9:18:1123 hrs ago1770023891
0xDC3D8e1A...1AcF57Bd9
3.1 FRAX
316065902026-02-02 9:18:1123 hrs ago1770023891
0xDC3D8e1A...1AcF57Bd9
3.19457403 FRAX
316037712026-02-02 7:44:1324 hrs ago1770018253
0xDC3D8e1A...1AcF57Bd9
0.62948406 FRAX
316036562026-02-02 7:40:2324 hrs ago1770018023
0xDC3D8e1A...1AcF57Bd9
0.72851306 FRAX
316008712026-02-02 6:07:3326 hrs ago1770012453
0xDC3D8e1A...1AcF57Bd9
0.444892 FRAX
316008472026-02-02 6:06:4526 hrs ago1770012405
0xDC3D8e1A...1AcF57Bd9
0.54377047 FRAX
315984062026-02-02 4:45:2327 hrs ago1770007523
0xDC3D8e1A...1AcF57Bd9
0.09980329 FRAX
315953692026-02-02 3:04:0929 hrs ago1770001449
0xDC3D8e1A...1AcF57Bd9
0.09514873 FRAX
315882342026-02-01 23:06:1933 hrs ago1769987179
0xDC3D8e1A...1AcF57Bd9
0.09233668 FRAX
315833982026-02-01 20:25:0736 hrs ago1769977507
0xDC3D8e1A...1AcF57Bd9
0.11858125 FRAX
315832842026-02-01 20:21:1936 hrs ago1769977279
0xDC3D8e1A...1AcF57Bd9
0.11850085 FRAX
315832232026-02-01 20:19:1736 hrs ago1769977157
0xDC3D8e1A...1AcF57Bd9
0.12211304 FRAX
315832232026-02-01 20:19:1736 hrs ago1769977157
0xDC3D8e1A...1AcF57Bd9
0.12211304 FRAX
315774732026-02-01 17:07:3739 hrs ago1769965657
0xDC3D8e1A...1AcF57Bd9
0.12095982 FRAX
315774732026-02-01 17:07:3739 hrs ago1769965657
0xDC3D8e1A...1AcF57Bd9
0.12095982 FRAX
315713292026-02-01 13:42:4942 hrs ago1769953369
0xDC3D8e1A...1AcF57Bd9
0.11130827 FRAX
315713292026-02-01 13:42:4942 hrs ago1769953369
0xDC3D8e1A...1AcF57Bd9
0.11130827 FRAX
315666472026-02-01 11:06:4545 hrs ago1769944005
0xDC3D8e1A...1AcF57Bd9
0.11624476 FRAX
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SquidRouterProxy

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 99999 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

import {InitProxy} from "@axelar-network/axelar-gmp-sdk-solidity/contracts/upgradable/InitProxy.sol";

/// @notice Proxy contract for Squid router. Enable id checking for secure updates.
contract SquidRouterProxy is InitProxy {
    /// @notice Set implementation contract expected id.
    /// @return id Identifier used to match proxy and implementation.
    function contractId() internal pure override returns (bytes32 id) {
        id = keccak256("squid-router");
    }
}

File 2 of 6 : IContractIdentifier.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

// General interface for upgradable contracts
interface IContractIdentifier {
    /**
     * @notice Returns the contract ID. It can be used as a check during upgrades.
     * @dev Meant to be overridden in derived contracts.
     * @return bytes32 The contract ID
     */
    function contractId() external pure returns (bytes32);
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { IProxy } from './IProxy.sol';

// General interface for upgradable contracts
interface IInitProxy is IProxy {
    function init(
        address implementationAddress,
        address newOwner,
        bytes memory params
    ) external;
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

// General interface for upgradable contracts
interface IProxy {
    error InvalidOwner();
    error InvalidImplementation();
    error SetupFailed();
    error NotOwner();
    error AlreadyInitialized();

    function implementation() external view returns (address);

    function setup(bytes calldata setupParams) external;
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { IProxy } from '../interfaces/IProxy.sol';

/**
 * @title BaseProxy Contract
 * @dev This abstract contract implements a basic proxy that stores an implementation address. Fallback function
 * calls are delegated to the implementation. This contract is meant to be inherited by other proxy contracts.
 */
abstract contract BaseProxy is IProxy {
    // bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
    // keccak256('owner')
    bytes32 internal constant _OWNER_SLOT = 0x02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0;

    /**
     * @dev Returns the current implementation address.
     * @return implementation_ The address of the current implementation contract
     */
    function implementation() public view virtual returns (address implementation_) {
        assembly {
            implementation_ := sload(_IMPLEMENTATION_SLOT)
        }
    }

    /**
     * @dev Shadows the setup function of the implementation contract so it can't be called directly via the proxy.
     * @param params The setup parameters for the implementation contract.
     */
    function setup(bytes calldata params) external {}

    /**
     * @dev Returns the contract ID. It can be used as a check during upgrades. Meant to be implemented in derived contracts.
     * @return bytes32 The contract ID
     */
    function contractId() internal pure virtual returns (bytes32);

    /**
     * @dev Fallback function. Delegates the call to the current implementation contract.
     */
    fallback() external payable virtual {
        address implementation_ = implementation();
        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())
            }
        }
    }

    /**
     * @dev Payable fallback function. Can be overridden in derived contracts.
     */
    receive() external payable virtual {}
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import { IInitProxy } from '../interfaces/IInitProxy.sol';
import { IContractIdentifier } from '../interfaces/IContractIdentifier.sol';
import { BaseProxy } from './BaseProxy.sol';

/**
 * @title InitProxy Contract
 * @notice A proxy contract that can be initialized to use a specified implementation and owner. Inherits from BaseProxy
 * and implements the IInitProxy interface.
 * @dev This proxy is constructed empty and then later initialized with the implementation contract address, new owner address,
 * and any optional setup parameters.
 */
contract InitProxy is BaseProxy, IInitProxy {
    /**
     * @dev Initializes the contract and sets the caller as the owner of the contract.
     */
    constructor() {
        assembly {
            sstore(_OWNER_SLOT, caller())
        }
    }

    function contractId() internal pure virtual override returns (bytes32) {
        return bytes32(0);
    }

    /**
     * @notice Initializes the proxy contract with the specified implementation, new owner, and any optional setup parameters.
     * @param implementationAddress The address of the implementation contract
     * @param newOwner The address of the new proxy owner
     * @param params Optional parameters to be passed to the setup function of the implementation contract
     * @dev This function is only callable by the owner of the proxy. If the proxy has already been initialized, it will revert.
     * If the contract ID of the implementation is incorrect, it will also revert. It then stores the implementation address and
     * new owner address in the designated storage slots and calls the setup function on the implementation (if setup params exist).
     */
    function init(
        address implementationAddress,
        address newOwner,
        bytes memory params
    ) external {
        address owner;

        assembly {
            owner := sload(_OWNER_SLOT)
        }

        if (msg.sender != owner) revert NotOwner();
        if (implementation() != address(0)) revert AlreadyInitialized();

        bytes32 id = contractId();
        // Skipping the check if contractId() is not set by an inheriting proxy contract
        if (id != bytes32(0) && IContractIdentifier(implementationAddress).contractId() != id)
            revert InvalidImplementation();

        assembly {
            sstore(_IMPLEMENTATION_SLOT, implementationAddress)
            sstore(_OWNER_SLOT, newOwner)
        }

        if (params.length != 0) {
            (bool success, ) = implementationAddress.delegatecall(
                abi.encodeWithSelector(BaseProxy.setup.selector, params)
            );
            if (!success) revert SetupFailed();
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 99999
  },
  "viaIR": true,
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"InvalidImplementation","type":"error"},{"inputs":[],"name":"InvalidOwner","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":"params","type":"bytes"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080806040523461003957337f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c055610631908161003f8239f35b600080fdfe60806040526004361015610015575b366105ba57005b6000803560e01c908163378dfd8e14610048575080635c60da1b1461004357639ded06df0361000e57610263565b6101f2565b346100f55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f55761007f6100f8565b610087610120565b6044359067ffffffffffffffff82116100f157366023830112156100f157816004013592846100b5856101b8565b936100c36040519586610172565b85855236602487830101116100ed57856100ea96602460209301838801378501015261037a565b80f35b5080fd5b8380fd5b80fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011b57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011b57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101b357604052565b610143565b67ffffffffffffffff81116101b357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3461011b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011b5760207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461011b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011b5760043567ffffffffffffffff80821161011b573660238301121561011b57816004013590811161011b573691016024011161011b57005b9081602091031261011b575190565b6040513d6000823e3d90fd5b60208082528251818301819052939260005b858110610336575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b8181018301518482016040015282016102f6565b3d15610375573d9061035b826101b8565b916103696040519384610172565b82523d6000602084013e565b606090565b91907f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0805473ffffffffffffffffffffffffffffffffffffffff8091163303610590577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9080825416610566576020600491604051928380927f8291286c0000000000000000000000000000000000000000000000000000000082528a165afa8015610561577fc097d45e5a99ca772ab5ec2e5457c2e249760944b95b0b97cbb6b03ec55bae8491600091610532575b50036105085784905555805161045e575050565b60009182916040516104ca8161049e60208201947f9ded06df000000000000000000000000000000000000000000000000000000008652602483016102e4565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610172565b51915af46104d661034a565b50156104de57565b60046040517f97905dfb000000000000000000000000000000000000000000000000000000008152fd5b60046040517f68155f9a000000000000000000000000000000000000000000000000000000008152fd5b610554915060203d60201161055a575b61054c8183610172565b8101906102c9565b3861044a565b503d610542565b6102d8565b60046040517f0dc149f0000000000000000000000000000000000000000000000000000000008152fd5b60046040517f30cd7471000000000000000000000000000000000000000000000000000000008152fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e156105f7573d90f35b3d90fdfea2646970667358221220e2c51cc007895f9f695469b90301305471fa3d3751f735ed425805f0937e412964736f6c63430008170033

Deployed Bytecode

0x60806040526004361015610015575b366105ba57005b6000803560e01c908163378dfd8e14610048575080635c60da1b1461004357639ded06df0361000e57610263565b6101f2565b346100f55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100f55761007f6100f8565b610087610120565b6044359067ffffffffffffffff82116100f157366023830112156100f157816004013592846100b5856101b8565b936100c36040519586610172565b85855236602487830101116100ed57856100ea96602460209301838801378501015261037a565b80f35b5080fd5b8380fd5b80fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011b57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011b57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101b357604052565b610143565b67ffffffffffffffff81116101b357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3461011b5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011b5760207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461011b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011b5760043567ffffffffffffffff80821161011b573660238301121561011b57816004013590811161011b573691016024011161011b57005b9081602091031261011b575190565b6040513d6000823e3d90fd5b60208082528251818301819052939260005b858110610336575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b8181018301518482016040015282016102f6565b3d15610375573d9061035b826101b8565b916103696040519384610172565b82523d6000602084013e565b606090565b91907f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0805473ffffffffffffffffffffffffffffffffffffffff8091163303610590577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9080825416610566576020600491604051928380927f8291286c0000000000000000000000000000000000000000000000000000000082528a165afa8015610561577fc097d45e5a99ca772ab5ec2e5457c2e249760944b95b0b97cbb6b03ec55bae8491600091610532575b50036105085784905555805161045e575050565b60009182916040516104ca8161049e60208201947f9ded06df000000000000000000000000000000000000000000000000000000008652602483016102e4565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610172565b51915af46104d661034a565b50156104de57565b60046040517f97905dfb000000000000000000000000000000000000000000000000000000008152fd5b60046040517f68155f9a000000000000000000000000000000000000000000000000000000008152fd5b610554915060203d60201161055a575b61054c8183610172565b8101906102c9565b3861044a565b503d610542565b6102d8565b60046040517f0dc149f0000000000000000000000000000000000000000000000000000000008152fd5b60046040517f30cd7471000000000000000000000000000000000000000000000000000000008152fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e156105f7573d90f35b3d90fdfea2646970667358221220e2c51cc007895f9f695469b90301305471fa3d3751f735ed425805f0937e412964736f6c63430008170033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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  ]

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.