Sonic Blaze Testnet

Contract

0x43D72ba2F690d8041590AE2555C3742b2E88983b

Overview

S Balance

Sonic Blaze LogoSonic Blaze LogoSonic Blaze Logo0 S

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
259299952025-03-12 10:53:3312 hrs ago1741776813
0x43D72ba2...b2E88983b
0 S
259299952025-03-12 10:53:3312 hrs ago1741776813
0x43D72ba2...b2E88983b
0 S
259297732025-03-12 10:51:4012 hrs ago1741776700
0x43D72ba2...b2E88983b
0 S
259297732025-03-12 10:51:4012 hrs ago1741776700
0x43D72ba2...b2E88983b
0 S
259296392025-03-12 10:50:3712 hrs ago1741776637
0x43D72ba2...b2E88983b
0 S
259296392025-03-12 10:50:3712 hrs ago1741776637
0x43D72ba2...b2E88983b
0 S
259295332025-03-12 10:49:4312 hrs ago1741776583
0x43D72ba2...b2E88983b
0 S
259295332025-03-12 10:49:4312 hrs ago1741776583
0x43D72ba2...b2E88983b
0 S
259294302025-03-12 10:48:5412 hrs ago1741776534
0x43D72ba2...b2E88983b
0 S
259294302025-03-12 10:48:5412 hrs ago1741776534
0x43D72ba2...b2E88983b
0 S
259292622025-03-12 10:47:3512 hrs ago1741776455
0x43D72ba2...b2E88983b
0 S
259292622025-03-12 10:47:3512 hrs ago1741776455
0x43D72ba2...b2E88983b
0 S
259291602025-03-12 10:46:4912 hrs ago1741776409
0x43D72ba2...b2E88983b
0 S
259291602025-03-12 10:46:4912 hrs ago1741776409
0x43D72ba2...b2E88983b
0 S
258885782025-03-12 5:09:0418 hrs ago1741756144
0x43D72ba2...b2E88983b
0 S
258885782025-03-12 5:09:0418 hrs ago1741756144
0x43D72ba2...b2E88983b
0 S
258883362025-03-12 5:07:0218 hrs ago1741756022
0x43D72ba2...b2E88983b
0 S
258883362025-03-12 5:07:0218 hrs ago1741756022
0x43D72ba2...b2E88983b
0 S
257691922025-03-11 12:46:1634 hrs ago1741697176
0x43D72ba2...b2E88983b
0 S
257691922025-03-11 12:46:1634 hrs ago1741697176
0x43D72ba2...b2E88983b
0 S
257678142025-03-11 12:34:5034 hrs ago1741696490
0x43D72ba2...b2E88983b
0 S
257678142025-03-11 12:34:5034 hrs ago1741696490
0x43D72ba2...b2E88983b
0 S
257672122025-03-11 12:29:5434 hrs ago1741696194
0x43D72ba2...b2E88983b
0 S
257672122025-03-11 12:29:5434 hrs ago1741696194
0x43D72ba2...b2E88983b
0 S
257663372025-03-11 12:22:3835 hrs ago1741695758
0x43D72ba2...b2E88983b
0 S
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Wallet

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 4 : Wallet.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import {IConnection} from "../connection/IConnection.sol";
import {IWalletFactory} from "./IWalletFactory.sol";
import {IWallet} from "./IWallet.sol";

/// @title Wallet Contract
/// @notice A wallet contract that can execute arbitrary contract calls based on verified messages.
/// @dev This contract interacts with a factory and connection for verification and address mapping.
contract Wallet is IWallet {
    /// @notice Factory contract for wallet creation and management.
    IWalletFactory public immutable factory;

    /// @notice Connection contract for cross-chain message verification.
    IConnection public immutable connection;

    /// @notice The address of the Asset Manager allowed to invoke calls on behalf of a user on token transfers.
    address public immutable assetManager;
    /// @notice The address of the XToken Manager allowed to invoke calls on behalf of a user on token transfers.
    address public immutable xTokenManager;

    event CallStored(bytes32 indexed callHash);

    mapping(bytes32 => bool) public storedCalls;

    /// @notice Initializes the wallet contract.
    /// @param _factory The address of the wallet factory contract.
    /// @param _connection The address of the connection contract for message verification.
    /// @param _assetManager The address of the asset manager contract.
    constructor(IWalletFactory _factory, IConnection _connection, address _assetManager, address _xTokenManager) {
        require(address(_factory) != address(0), "Invalid factory address");
        require(address(_connection) != address(0), "Invalid connection address");
        require(_assetManager != address(0), "Invalid asset manager address");
        require(_xTokenManager != address(0), "Invalid xToken manager address");

        factory = _factory;
        connection = _connection;
        assetManager = _assetManager;
        xTokenManager = _xTokenManager;
    }

    /// @notice Receives and processes a verified cross-chain message.
    /// @param srcChainId The chain ID of the originating chain.
    /// @param srcAddress The address of the sender on the originating chain.
    /// @param _connSn The unique identifier for the message.
    /// @param _payload The encoded payload containing call data.
    /// @param signatures An array of signatures for verifying the message.
    function recvMessage(
        uint256 srcChainId,
        bytes calldata srcAddress,
        uint256 _connSn,
        bytes memory _payload,
        bytes[] calldata signatures
    ) external override {
        // Verify the message using the connection contract
        connection.verifyMessage(srcChainId, srcAddress, _connSn, _payload, signatures);

        // Ensure the caller address matches the expected wallet address from the factory
        require(
            address(this) == factory.getWallet(srcChainId, srcAddress),
            "Mismatched address and caller"
        );

        // Execute the calls described in the payload
        try this.executeCalls(_payload) {} catch (bytes memory) {}
    }

    /// @notice Allows the asset manager to execute calls on behalf of the wallet.
    /// @param data The encoded data containing an array of ContractCall structs.
    function assetManagerHook(bytes memory data) external override {
        // Restrict access to the asset manager
        require(msg.sender == assetManager, "Only AssetManager is allowed");

        // Execute the calls described in the data
        this.executeCalls(data);
    }

    /// @notice Allows the xToken manager to execute calls on behalf of the wallet.
    /// @param data The encoded data containing an array of ContractCall structs.
    function xTokenManagerHook(bytes memory data) external override {
        // Restrict access to the asset manager
        require(msg.sender == xTokenManager, "Only XTokenManager is allowed");

        // Execute the calls described in the data
        this.executeCalls(data);
    }

    /// @notice Executes multiple contract calls described in the input data.
    /// @dev Decodes the input data into an array of ContractCall structs and executes them sequentially.
    /// @param data The encoded data containing an array of ContractCall structs.
    function executeCalls(bytes memory data) external {
        require(msg.sender == address(this), "Only this contract can execute calls");
        if (data.length == 32) {
            bytes32 callHash = bytesToBytes32(data);
            storedCalls[callHash] = true;
            emit CallStored(callHash);
            return;
        }

        // Decode the input data into an array of ContractCall structs
        ContractCall[] memory contractCalls = abi.decode(data, (ContractCall[]));

        // Iterate over the array and execute each call
        for (uint256 i = 0; i < contractCalls.length; i++) {
            executeInner(contractCalls[i].addr, contractCalls[i].value, contractCalls[i].data);
        }
    }


    function executeStored(bytes memory calls) external {
        require(storedCalls[keccak256(calls)], "Calls do not match stored calls");
        try this.executeCalls(calls) {} catch (bytes memory) {}
        delete storedCalls[keccak256(calls)];
    }

    /// @notice Performs a single arbitrary call to a specified target.
    /// @param target The address of the contract or account to call.
    /// @param value The amount of Ether to send with the call.
    /// @param data The calldata to send with the call.
    function executeInner(address target, uint256 value, bytes memory data) internal {
        // Perform the call and check the result
        (bool success, ) = target.call{value: value}(data);
        require(success, "External call failed");
    }

    /// @notice Simulates recvMessage without signature verification (view function)
    /// @dev This function will always revert at the end to prevent actual state changes
    /// @param srcChainId The chain ID of the originating chain
    /// @param srcAddress The address of the sender on the originating chain
    /// @param _payload The encoded payload containing call data
    function simulateRecvMessage(
        uint256 srcChainId,
        bytes calldata srcAddress,
        bytes memory _payload
    ) external {
        // Ensure the caller address matches the expected wallet address from the factory
        require(
            address(this) == factory.getWallet(srcChainId, srcAddress),
            "Mismatched address and caller"
        );

        // Execute the calls described in the payload
        this.executeCalls(_payload);

        // Always revert to prevent state changes
        revert("Simulation completed");
    }

    function bytesToBytes32(bytes memory source) private pure returns (bytes32 result) {
        if (source.length == 0) {
            return 0x0;
        }
        assembly {
            result := mload(add(source, 32))
        }
    }

}

File 2 of 4 : IConnection.sol
// SPDX-License-Identifier: Apache-2.0
pragma solidity >=0.8.0;

interface IConnection {
    function sendMessage(
        uint256 dstChainId,
        bytes memory dstAddress,
        bytes memory payload
    ) external payable;

    function verifyMessage(
        uint256 srcChainId,
        bytes calldata srcAddress,
        uint256 connSn,
        bytes memory payload,
        bytes[] calldata signatures
    ) external;
}

File 3 of 4 : IWalletFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IWalletFactory {
    // Public state variables
    function implementation() external view returns (address);
    function owner() external view returns (address);

    // Events
    event Deployed(address indexed deployedAddress, bytes32 indexed salt);

    // Function signatures
    /// @notice Updates the implementation contract address
    /// @param _newImplementation The address of the new implementation contract
    function updateImplementation(address _newImplementation) external;

    /// @notice Transfers ownership to a new address
    /// @param _newOwner The address of the new owner
    function transferOwnership(address _newOwner) external;

    /// @notice Derive the address of a contract deployed with CREATE3
    /// @param chainId chainId of address
    /// @param user User's address on the specified chain
    /// @return computedAddress The derived contract address
    function getWallet(uint256 chainId, bytes calldata user) external returns (address computedAddress);

    /// @notice Deploy a contract deterministically with CREATE3
    /// @param salt Unique salt to differentiate deployments
    /// @return deployedAddress Address of the deployed contract
    function deploy(bytes32 salt) external returns (address deployedAddress);

    /// @notice Derive the address of a contract deployed with CREATE3
    /// @param chainId chainId of address
    /// @param user User's address on the specified chain
    /// @return computedAddress The derived contract address
    function getDeployedAddress(uint256 chainId, bytes calldata user) external view returns (address computedAddress);
}

File 4 of 4 : IWallet.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/// @title IWallet Interface
/// @notice Interface for the Wallet contract.
interface IWallet {
    /// @notice Represents a contract call to be executed.
    struct ContractCall {
        address addr;     // Target address of the call
        uint256 value;    // Ether value to send
        bytes data;       // Calldata for the call
    }

    /// @notice Receives and processes a verified cross-chain message.
    /// @param srcChainId The chain ID of the originating chain.
    /// @param srcAddress The address of the sender on the originating chain.
    /// @param _connSn The unique identifier for the message.
    /// @param _payload The encoded payload containing call data.
    /// @param signatures An array of signatures for verifying the message.
    function recvMessage(
        uint256 srcChainId,
        bytes calldata srcAddress,
        uint256 _connSn,
        bytes memory _payload,
        bytes[] calldata signatures
    ) external;

    /// @notice Allows the asset manager to execute calls on behalf of the wallet.
    /// @param data The encoded data containing an array of ContractCall structs.
    function assetManagerHook(bytes memory data) external;

    /// @notice Allows the asset manager to execute calls on behalf of the wallet.
    /// @param data The encoded data containing an array of ContractCall structs.
    function xTokenManagerHook(bytes memory data) external;
}

Settings
{
  "remappings": [
    "@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
    "@money-market/=contracts/moneyMarket/src/",
    "@money-market-scripts/=contracts/moneyMarket/scripts/",
    "@money-market-tests/=contracts/moneyMarket/tests/",
    "@contracts/=contracts/",
    "solidity-utils/=lib/solidity-utils/src/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/",
    "pyth-sdk-solidity/=lib/pyth-sdk-solidity/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false,
  "libraries": {}
}

Contract ABI

API
[{"inputs":[{"internalType":"contract IWalletFactory","name":"_factory","type":"address"},{"internalType":"contract IConnection","name":"_connection","type":"address"},{"internalType":"address","name":"_assetManager","type":"address"},{"internalType":"address","name":"_xTokenManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"callHash","type":"bytes32"}],"name":"CallStored","type":"event"},{"inputs":[],"name":"assetManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"assetManagerHook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"connection","outputs":[{"internalType":"contract IConnection","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCalls","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"calls","type":"bytes"}],"name":"executeStored","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IWalletFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"srcChainId","type":"uint256"},{"internalType":"bytes","name":"srcAddress","type":"bytes"},{"internalType":"uint256","name":"_connSn","type":"uint256"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"recvMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"srcChainId","type":"uint256"},{"internalType":"bytes","name":"srcAddress","type":"bytes"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"simulateRecvMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"storedCalls","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xTokenManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"xTokenManagerHook","outputs":[],"stateMutability":"nonpayable","type":"function"}]

610100604052348015610010575f5ffd5b5060405161126d38038061126d83398101604081905261002f916101c5565b6001600160a01b03841661008a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420666163746f7279206164647265737300000000000000000060448201526064015b60405180910390fd5b6001600160a01b0383166100e05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420636f6e6e656374696f6e20616464726573730000000000006044820152606401610081565b6001600160a01b0382166101365760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206173736574206d616e6167657220616464726573730000006044820152606401610081565b6001600160a01b03811661018c5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642078546f6b656e206d616e61676572206164647265737300006044820152606401610081565b6001600160a01b0393841660805291831660a052821660c0521660e052610221565b6001600160a01b03811681146101c2575f5ffd5b50565b5f5f5f5f608085870312156101d8575f5ffd5b84516101e3816101ae565b60208601519094506101f4816101ae565b6040860151909350610205816101ae565b6060860151909250610216816101ae565b939692955090935050565b60805160a05160c05160e051610ff66102775f395f818161019a015261051c01525f818161012101526108ad01525f81816101e7015261032a01525f8181610173015281816103ad01526105f30152610ff65ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063b889587e1161006e578063b889587e1461015b578063c45a01551461016e578063d9e119af14610195578063da99e64e146101bc578063dc53c056146101cf578063fd19016c146101e2575f5ffd5b80630bca7dd3146100aa5780634b2b20e7146100bf5780635b01e546146100d2578063938fe7721461010957806394217ad11461011c575b5f5ffd5b6100bd6100b8366004610abd565b610209565b005b6100bd6100cd366004610b3a565b610313565b6100f46100e0366004610c14565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100bd610117366004610abd565b610511565b6101437f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610100565b6100bd610169366004610c2b565b6105dc565b6101437f000000000000000000000000000000000000000000000000000000000000000081565b6101437f000000000000000000000000000000000000000000000000000000000000000081565b6100bd6101ca366004610abd565b61075d565b6100bd6101dd366004610abd565b6108a2565b6101437f000000000000000000000000000000000000000000000000000000000000000081565b80516020808301919091205f90815290819052604090205460ff166102755760405162461bcd60e51b815260206004820152601f60248201527f43616c6c7320646f206e6f74206d617463682073746f7265642063616c6c730060448201526064015b60405180910390fd5b604051636d4cf32760e11b8152309063da99e64e90610298908490600401610cca565b5f604051808303815f87803b1580156102af575f5ffd5b505af19250505080156102c0575060015b6102f5573d8080156102ed576040519150601f19603f3d011682016040523d82523d5f602084013e6102f2565b606091505b50505b80516020918201205f9081529081905260409020805460ff19169055565b60405163372ff73f60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dcbfdcfc9061036b908a908a908a908a908a908a908a90600401610d0b565b5f604051808303815f87803b158015610382575f5ffd5b505af1158015610394573d5f5f3e3d5ffd5b50506040516305d5de2b60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632eaef15891506103e8908a908a908a90600401610de2565b6020604051808303815f875af1158015610404573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104289190610e1f565b6001600160a01b0316306001600160a01b0316146104885760405162461bcd60e51b815260206004820152601d60248201527f4d69736d617463686564206164647265737320616e642063616c6c6572000000604482015260640161026c565b604051636d4cf32760e11b8152309063da99e64e906104ab908690600401610cca565b5f604051808303815f87803b1580156104c2575f5ffd5b505af19250505080156104d3575060015b610508573d808015610500576040519150601f19603f3d011682016040523d82523d5f602084013e610505565b606091505b50505b50505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105895760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792058546f6b656e4d616e6167657220697320616c6c6f776564000000604482015260640161026c565b604051636d4cf32760e11b8152309063da99e64e906105ac908490600401610cca565b5f604051808303815f87803b1580156105c3575f5ffd5b505af11580156105d5573d5f5f3e3d5ffd5b5050505050565b6040516305d5de2b60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632eaef1589061062c90879087908790600401610de2565b6020604051808303815f875af1158015610648573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066c9190610e1f565b6001600160a01b0316306001600160a01b0316146106cc5760405162461bcd60e51b815260206004820152601d60248201527f4d69736d617463686564206164647265737320616e642063616c6c6572000000604482015260640161026c565b604051636d4cf32760e11b8152309063da99e64e906106ef908490600401610cca565b5f604051808303815f87803b158015610706575f5ffd5b505af1158015610718573d5f5f3e3d5ffd5b505060405162461bcd60e51b815260206004820152601460248201527314da5b5d5b185d1a5bdb8818dbdb5c1b195d195960621b6044820152606401915061026c9050565b3330146107b85760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79207468697320636f6e74726163742063616e20657865637574652063604482015263616c6c7360e01b606482015260840161026c565b8051602003610812575f6107cb8261091a565b5f81815260208190526040808220805460ff191660011790555191925082917f95c5bdccc9fd3d9223140b7b7313807f52556b5729cf273201d4166dec7b4d2b9190a25050565b5f818060200190518101906108279190610e38565b90505f5b815181101561089d5761089582828151811061084957610849610f96565b60200260200101515f015183838151811061086657610866610f96565b60200260200101516020015184848151811061088457610884610f96565b602002602001015160400151610932565b60010161082b565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105895760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c792041737365744d616e6167657220697320616c6c6f77656400000000604482015260640161026c565b5f81515f0361092a57505f919050565b506020015190565b5f836001600160a01b0316838360405161094c9190610faa565b5f6040518083038185875af1925050503d805f8114610986576040519150601f19603f3d011682016040523d82523d5f602084013e61098b565b606091505b50509050806109d35760405162461bcd60e51b8152602060048201526014602482015273115e1d195c9b985b0818d85b1b0819985a5b195960621b604482015260640161026c565b50505050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610a0f57610a0f6109d9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610a3d57610a3d6109d9565b604052919050565b5f6001600160401b03821115610a5d57610a5d6109d9565b50601f01601f191660200190565b5f82601f830112610a7a575f5ffd5b8135610a8d610a8882610a45565b610a15565b818152846020838601011115610aa1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610acd575f5ffd5b81356001600160401b03811115610ae2575f5ffd5b610aee84828501610a6b565b949350505050565b5f5f83601f840112610b06575f5ffd5b5081356001600160401b03811115610b1c575f5ffd5b602083019150836020828501011115610b33575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215610b50575f5ffd5b8735965060208801356001600160401b03811115610b6c575f5ffd5b610b788a828b01610af6565b9097509550506040880135935060608801356001600160401b03811115610b9d575f5ffd5b610ba98a828b01610a6b565b93505060808801356001600160401b03811115610bc4575f5ffd5b8801601f81018a13610bd4575f5ffd5b80356001600160401b03811115610be9575f5ffd5b8a60208260051b8401011115610bfd575f5ffd5b602082019350809250505092959891949750929550565b5f60208284031215610c24575f5ffd5b5035919050565b5f5f5f5f60608587031215610c3e575f5ffd5b8435935060208501356001600160401b03811115610c5a575f5ffd5b610c6687828801610af6565b90945092505060408501356001600160401b03811115610c84575f5ffd5b610c9087828801610a6b565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cdc6020830184610c9c565b9392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b87815260a060208201525f610d2460a08301888a610ce3565b8660408401528281036060840152610d3c8187610c9c565b83810360808501528481529050602080820190600586901b830101865f36829003601e19015b88821015610dcf57858403601f190185528235818112610d80575f5ffd5b8a016020810190356001600160401b03811115610d9b575f5ffd5b803603821315610da9575f5ffd5b610db4868284610ce3565b95505050602083019250602085019450600182019150610d62565b50919d9c50505050505050505050505050565b838152604060208201525f610dfb604083018486610ce3565b95945050505050565b80516001600160a01b0381168114610e1a575f5ffd5b919050565b5f60208284031215610e2f575f5ffd5b610cdc82610e04565b5f60208284031215610e48575f5ffd5b81516001600160401b03811115610e5d575f5ffd5b8201601f81018413610e6d575f5ffd5b80516001600160401b03811115610e8657610e866109d9565b8060051b610e9660208201610a15565b91825260208184018101929081019087841115610eb1575f5ffd5b6020850192505b83831015610f8b5782516001600160401b03811115610ed5575f5ffd5b85016060818a03601f19011215610eea575f5ffd5b610ef26109ed565b610efe60208301610e04565b81526040820151602082015260608201516001600160401b03811115610f22575f5ffd5b60208184010192505089601f830112610f39575f5ffd5b8151610f47610a8882610a45565b8181528b6020838601011115610f5b575f5ffd5b8160208501602083015e5f6020838301015280604084015250508084525050602082019150602083019250610eb8565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fea264697066735822122019adb94ef7212dca01bfc3ba5c24c78446373eca47810192e4cc82df8bf7746364736f6c634300081c0033000000000000000000000000d5cece180a52e0353654b3337c985e8d5e0563440000000000000000000000006c9b999d33c612ccd8721b0e349adcae151fcbbf000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa3000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa3

Deployed Bytecode

0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063b889587e1161006e578063b889587e1461015b578063c45a01551461016e578063d9e119af14610195578063da99e64e146101bc578063dc53c056146101cf578063fd19016c146101e2575f5ffd5b80630bca7dd3146100aa5780634b2b20e7146100bf5780635b01e546146100d2578063938fe7721461010957806394217ad11461011c575b5f5ffd5b6100bd6100b8366004610abd565b610209565b005b6100bd6100cd366004610b3a565b610313565b6100f46100e0366004610c14565b5f6020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100bd610117366004610abd565b610511565b6101437f000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa381565b6040516001600160a01b039091168152602001610100565b6100bd610169366004610c2b565b6105dc565b6101437f000000000000000000000000d5cece180a52e0353654b3337c985e8d5e05634481565b6101437f000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa381565b6100bd6101ca366004610abd565b61075d565b6100bd6101dd366004610abd565b6108a2565b6101437f0000000000000000000000006c9b999d33c612ccd8721b0e349adcae151fcbbf81565b80516020808301919091205f90815290819052604090205460ff166102755760405162461bcd60e51b815260206004820152601f60248201527f43616c6c7320646f206e6f74206d617463682073746f7265642063616c6c730060448201526064015b60405180910390fd5b604051636d4cf32760e11b8152309063da99e64e90610298908490600401610cca565b5f604051808303815f87803b1580156102af575f5ffd5b505af19250505080156102c0575060015b6102f5573d8080156102ed576040519150601f19603f3d011682016040523d82523d5f602084013e6102f2565b606091505b50505b80516020918201205f9081529081905260409020805460ff19169055565b60405163372ff73f60e21b81526001600160a01b037f0000000000000000000000006c9b999d33c612ccd8721b0e349adcae151fcbbf169063dcbfdcfc9061036b908a908a908a908a908a908a908a90600401610d0b565b5f604051808303815f87803b158015610382575f5ffd5b505af1158015610394573d5f5f3e3d5ffd5b50506040516305d5de2b60e31b81526001600160a01b037f000000000000000000000000d5cece180a52e0353654b3337c985e8d5e056344169250632eaef15891506103e8908a908a908a90600401610de2565b6020604051808303815f875af1158015610404573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104289190610e1f565b6001600160a01b0316306001600160a01b0316146104885760405162461bcd60e51b815260206004820152601d60248201527f4d69736d617463686564206164647265737320616e642063616c6c6572000000604482015260640161026c565b604051636d4cf32760e11b8152309063da99e64e906104ab908690600401610cca565b5f604051808303815f87803b1580156104c2575f5ffd5b505af19250505080156104d3575060015b610508573d808015610500576040519150601f19603f3d011682016040523d82523d5f602084013e610505565b606091505b50505b50505050505050565b336001600160a01b037f000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa316146105895760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792058546f6b656e4d616e6167657220697320616c6c6f776564000000604482015260640161026c565b604051636d4cf32760e11b8152309063da99e64e906105ac908490600401610cca565b5f604051808303815f87803b1580156105c3575f5ffd5b505af11580156105d5573d5f5f3e3d5ffd5b5050505050565b6040516305d5de2b60e31b81526001600160a01b037f000000000000000000000000d5cece180a52e0353654b3337c985e8d5e0563441690632eaef1589061062c90879087908790600401610de2565b6020604051808303815f875af1158015610648573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066c9190610e1f565b6001600160a01b0316306001600160a01b0316146106cc5760405162461bcd60e51b815260206004820152601d60248201527f4d69736d617463686564206164647265737320616e642063616c6c6572000000604482015260640161026c565b604051636d4cf32760e11b8152309063da99e64e906106ef908490600401610cca565b5f604051808303815f87803b158015610706575f5ffd5b505af1158015610718573d5f5f3e3d5ffd5b505060405162461bcd60e51b815260206004820152601460248201527314da5b5d5b185d1a5bdb8818dbdb5c1b195d195960621b6044820152606401915061026c9050565b3330146107b85760405162461bcd60e51b8152602060048201526024808201527f4f6e6c79207468697320636f6e74726163742063616e20657865637574652063604482015263616c6c7360e01b606482015260840161026c565b8051602003610812575f6107cb8261091a565b5f81815260208190526040808220805460ff191660011790555191925082917f95c5bdccc9fd3d9223140b7b7313807f52556b5729cf273201d4166dec7b4d2b9190a25050565b5f818060200190518101906108279190610e38565b90505f5b815181101561089d5761089582828151811061084957610849610f96565b60200260200101515f015183838151811061086657610866610f96565b60200260200101516020015184848151811061088457610884610f96565b602002602001015160400151610932565b60010161082b565b505050565b336001600160a01b037f000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa316146105895760405162461bcd60e51b815260206004820152601c60248201527f4f6e6c792041737365744d616e6167657220697320616c6c6f77656400000000604482015260640161026c565b5f81515f0361092a57505f919050565b506020015190565b5f836001600160a01b0316838360405161094c9190610faa565b5f6040518083038185875af1925050503d805f8114610986576040519150601f19603f3d011682016040523d82523d5f602084013e61098b565b606091505b50509050806109d35760405162461bcd60e51b8152602060048201526014602482015273115e1d195c9b985b0818d85b1b0819985a5b195960621b604482015260640161026c565b50505050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610a0f57610a0f6109d9565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610a3d57610a3d6109d9565b604052919050565b5f6001600160401b03821115610a5d57610a5d6109d9565b50601f01601f191660200190565b5f82601f830112610a7a575f5ffd5b8135610a8d610a8882610a45565b610a15565b818152846020838601011115610aa1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610acd575f5ffd5b81356001600160401b03811115610ae2575f5ffd5b610aee84828501610a6b565b949350505050565b5f5f83601f840112610b06575f5ffd5b5081356001600160401b03811115610b1c575f5ffd5b602083019150836020828501011115610b33575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215610b50575f5ffd5b8735965060208801356001600160401b03811115610b6c575f5ffd5b610b788a828b01610af6565b9097509550506040880135935060608801356001600160401b03811115610b9d575f5ffd5b610ba98a828b01610a6b565b93505060808801356001600160401b03811115610bc4575f5ffd5b8801601f81018a13610bd4575f5ffd5b80356001600160401b03811115610be9575f5ffd5b8a60208260051b8401011115610bfd575f5ffd5b602082019350809250505092959891949750929550565b5f60208284031215610c24575f5ffd5b5035919050565b5f5f5f5f60608587031215610c3e575f5ffd5b8435935060208501356001600160401b03811115610c5a575f5ffd5b610c6687828801610af6565b90945092505060408501356001600160401b03811115610c84575f5ffd5b610c9087828801610a6b565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cdc6020830184610c9c565b9392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b87815260a060208201525f610d2460a08301888a610ce3565b8660408401528281036060840152610d3c8187610c9c565b83810360808501528481529050602080820190600586901b830101865f36829003601e19015b88821015610dcf57858403601f190185528235818112610d80575f5ffd5b8a016020810190356001600160401b03811115610d9b575f5ffd5b803603821315610da9575f5ffd5b610db4868284610ce3565b95505050602083019250602085019450600182019150610d62565b50919d9c50505050505050505050505050565b838152604060208201525f610dfb604083018486610ce3565b95945050505050565b80516001600160a01b0381168114610e1a575f5ffd5b919050565b5f60208284031215610e2f575f5ffd5b610cdc82610e04565b5f60208284031215610e48575f5ffd5b81516001600160401b03811115610e5d575f5ffd5b8201601f81018413610e6d575f5ffd5b80516001600160401b03811115610e8657610e866109d9565b8060051b610e9660208201610a15565b91825260208184018101929081019087841115610eb1575f5ffd5b6020850192505b83831015610f8b5782516001600160401b03811115610ed5575f5ffd5b85016060818a03601f19011215610eea575f5ffd5b610ef26109ed565b610efe60208301610e04565b81526040820151602082015260608201516001600160401b03811115610f22575f5ffd5b60208184010192505089601f830112610f39575f5ffd5b8151610f47610a8882610a45565b8181528b6020838601011115610f5b575f5ffd5b8160208501602083015e5f6020838301015280604084015250508084525050602082019150602083019250610eb8565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fea264697066735822122019adb94ef7212dca01bfc3ba5c24c78446373eca47810192e4cc82df8bf7746364736f6c634300081c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d5cece180a52e0353654b3337c985e8d5e0563440000000000000000000000006c9b999d33c612ccd8721b0e349adcae151fcbbf000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa3000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa3

-----Decoded View---------------
Arg [0] : _factory (address): 0xd5CECE180a52e0353654B3337c985E8d5E056344
Arg [1] : _connection (address): 0x6c9b999D33C612cCd8721b0e349adcAE151fcbBf
Arg [2] : _assetManager (address): 0x594b477dd2195CCB5Ff43EafC9b8a8de0F4B4fA3
Arg [3] : _xTokenManager (address): 0x594b477dd2195CCB5Ff43EafC9b8a8de0F4B4fA3

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000d5cece180a52e0353654b3337c985e8d5e056344
Arg [1] : 0000000000000000000000006c9b999d33c612ccd8721b0e349adcae151fcbbf
Arg [2] : 000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa3
Arg [3] : 000000000000000000000000594b477dd2195ccb5ff43eafc9b8a8de0f4b4fa3


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  ]

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.