Sonic Blaze Testnet

Contract

0x239dbb8Fb3f50c452603Fb29af36D1d46D888a68

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

2 Internal Transactions found.

Latest 2 internal transactions

Parent Transaction Hash Block From To
227444902025-02-24 16:10:1615 days ago1740413416
0x239dbb8F...46D888a68
0 S
227444902025-02-24 16:10:1615 days ago1740413416
0x239dbb8F...46D888a68
0 S
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SOMockSettlement

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 4 : SOMockSettlement.sol
// SPDX-License-Identifier: LGPL-3.0-or-later

pragma solidity ^0.8.18;

import './SOMockVaultRelayer.sol';
import '../../../external/cow/GPv2Order.sol';

contract SOMockSettlement {
  SOMockVaultRelayer public immutable vaultRelayer;
  mapping(bytes => uint256) public filledAmount;
  mapping(bytes => bool) public presignatures;
  bytes32 public immutable domainSeparator;

  bytes32 private constant DOMAIN_TYPE_HASH =
    keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)');
  bytes32 private constant DOMAIN_NAME = keccak256('Gnosis Protocol');
  bytes32 private constant DOMAIN_VERSION = keccak256('v2');

  constructor(address _vault) {
    vaultRelayer = SOMockVaultRelayer(_vault);
    domainSeparator = keccak256(
      abi.encode(DOMAIN_TYPE_HASH, DOMAIN_NAME, DOMAIN_VERSION, block.chainid, address(this))
    );
  }

  function setPreSignature(bytes memory orderUID, bool signed) external {
    presignatures[orderUID] = signed;
  }

  function fill(
    GPv2Order.Data calldata order,
    bytes memory orderUID,
    uint256 sellAmount,
    uint256 feeAmount,
    uint256 buyAmount
  ) public {
    require(presignatures[orderUID], 'not presigned');
    filledAmount[orderUID] += sellAmount;
    vaultRelayer.transfer(order.sellToken, order.receiver, address(vaultRelayer), sellAmount + feeAmount);
    vaultRelayer.transfer(order.buyToken, address(vaultRelayer), order.receiver, buyAmount);
  }

  function invalidateOrder(bytes calldata orderUid) external {
     filledAmount[orderUid] = type(uint256).max;
  }
}

File 2 of 4 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 3 of 4 : GPv2Order.sol
// SPDX-License-Identifier: LGPL-3.0-or-later
pragma solidity ^0.8.18;

import "@openzeppelin/contracts-v4/token/ERC20/IERC20.sol";

/// @title Gnosis Protocol v2 Order Library
/// @author Gnosis Developers
library GPv2Order {
    /// @dev The complete data for a Gnosis Protocol order. This struct contains
    /// all order parameters that are signed for submitting to GP.
    struct Data {
        IERC20 sellToken;
        IERC20 buyToken;
        address receiver;
        uint256 sellAmount;
        uint256 buyAmount;
        uint32 validTo;
        bytes32 appData;
        uint256 feeAmount;
        bytes32 kind;
        bool partiallyFillable;
        bytes32 sellTokenBalance;
        bytes32 buyTokenBalance;
    }

    /// @dev The order EIP-712 type hash for the [`GPv2Order.Data`] struct.
    ///
    /// This value is pre-computed from the following expression:
    /// ```
    /// keccak256(
    ///     "Order(" +
    ///         "address sellToken," +
    ///         "address buyToken," +
    ///         "address receiver," +
    ///         "uint256 sellAmount," +
    ///         "uint256 buyAmount," +
    ///         "uint32 validTo," +
    ///         "bytes32 appData," +
    ///         "uint256 feeAmount," +
    ///         "string kind," +
    ///         "bool partiallyFillable" +
    ///         "string sellTokenBalance" +
    ///         "string buyTokenBalance" +
    ///     ")"
    /// )
    /// ```
    bytes32 internal constant TYPE_HASH =
        hex"d5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489";

    /// @dev The marker value for a sell order for computing the order struct
    /// hash. This allows the EIP-712 compatible wallets to display a
    /// descriptive string for the order kind (instead of 0 or 1).
    ///
    /// This value is pre-computed from the following expression:
    /// ```
    /// keccak256("sell")
    /// ```
    bytes32 internal constant KIND_SELL =
        hex"f3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775";

    /// @dev The OrderKind marker value for a buy order for computing the order
    /// struct hash.
    ///
    /// This value is pre-computed from the following expression:
    /// ```
    /// keccak256("buy")
    /// ```
    bytes32 internal constant KIND_BUY =
        hex"6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc";

    /// @dev The TokenBalance marker value for using direct ERC20 balances for
    /// computing the order struct hash.
    ///
    /// This value is pre-computed from the following expression:
    /// ```
    /// keccak256("erc20")
    /// ```
    bytes32 internal constant BALANCE_ERC20 =
        hex"5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9";

    /// @dev The TokenBalance marker value for using Balancer Vault external
    /// balances (in order to re-use Vault ERC20 approvals) for computing the
    /// order struct hash.
    ///
    /// This value is pre-computed from the following expression:
    /// ```
    /// keccak256("external")
    /// ```
    bytes32 internal constant BALANCE_EXTERNAL =
        hex"abee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632";

    /// @dev The TokenBalance marker value for using Balancer Vault internal
    /// balances for computing the order struct hash.
    ///
    /// This value is pre-computed from the following expression:
    /// ```
    /// keccak256("internal")
    /// ```
    bytes32 internal constant BALANCE_INTERNAL =
        hex"4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce";

    /// @dev Marker address used to indicate that the receiver of the trade
    /// proceeds should the owner of the order.
    ///
    /// This is chosen to be `address(0)` for gas efficiency as it is expected
    /// to be the most common case.
    address internal constant RECEIVER_SAME_AS_OWNER = address(0);

    /// @dev The byte length of an order unique identifier.
    uint256 internal constant UID_LENGTH = 56;

    /// @dev Returns the actual receiver for an order. This function checks
    /// whether or not the [`receiver`] field uses the marker value to indicate
    /// it is the same as the order owner.
    ///
    /// @return receiver The actual receiver of trade proceeds.
    function actualReceiver(Data memory order, address owner)
        internal
        pure
        returns (address receiver)
    {
        if (order.receiver == RECEIVER_SAME_AS_OWNER) {
            receiver = owner;
        } else {
            receiver = order.receiver;
        }
    }

    /// @dev Return the EIP-712 signing hash for the specified order.
    ///
    /// @param order The order to compute the EIP-712 signing hash for.
    /// @param domainSeparator The EIP-712 domain separator to use.
    /// @return orderDigest The 32 byte EIP-712 struct hash.
    function hash(Data memory order, bytes32 domainSeparator)
        internal
        pure
        returns (bytes32 orderDigest)
    {
        bytes32 structHash;

        // NOTE: Compute the EIP-712 order struct hash in place. As suggested
        // in the EIP proposal, noting that the order struct has 10 fields, and
        // including the type hash `(12 + 1) * 32 = 416` bytes to hash.
        // <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md#rationale-for-encodedata>
        // solhint-disable-next-line no-inline-assembly
        assembly {
            let dataStart := sub(order, 32)
            let temp := mload(dataStart)
            mstore(dataStart, TYPE_HASH)
            structHash := keccak256(dataStart, 416)
            mstore(dataStart, temp)
        }

        // NOTE: Now that we have the struct hash, compute the EIP-712 signing
        // hash using scratch memory past the free memory pointer. The signing
        // hash is computed from `"\x19\x01" || domainSeparator || structHash`.
        // <https://docs.soliditylang.org/en/v0.7.6/internals/layout_in_memory.html#layout-in-memory>
        // <https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md#specification>
        // solhint-disable-next-line no-inline-assembly
        assembly {
            let freeMemoryPointer := mload(0x40)
            mstore(freeMemoryPointer, "\x19\x01")
            mstore(add(freeMemoryPointer, 2), domainSeparator)
            mstore(add(freeMemoryPointer, 34), structHash)
            orderDigest := keccak256(freeMemoryPointer, 66)
        }
    }

    /// @dev Packs order UID parameters into the specified memory location. The
    /// result is equivalent to `abi.encodePacked(...)` with the difference that
    /// it allows re-using the memory for packing the order UID.
    ///
    /// This function reverts if the order UID buffer is not the correct size.
    ///
    /// @param orderUid The buffer pack the order UID parameters into.
    /// @param orderDigest The EIP-712 struct digest derived from the order
    /// parameters.
    /// @param owner The address of the user who owns this order.
    /// @param validTo The epoch time at which the order will stop being valid.
    function packOrderUidParams(
        bytes memory orderUid,
        bytes32 orderDigest,
        address owner,
        uint32 validTo
    ) internal pure {
        require(orderUid.length == UID_LENGTH, "GPv2: uid buffer overflow");

        // NOTE: Write the order UID to the allocated memory buffer. The order
        // parameters are written to memory in **reverse order** as memory
        // operations write 32-bytes at a time and we want to use a packed
        // encoding. This means, for example, that after writing the value of
        // `owner` to bytes `20:52`, writing the `orderDigest` to bytes `0:32`
        // will **overwrite** bytes `20:32`. This is desirable as addresses are
        // only 20 bytes and `20:32` should be `0`s:
        //
        //        |           1111111111222222222233333333334444444444555555
        //   byte | 01234567890123456789012345678901234567890123456789012345
        // -------+---------------------------------------------------------
        //  field | [.........orderDigest..........][......owner.......][vT]
        // -------+---------------------------------------------------------
        // mstore |                         [000000000000000000000000000.vT]
        //        |                     [00000000000.......owner.......]
        //        | [.........orderDigest..........]
        //
        // Additionally, since Solidity `bytes memory` are length prefixed,
        // 32 needs to be added to all the offsets.
        //
        // solhint-disable-next-line no-inline-assembly
        assembly {
            mstore(add(orderUid, 56), validTo)
            mstore(add(orderUid, 52), owner)
            mstore(add(orderUid, 32), orderDigest)
        }
    }

    /// @dev Extracts specific order information from the standardized unique
    /// order id of the protocol.
    ///
    /// @param orderUid The unique identifier used to represent an order in
    /// the protocol. This uid is the packed concatenation of the order digest,
    /// the validTo order parameter and the address of the user who created the
    /// order. It is used by the user to interface with the contract directly,
    /// and not by calls that are triggered by the solvers.
    /// @return orderDigest The EIP-712 signing digest derived from the order
    /// parameters.
    /// @return owner The address of the user who owns this order.
    /// @return validTo The epoch time at which the order will stop being valid.
    function extractOrderUidParams(bytes calldata orderUid)
        internal
        pure
        returns (
            bytes32 orderDigest,
            address owner,
            uint32 validTo
        )
    {
        require(orderUid.length == UID_LENGTH, "GPv2: invalid uid");

        // Use assembly to efficiently decode packed calldata.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            orderDigest := calldataload(orderUid.offset)
            owner := shr(96, calldataload(add(orderUid.offset, 32)))
            validTo := shr(224, calldataload(add(orderUid.offset, 52)))
        }
    }
}

File 4 of 4 : SOMockVaultRelayer.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity ^0.8.18;

import '@openzeppelin/contracts-v4/token/ERC20/IERC20.sol';

contract SOMockVaultRelayer {
  constructor() {}

  function transfer(
    IERC20 token,
    address from,
    address to,
    uint256 amount
  ) external {
    if (from == address(this)) {
      token.transfer(to, amount);
    } else {
      token.transferFrom(from, to, amount);
    }
  }
}

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

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"contract IERC20","name":"sellToken","type":"address"},{"internalType":"contract IERC20","name":"buyToken","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"},{"internalType":"uint32","name":"validTo","type":"uint32"},{"internalType":"bytes32","name":"appData","type":"bytes32"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"bytes32","name":"kind","type":"bytes32"},{"internalType":"bool","name":"partiallyFillable","type":"bool"},{"internalType":"bytes32","name":"sellTokenBalance","type":"bytes32"},{"internalType":"bytes32","name":"buyTokenBalance","type":"bytes32"}],"internalType":"struct GPv2Order.Data","name":"order","type":"tuple"},{"internalType":"bytes","name":"orderUID","type":"bytes"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"fill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"filledAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"orderUid","type":"bytes"}],"name":"invalidateOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"presignatures","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"orderUID","type":"bytes"},{"internalType":"bool","name":"signed","type":"bool"}],"name":"setPreSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vaultRelayer","outputs":[{"internalType":"contract SOMockVaultRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60c060405234801561001057600080fd5b506040516108b23803806108b283398101604081905261002f916100e8565b6001600160a01b0381166080908152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f6c85c0337eba1661327f94f3bf46c8a7f9311a563f4d5c948362567f5d8ed60c918101919091527ff9446b8e937d86f0bc87cac73923491692b123ca5f8761908494703758206adf606082015246918101919091523060a082015260c00160408051601f19818403018152919052805160209091012060a05250610118565b6000602082840312156100fa57600080fd5b81516001600160a01b038116811461011157600080fd5b9392505050565b60805160a05161075a610158600039600061017d01526000818160ed01528181610268015281816102ac0152818161034d0152610388015261075a6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639b552cc21161005b5780639b552cc2146100e8578063d3a0975514610127578063ec6cb13f14610165578063f698da251461017857600080fd5b806315337bc0146100825780632479fb6e146100975780635b75a25b146100d5575b600080fd5b610095610090366004610463565b61019f565b005b6100c26100a5366004610578565b805160208183018101805160008252928201919093012091525481565b6040519081526020015b60405180910390f35b6100956100e33660046105b5565b6101c8565b61010f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100cc565b610155610135366004610578565b805160208183018101805160018252928201919093012091525460ff1681565b60405190151581526020016100cc565b61009561017336600461062b565b61042e565b6100c27f000000000000000000000000000000000000000000000000000000000000000081565b600019600083836040516101b4929190610682565b908152604051908190036020019020555050565b6001846040516101d89190610692565b9081526040519081900360200190205460ff1661022b5760405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081c1c995cda59db9959609a1b604482015260640160405180910390fd5b8260008560405161023c9190610692565b9081526020016040518091039020600082825461025991906106c1565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc61029a6020880188610700565b6102aa6060890160408a01610700565b7f00000000000000000000000000000000000000000000000000000000000000006102d587896106c1565b6040516001600160e01b031960e087901b1681526001600160a01b0394851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b15801561032d57600080fd5b505af1158015610341573d6000803e3d6000fd5b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915063f18d03cc90506103866040880160208901610700565b7f00000000000000000000000000000000000000000000000000000000000000006103b760608a0160408b01610700565b60405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b15801561040f57600080fd5b505af1158015610423573d6000803e3d6000fd5b505050505050505050565b8060018360405161043f9190610692565b908152604051908190036020019020805491151560ff199092169190911790555050565b6000806020838503121561047657600080fd5b823567ffffffffffffffff8082111561048e57600080fd5b818501915085601f8301126104a257600080fd5b8135818111156104b157600080fd5b8660208285010111156104c357600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104fc57600080fd5b813567ffffffffffffffff80821115610517576105176104d5565b604051601f8301601f19908116603f0116810190828211818310171561053f5761053f6104d5565b8160405283815286602085880101111561055857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561058a57600080fd5b813567ffffffffffffffff8111156105a157600080fd5b6105ad848285016104eb565b949350505050565b60008060008060008587036102008112156105cf57600080fd5b610180808212156105df57600080fd5b879650860135905067ffffffffffffffff8111156105fc57600080fd5b610608888289016104eb565b95989597505050506101a0840135936101c0810135936101e09091013592509050565b6000806040838503121561063e57600080fd5b823567ffffffffffffffff81111561065557600080fd5b610661858286016104eb565b9250506020830135801515811461067757600080fd5b809150509250929050565b8183823760009101908152919050565b6000825160005b818110156106b35760208186018101518583015201610699565b506000920191825250919050565b808201808211156106e257634e487b7160e01b600052601160045260246000fd5b92915050565b6001600160a01b03811681146106fd57600080fd5b50565b60006020828403121561071257600080fd5b813561071d816106e8565b939250505056fea26469706673582212201362c3791f6038efba201c9a9df56c5fcb4ac969323dd7c2ed2da9a7c33fddae64736f6c634300081200330000000000000000000000005cc47a8e956dc84553f2aa2009bc739888384324

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80639b552cc21161005b5780639b552cc2146100e8578063d3a0975514610127578063ec6cb13f14610165578063f698da251461017857600080fd5b806315337bc0146100825780632479fb6e146100975780635b75a25b146100d5575b600080fd5b610095610090366004610463565b61019f565b005b6100c26100a5366004610578565b805160208183018101805160008252928201919093012091525481565b6040519081526020015b60405180910390f35b6100956100e33660046105b5565b6101c8565b61010f7f0000000000000000000000005cc47a8e956dc84553f2aa2009bc73988838432481565b6040516001600160a01b0390911681526020016100cc565b610155610135366004610578565b805160208183018101805160018252928201919093012091525460ff1681565b60405190151581526020016100cc565b61009561017336600461062b565b61042e565b6100c27fbb9c759ab92a3c0d4798b9afd837356afac2890e746cc880ba22554e62f6f95181565b600019600083836040516101b4929190610682565b908152604051908190036020019020555050565b6001846040516101d89190610692565b9081526040519081900360200190205460ff1661022b5760405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081c1c995cda59db9959609a1b604482015260640160405180910390fd5b8260008560405161023c9190610692565b9081526020016040518091039020600082825461025991906106c1565b90915550506001600160a01b037f0000000000000000000000005cc47a8e956dc84553f2aa2009bc7398883843241663f18d03cc61029a6020880188610700565b6102aa6060890160408a01610700565b7f0000000000000000000000005cc47a8e956dc84553f2aa2009bc7398883843246102d587896106c1565b6040516001600160e01b031960e087901b1681526001600160a01b0394851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b15801561032d57600080fd5b505af1158015610341573d6000803e3d6000fd5b50506001600160a01b037f0000000000000000000000005cc47a8e956dc84553f2aa2009bc73988838432416915063f18d03cc90506103866040880160208901610700565b7f0000000000000000000000005cc47a8e956dc84553f2aa2009bc7398883843246103b760608a0160408b01610700565b60405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b15801561040f57600080fd5b505af1158015610423573d6000803e3d6000fd5b505050505050505050565b8060018360405161043f9190610692565b908152604051908190036020019020805491151560ff199092169190911790555050565b6000806020838503121561047657600080fd5b823567ffffffffffffffff8082111561048e57600080fd5b818501915085601f8301126104a257600080fd5b8135818111156104b157600080fd5b8660208285010111156104c357600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104fc57600080fd5b813567ffffffffffffffff80821115610517576105176104d5565b604051601f8301601f19908116603f0116810190828211818310171561053f5761053f6104d5565b8160405283815286602085880101111561055857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561058a57600080fd5b813567ffffffffffffffff8111156105a157600080fd5b6105ad848285016104eb565b949350505050565b60008060008060008587036102008112156105cf57600080fd5b610180808212156105df57600080fd5b879650860135905067ffffffffffffffff8111156105fc57600080fd5b610608888289016104eb565b95989597505050506101a0840135936101c0810135936101e09091013592509050565b6000806040838503121561063e57600080fd5b823567ffffffffffffffff81111561065557600080fd5b610661858286016104eb565b9250506020830135801515811461067757600080fd5b809150509250929050565b8183823760009101908152919050565b6000825160005b818110156106b35760208186018101518583015201610699565b506000920191825250919050565b808201808211156106e257634e487b7160e01b600052601160045260246000fd5b92915050565b6001600160a01b03811681146106fd57600080fd5b50565b60006020828403121561071257600080fd5b813561071d816106e8565b939250505056fea26469706673582212201362c3791f6038efba201c9a9df56c5fcb4ac969323dd7c2ed2da9a7c33fddae64736f6c63430008120033

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

0000000000000000000000005cc47a8e956dc84553f2aa2009bc739888384324

-----Decoded View---------------
Arg [0] : _vault (address): 0x5Cc47a8E956dc84553F2aA2009Bc739888384324

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005cc47a8e956dc84553f2aa2009bc739888384324


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.