FTM Testnet

Contract

0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0.605392694693221276 FTM

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Deploy Interchai...407587932025-02-01 16:30:157 days ago1738427415IN
0x83a93500...7A0670D66
0 FTM0.000934231.025003
Multicall404379702025-01-30 11:59:189 days ago1738238358IN
0x83a93500...7A0670D66
5.33339278 FTM0.001030851.025006
Deploy Remote In...351197962024-12-25 6:23:3845 days ago1735107818IN
0x83a93500...7A0670D66
0.1637662 FTM0.000539551.025001
Deploy Remote In...351131182024-12-25 5:17:0046 days ago1735103820IN
0x83a93500...7A0670D66
0.1682817 FTM0.000539551.025004
Deploy Remote In...351126112024-12-25 5:12:1746 days ago1735103537IN
0x83a93500...7A0670D66
0.17526277 FTM0.000539551.025006
Deploy Remote In...351125302024-12-25 5:11:3046 days ago1735103490IN
0x83a93500...7A0670D66
0.16348853 FTM0.000539471.025008
Deploy Remote In...351121752024-12-25 5:07:4646 days ago1735103266IN
0x83a93500...7A0670D66
0.16344681 FTM0.000539461.025003
Deploy Remote In...351120362024-12-25 5:06:2046 days ago1735103180IN
0x83a93500...7A0670D66
0.16344681 FTM0.000539461.025003
Deploy Remote In...350273302024-12-24 15:10:2446 days ago1735053024IN
0x83a93500...7A0670D66
0.1638704 FTM0.000539551.025001
Deploy Interchai...350082712024-12-24 12:07:4246 days ago1735042062IN
0x83a93500...7A0670D66
0 FTM0.000934221.025001
Deploy Interchai...349730082024-12-24 6:20:2346 days ago1735021223IN
0x83a93500...7A0670D66
0 FTM0.000934261.025004
Deploy Interchai...349723912024-12-24 6:14:0246 days ago1735020842IN
0x83a93500...7A0670D66
0 FTM0.000934261.025003
Deploy Interchai...349707622024-12-24 5:57:5146 days ago1735019871IN
0x83a93500...7A0670D66
0 FTM0.000934231.025003
Deploy Remote In...348349322024-12-23 7:49:3147 days ago1734940171IN
0x83a93500...7A0670D66
1.17440982 FTM0.006314950
Deploy Remote In...348318252024-12-23 7:20:0547 days ago1734938405IN
0x83a93500...7A0670D66
0.1663698 FTM0.006319850
Deploy Interchai...348268702024-12-23 6:30:3247 days ago1734935432IN
0x83a93500...7A0670D66
0 FTM0.000934261.025048
Deploy Interchai...344185442024-12-20 12:04:4750 days ago1734696287IN
0x83a93500...7A0670D66
0 FTM0.000934231.025009
Deploy Interchai...344062722024-12-20 10:07:3750 days ago1734689257IN
0x83a93500...7A0670D66
0 FTM0.000934261.025037
Deploy Remote In...344016442024-12-20 9:22:3950 days ago1734686559IN
0x83a93500...7A0670D66
0.00004292 FTM0.000847071.025048
Deploy Remote In...344014142024-12-20 9:20:3050 days ago1734686430IN
0x83a93500...7A0670D66
0.00004314 FTM0.000642031.025001
Deploy Interchai...342611192024-12-19 10:55:1051 days ago1734605710IN
0x83a93500...7A0670D66
0 FTM0.000934221.025001
Deploy Remote In...342354262024-12-19 6:52:2551 days ago1734591145IN
0x83a93500...7A0670D66
0.93348257 FTM0.000078311.025004
Deploy Interchai...342309362024-12-19 6:08:5651 days ago1734588536IN
0x83a93500...7A0670D66
0 FTM0.000934291.025068
Deploy Interchai...341757732024-12-18 21:07:5452 days ago1734556074IN
0x83a93500...7A0670D66
0 FTM0.003286262.5
Deploy Interchai...341754322024-12-18 21:05:0152 days ago1734555901IN
0x83a93500...7A0670D66
0 FTM0.003286232.5
View all transactions

Latest 6 internal transactions

Parent Transaction Hash Block From To
344000782024-12-20 9:07:5350 days ago1734685673
0x83a93500...7A0670D66
0.6 FTM
343989952024-12-20 8:57:4850 days ago1734685068
0x83a93500...7A0670D66
0.01 FTM
343985572024-12-20 8:53:4650 days ago1734684826
0x83a93500...7A0670D66
0.01 FTM
343981882024-12-20 8:50:2650 days ago1734684626
0x83a93500...7A0670D66
0.01 FTM
237971182024-01-16 23:54:49389 days ago1705449289
0x83a93500...7A0670D66
1 FTM
229463622023-12-07 11:34:41429 days ago1701948881  Contract Creation0 FTM
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xE2980DF8...938d981A4
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
InterchainProxy

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 1000 runs

Other Settings:
london EvmVersion, MIT license
/**
 *Submitted for verification at testnet.ftmscan.com on 2023-12-28
*/

// Source: contracts/proxies/InterchainProxy.sol

pragma solidity 0.8.21;

// SPDX-License-Identifier: MIT

// File @axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/[email protected]

// 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;
}

// File @axelar-network/axelar-gmp-sdk-solidity/contracts/upgradable/[email protected]

/**
 * @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 {}
}

// File @axelar-network/axelar-gmp-sdk-solidity/contracts/interfaces/[email protected]

// 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);
}

// File @axelar-network/axelar-gmp-sdk-solidity/contracts/upgradable/[email protected]

/**
 * @title Proxy Contract
 * @notice A proxy contract that delegates calls to a designated implementation contract. Inherits from BaseProxy.
 * @dev The constructor takes in the address of the implementation contract, the owner address, and any optional setup
 * parameters for the implementation contract.
 */
contract Proxy is BaseProxy {
    /**
     * @notice Constructs the proxy contract with the implementation address, owner address, and optional setup parameters.
     * @param implementationAddress The address of the implementation contract
     * @param owner The owner address
     * @param setupParams Optional parameters to setup the implementation contract
     * @dev The constructor verifies that the owner address is not the zero address and that the contract ID of the implementation is valid.
     * It then stores the implementation address and owner address in their designated storage slots and calls the setup function on the
     * implementation (if setup params exist).
     */
    constructor(address implementationAddress, address owner, bytes memory setupParams) {
        if (owner == address(0)) revert InvalidOwner();

        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, owner)
        }

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

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

// File contracts/proxies/InterchainProxy.sol

/**
 * @title InterchainProxy
 * @notice This contract is a proxy for interchainTokenService and interchainTokenFactory.
 * @dev This contract implements Proxy.
 */
contract InterchainProxy is Proxy {
    constructor(address implementationAddress, address owner, bytes memory setupParams) Proxy(implementationAddress, owner, setupParams) {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"implementationAddress","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"setupParams","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"bytes","name":"params","type":"bytes"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061002d5760003560e01c80635c60da1b146100865780639ded06df146100de57610034565b3661003457005b600061005e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90503660008037600080366000845af43d6000803e80801561007f573d6000f35b3d6000fd5b005b34801561009257600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ea57600080fd5b506100846100f93660046100fd565b5050565b6000806020838503121561011057600080fd5b823567ffffffffffffffff8082111561012857600080fd5b818501915085601f83011261013c57600080fd5b81358181111561014b57600080fd5b86602082850101111561015d57600080fd5b6020929092019691955090935050505056fea264697066735822122083cc979c34f7a71d3cd53a66104a3b2712b956b8820d9a7b6ff618995b3afcba64736f6c63430008150033

Deployed Bytecode Sourcemap

5610:179:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2311:23;2337:16;1585:20;1579:27;;1445:179;2337:16;2311:42;;2407:14;2404:1;2401;2388:34;2511:1;2508;2492:14;2489:1;2472:15;2465:5;2452:61;2548:16;2545:1;2542;2527:38;2588:6;2608:68;;;;2727:16;2724:1;2717:27;2608:68;2644:16;2641:1;2634:27;2581:178;;1445:179;;;;;;;;;;-1:-1:-1;1585:20:0;1579:27;1445:179;;190:42:1;178:55;;;160:74;;148:2;133:18;1445:179:0;;;;;;;1843:49;;;;;;;;;;-1:-1:-1;1843:49:0;;;;;:::i;:::-;;;;245:591:1;315:6;323;376:2;364:9;355:7;351:23;347:32;344:52;;;392:1;389;382:12;344:52;432:9;419:23;461:18;502:2;494:6;491:14;488:34;;;518:1;515;508:12;488:34;556:6;545:9;541:22;531:32;;601:7;594:4;590:2;586:13;582:27;572:55;;623:1;620;613:12;572:55;663:2;650:16;689:2;681:6;678:14;675:34;;;705:1;702;695:12;675:34;750:7;745:2;736:6;732:2;728:15;724:24;721:37;718:57;;;771:1;768;761:12;718:57;802:2;794:11;;;;;824:6;;-1:-1:-1;245:591:1;;-1:-1:-1;;;;245:591:1:o

Swarm Source

ipfs://83cc979c34f7a71d3cd53a66104a3b2712b956b8820d9a7b6ff618995b3afcba

Block Transaction 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
[ 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.