Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0xc1DCb196BA862B337Aa23eDA1Cb9503C0801b955
Balance 0 ETH
Nonce 7952
Code Size 1607 bytes
Proxy EIP-1967 Proxy Implementation: 0xd883C8bA...3d79
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

1607 bytes
0x6080604052600436106100385760003560e01c8063378dfd8e1461008f5780635c60da1b146100b15780639ded06df146100fc5761003f565b3661003f57005b60006100697f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90503660008037600080366000845af43d6000803e80801561008a573d6000f35b3d6000fd5b34801561009b57600080fd5b506100af6100aa366004610435565b61011b565b005b3480156100bd57600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546040516001600160a01b03909116815260200160405180910390f35b34801561010857600080fd5b506100af610117366004610507565b5050565b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c054336001600160a01b0382161461017f576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101a97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101e9576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fb8e1544725348a2fe538aa3da850e3b074cd75bac06629b2beb717eaee8dd707846001600160a01b0316638291286c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561024357600080fd5b505afa158015610257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027b9190610579565b146102b2576040517f68155f9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55827f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0556000846001600160a01b0316639ded06df8460405160240161031a91906105c2565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161036891906105f5565b600060405180830381855af49150503d80600081146103a3576040519150601f19603f3d011682016040523d82523d6000602084013e6103a8565b606091505b50509050806103e3576040517f97905dfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b80356001600160a01b038116811461040157600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561044a57600080fd5b610453846103ea565b9250610461602085016103ea565b9150604084013567ffffffffffffffff8082111561047e57600080fd5b818601915086601f83011261049257600080fd5b8135818111156104a4576104a4610406565b604051601f8201601f19908116603f011681019083821181831017156104cc576104cc610406565b816040528281528960208487010111156104e557600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806020838503121561051a57600080fd5b823567ffffffffffffffff8082111561053257600080fd5b818501915085601f83011261054657600080fd5b81358181111561055557600080fd5b86602082850101111561056757600080fd5b60209290920196919550909350505050565b60006020828403121561058b57600080fd5b5051919050565b60005b838110156105ad578181015183820152602001610595565b838111156105bc576000848401525b50505050565b60208152600082518060208401526105e1816040850160208701610592565b601f01601f19169190910160400192915050565b60008251610607818460208701610592565b919091019291505056fea264697066735822122084cc8a7ccd85a7b44c7440c5a3f186e664ca625d292613d5b76ebc314035fd8c64736f6c63430008090033

Verified Source Code Full Match

Compiler: v0.8.9+commit.e5eed63a EVM: london Optimization: Yes (1000 runs)
Proxy.sol 89 lines
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

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();
    }
}
IUpgradable.sol 31 lines
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

// 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 implementation() external view returns (address);

    function upgrade(
        address newImplementation,
        bytes32 newImplementationCodeHash,
        bytes calldata params
    ) external;

    function setup(bytes calldata data) external;
}
AxelarDepositServiceProxy.sol 15 lines
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

import { Proxy } from '../util/Proxy.sol';

contract AxelarDepositServiceProxy is Proxy {
    function contractId() internal pure override returns (bytes32) {
        return keccak256('axelar-deposit-service');
    }

    // @dev This function is for receiving refunds when refundAddress was 0x0
    // solhint-disable-next-line no-empty-blocks
    receive() external payable override {}
}

Read Contract

implementation 0x5c60da1b → address

Write Contract 2 functions

These functions modify contract state and require a wallet transaction to execute.

init 0x378dfd8e
address implementationAddress
address newOwner
bytes params
setup 0x9ded06df
bytes data

Recent Transactions

No transactions found for this address