ETH Price: $3,087.27 (-3.01%)

Contract

0x84F9b26D602875E039E34adcE6a505c475929cCc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60e06040133151042021-09-28 15:44:251143 days ago1632843865IN
 Create: ZeroExApiAdapter
0 ETH0.11111514112.17791564

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ZeroExApiAdapter

Compiler Version
v0.6.10+commit.00c0fcaf

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : ZeroExApiAdapter.sol
/*
    Copyright 2021 Set Labs Inc.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

    SPDX-License-Identifier: Apache License, Version 2.0
*/

pragma solidity 0.6.10;
pragma experimental "ABIEncoderV2";

/**
 * @title ZeroExApiAdapter
 * @author Set Protocol
 *
 * Exchange adapter for 0xAPI that returns data for swaps
 */

contract ZeroExApiAdapter {

    struct BatchFillData {
        address inputToken;
        address outputToken;
        uint256 sellAmount;
        WrappedBatchCall[] calls;
    }

    struct WrappedBatchCall {
        bytes4 selector;
        uint256 sellAmount;
        bytes data;
    }

    struct MultiHopFillData {
        address[] tokens;
        uint256 sellAmount;
        WrappedMultiHopCall[] calls;
    }

    struct WrappedMultiHopCall {
        bytes4 selector;
        bytes data;
    }

    /* ============ State Variables ============ */

    // ETH pseudo-token address used by 0x API.
    address private constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

    // Byte size of Uniswap V3 encoded path addresses and pool fees
    uint256 private constant UNISWAP_V3_PATH_ADDRESS_SIZE = 20;
    uint256 private constant UNISWAP_V3_PATH_FEE_SIZE = 3;
    // Minimum byte size of a single hop Uniswap V3 encoded path (token address + fee + token adress)
    uint256 private constant UNISWAP_V3_SINGLE_HOP_PATH_SIZE = UNISWAP_V3_PATH_ADDRESS_SIZE + UNISWAP_V3_PATH_FEE_SIZE + UNISWAP_V3_PATH_ADDRESS_SIZE;
    // Byte size of one hop in the Uniswap V3 encoded path (token address + fee)
    uint256 private constant UNISWAP_V3_SINGLE_HOP_OFFSET_SIZE = UNISWAP_V3_PATH_ADDRESS_SIZE + UNISWAP_V3_PATH_FEE_SIZE;

    // Address of the deployed ZeroEx contract.
    address public immutable zeroExAddress;
    // Address of the WETH9 contract.
    address public immutable wethAddress;

    // Returns the address to approve source tokens to for trading. This is the TokenTaker address
    address public immutable getSpender;

    /* ============ constructor ============ */

    constructor(address _zeroExAddress, address _wethAddress) public {
        zeroExAddress = _zeroExAddress;
        wethAddress = _wethAddress;
        getSpender = _zeroExAddress;
    }


    /* ============ External Getter Functions ============ */

    /**
     * Return 0xAPI calldata which is already generated from 0xAPI
     *
     * @param  _sourceToken              Address of source token to be sold
     * @param  _destinationToken         Address of destination token to buy
     * @param  _destinationAddress       Address that assets should be transferred to
     * @param  _sourceQuantity           Amount of source token to sell
     * @param  _minDestinationQuantity   Min amount of destination token to buy
     * @param  _data                     Arbitrage bytes containing trade call data
     *
     * @return address                   Target contract address
     * @return uint256                   Call value
     * @return bytes                     Trade calldata
     */
    function getTradeCalldata(
        address _sourceToken,
        address _destinationToken,
        address _destinationAddress,
        uint256 _sourceQuantity,
        uint256 _minDestinationQuantity,
        bytes calldata _data
    )
        external
        view
        returns (address, uint256, bytes memory)
    {
        // solium-disable security/no-inline-assembly
        address inputToken;
        address outputToken;
        address recipient;
        bool supportsRecipient;
        uint256 inputTokenAmount;
        uint256 minOutputTokenAmount;

        {
            require(_data.length >= 4, "Invalid calldata");
            bytes4 selector;
            assembly {
                selector := and(
                    // Read the first 4 bytes of the _data array from calldata.
                    calldataload(add(36, calldataload(164))), // 164 = 5 * 32 + 4
                    0xffffffff00000000000000000000000000000000000000000000000000000000
                )
            }

            if (selector == 0x415565b0 || selector == 0x8182b61f) {
                // transformERC20(), transformERC20Staging()
                (inputToken, outputToken, inputTokenAmount, minOutputTokenAmount) =
                    abi.decode(_data[4:], (address, address, uint256, uint256));
            } else if (selector == 0xf7fcd384) {
                // sellToLiquidityProvider()
                (inputToken, outputToken, , recipient, inputTokenAmount, minOutputTokenAmount) =
                    abi.decode(_data[4:], (address, address, address, address, uint256, uint256));
                supportsRecipient = true;
                if (recipient == address(0)) {
                    recipient = _destinationAddress;
                }
            } else if (selector == 0xd9627aa4) {
                // sellToUniswap()
                address[] memory path;
                (path, inputTokenAmount, minOutputTokenAmount) =
                    abi.decode(_data[4:], (address[], uint256, uint256));
                require(path.length > 1, "Uniswap token path too short");
                inputToken = path[0];
                outputToken = path[path.length - 1];
            } else if (selector == 0xafc6728e) {
                // batchFill()
                BatchFillData memory fillData;
                (fillData, minOutputTokenAmount) =
                    abi.decode(_data[4:], (BatchFillData, uint256));
                inputToken = fillData.inputToken;
                outputToken = fillData.outputToken;
                inputTokenAmount = fillData.sellAmount;
            } else if (selector == 0x21c184b6) {
                // multiHopFill()
                MultiHopFillData memory fillData;
                (fillData, minOutputTokenAmount) =
                    abi.decode(_data[4:], (MultiHopFillData, uint256));
                require(fillData.tokens.length > 1, "Multihop token path too short");
                inputToken = fillData.tokens[0];
                outputToken = fillData.tokens[fillData.tokens.length - 1];
                inputTokenAmount = fillData.sellAmount;
            } else if (selector == 0x6af479b2) {
                // sellTokenForTokenToUniswapV3()
                bytes memory encodedPath;
                (encodedPath, inputTokenAmount, minOutputTokenAmount, recipient) =
                    abi.decode(_data[4:], (bytes, uint256, uint256, address));
                supportsRecipient = true;
                if (recipient == address(0)) {
                    recipient = _destinationAddress;
                }
                (inputToken, outputToken) = _decodeTokensFromUniswapV3EncodedPath(encodedPath);
            } else if (selector == 0x7a1eb1b9) {
                // multiplexBatchSellTokenForToken()
                (inputToken, outputToken, , inputTokenAmount, minOutputTokenAmount) =
                	abi.decode(_data[4:], (address, address, uint256, uint256, uint256));
            } else if (selector == 0x0f3b31b2) {
                // multiplexMultiHopSellTokenForToken()
                address[] memory tokens;
                (tokens, , inputTokenAmount, minOutputTokenAmount) =
                	abi.decode(_data[4:], (address[], uint256, uint256, uint256));
                require(tokens.length > 1, "Multihop token path too short");
                inputToken = tokens[0];
                outputToken = tokens[tokens.length - 1];
            } else {
                revert("Unsupported 0xAPI function selector");
            }
        }

        require(inputToken != ETH_ADDRESS && outputToken != ETH_ADDRESS, "ETH not supported");
        require(inputToken == _sourceToken, "Mismatched input token");
        require(outputToken == _destinationToken, "Mismatched output token");
        require(!supportsRecipient || recipient == _destinationAddress, "Mismatched recipient");
        require(inputTokenAmount == _sourceQuantity, "Mismatched input token quantity");
        require(minOutputTokenAmount >= _minDestinationQuantity, "Mismatched output token quantity");

        return (
            zeroExAddress,
            // Note: Does not account for limit order protocol fees.
            0,
            _data
        );
    }

    // Decode input and output tokens from an arbitrary length encoded Uniswap V3 path
    function _decodeTokensFromUniswapV3EncodedPath(bytes memory encodedPath)
        private
        pure
        returns (
            address inputToken,
            address outputToken
        )
    {
        require(encodedPath.length >= UNISWAP_V3_SINGLE_HOP_PATH_SIZE, "UniswapV3 token path too short");

        // UniswapV3 paths are packed encoded as (address(token0), uint24(fee), address(token1), [...])
        // We want the first and last token.
        uint256 numHops = (encodedPath.length - UNISWAP_V3_PATH_ADDRESS_SIZE)/UNISWAP_V3_SINGLE_HOP_OFFSET_SIZE;
        uint256 lastTokenOffset = numHops * UNISWAP_V3_SINGLE_HOP_OFFSET_SIZE;
        assembly {
            let p := add(encodedPath, 32)
            inputToken := shr(96, mload(p))
            p := add(p, lastTokenOffset)
            outputToken := shr(96, mload(p))
        }
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_zeroExAddress","type":"address"},{"internalType":"address","name":"_wethAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getSpender","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sourceToken","type":"address"},{"internalType":"address","name":"_destinationToken","type":"address"},{"internalType":"address","name":"_destinationAddress","type":"address"},{"internalType":"uint256","name":"_sourceQuantity","type":"uint256"},{"internalType":"uint256","name":"_minDestinationQuantity","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"getTradeCalldata","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wethAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroExAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60e060405234801561001057600080fd5b506040516111c53803806111c583398101604081905261002f91610056565b6001600160601b0319606092831b811660808190529190921b90911660a05260c0526100a7565b60008060408385031215610068578182fd5b82516100738161008f565b60208401519092506100848161008f565b809150509250929050565b6001600160a01b03811681146100a457600080fd5b50565b60805160601c60a05160601c60c05160601c6110e76100de6000398060c752508060eb52508060a3528061062352506110e76000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632658b4ad14610051578063334fc2891461006f5780634f0e0ef314610077578063e171fcab1461007f575b600080fd5b6100596100a1565b6040516100669190610d58565b60405180910390f35b6100596100c5565b6100596100e9565b61009261008d3660046109cc565b61010d565b60405161006693929190610d6c565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080606081808080808060048a10156101425760405162461bcd60e51b815260040161013990610f7e565b60405180910390fd5b602460a43501356001600160e01b031916630415565b60e41b8114806101785750638182b61f60e01b6001600160e01b03198216145b156101a65761018a8b6004818f61105b565b8101906101979190610937565b929950909750935091506104df565b633dff34e160e21b6001600160e01b031982161415610203576101cc8b6004818f61105b565b8101906101d991906108ca565b949b50929950975060019650909450909250506001600160a01b0385166101fe578e94505b6104df565b6336589ea960e21b6001600160e01b03198216141561029e5760608c8c60049080926102319392919061105b565b81019061023e9190610a85565b825191965094509091506001106102675760405162461bcd60e51b815260040161013990610dd6565b8060008151811061027457fe5b602002602001015197508060018251038151811061028e57fe5b60200260200101519650506104df565b6357e3394760e11b6001600160e01b0319821614156102fe576102bf6106ee565b8c8c60049080926102d29392919061105b565b8101906102df9190610b84565b81516020830151604090930151909a5091985090945092506104df9050565b6310e0c25b60e11b6001600160e01b0319821614156103ad5761031f610714565b8c8c60049080926103329392919061105b565b81019061033f9190610c29565b8151519094509091506001106103675760405162461bcd60e51b815260040161013990610eb5565b8051805160009061037457fe5b6020026020010151975080600001516001826000015151038151811061039657fe5b6020026020010151965080602001519350506104df565b63357a3cd960e11b6001600160e01b03198216141561041c5760608c8c60049080926103db9392919061105b565b8101906103e89190610b23565b985060019750909550935090506001600160a01b038616610407578f95505b6104108161069d565b90985096506104df9050565b637a1eb1b960e01b6001600160e01b031982161415610462576104428b6004818f61105b565b81019061044f919061097c565b939a509198509094509092506104df9050565b63079d98d960e11b6001600160e01b0319821614156104c75760608c8c60049080926104909392919061105b565b81019061049d9190610ad1565b83519197509550919250506001106102675760405162461bcd60e51b815260040161013990610eb5565b60405162461bcd60e51b815260040161013990610e3b565b506001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480159061052a57506001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b6105465760405162461bcd60e51b815260040161013990610f1c565b8f6001600160a01b0316866001600160a01b0316146105775760405162461bcd60e51b815260040161013990610eec565b8e6001600160a01b0316856001600160a01b0316146105a85760405162461bcd60e51b815260040161013990610f47565b8215806105c657508d6001600160a01b0316846001600160a01b0316145b6105e25760405162461bcd60e51b815260040161013990610e0d565b8c82146106015760405162461bcd60e51b815260040161013990610fdd565b8b8110156106215760405162461bcd60e51b815260040161013990610fa8565b7f000000000000000000000000000000000000000000000000000000000000000060008c8c82925081818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250969f50949d50909b5050505050505050505050509750975097945050505050565b80516000908190602b11156106c45760405162461bcd60e51b815260040161013990610e7e565b50508051602080830151601760131990930183900490920290920190910151606091821c92911c90565b604080516080810182526000808252602082018190529181019190915260608082015290565b60405180606001604052806060815260200160008152602001606081525090565b600082601f830112610745578081fd5b81356107586107538261103b565b611014565b81815291506020808301908481018184028601820187101561077957600080fd5b60005b848110156107a157813561078f81611083565b8452928201929082019060010161077c565b505050505092915050565b600082601f8301126107bc578081fd5b81356107ca6107538261103b565b818152915060208083019084810160005b848110156107a15781358701606080601f19838c030112156107fc57600080fd5b61080581611014565b858301356108128161109b565b8152604083810135878301528284013567ffffffffffffffff81111561083757600080fd5b6108458d8983880101610861565b91830191909152508652505092820192908201906001016107db565b600082601f830112610871578081fd5b813567ffffffffffffffff811115610887578182fd5b61089a601f8201601f1916602001611014565b91508082528360208285010111156108b157600080fd5b8060208401602084013760009082016020015292915050565b60008060008060008060c087890312156108e2578182fd5b86356108ed81611083565b955060208701356108fd81611083565b9450604087013561090d81611083565b9350606087013561091d81611083565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561094c578384fd5b843561095781611083565b9350602085013561096781611083565b93969395505050506040820135916060013590565b600080600080600060a08688031215610993578081fd5b853561099e81611083565b945060208601356109ae81611083565b94979496505050506040830135926060810135926080909101359150565b600080600080600080600060c0888a0312156109e6578081fd5b87356109f181611083565b96506020880135610a0181611083565b95506040880135610a1181611083565b9450606088013593506080880135925060a088013567ffffffffffffffff80821115610a3b578283fd5b818a018b601f820112610a4c578384fd5b8035925081831115610a5c578384fd5b8b6020848301011115610a6d578384fd5b60208101945050508091505092959891949750929550565b600080600060608486031215610a99578081fd5b833567ffffffffffffffff811115610aaf578182fd5b610abb86828701610735565b9660208601359650604090950135949350505050565b60008060008060808587031215610ae6578182fd5b843567ffffffffffffffff811115610afc578283fd5b610b0887828801610735565b97602087013597506040870135966060013595509350505050565b60008060008060808587031215610b38578182fd5b843567ffffffffffffffff811115610b4e578283fd5b610b5a87828801610861565b94505060208501359250604085013591506060850135610b7981611083565b939692955090935050565b60008060408385031215610b96578182fd5b823567ffffffffffffffff80821115610bad578384fd5b81850160808188031215610bbf578485fd5b610bc96080611014565b92508035610bd681611083565b83526020810135610be681611083565b602084015260408181013590840152606081013582811115610c06578586fd5b610c12888284016107ac565b606085015250919660209590950135955050505050565b60008060408385031215610c3b578182fd5b67ffffffffffffffff8084351115610c51578283fd5b8335840160608187031215610c64578384fd5b610c6e6060611014565b8282351115610c7b578485fd5b610c888783358401610735565b815260208083013581830152604083013584811115610ca5578687fd5b80840189601f820112610cb6578788fd5b610cc3610753823561103b565b8135815283810195509150828101885b8235811015610d4357813583016040818e03601f19011215610cf3578a8bfd5b610cfd6040611014565b86820135610d0a8161109b565b815260408201358a811115610d1d578c8dfd5b610d2b8f8983860101610861565b82890152508852509584019590840190600101610cd3565b50505060408301529097950135955050505050565b6001600160a01b0391909116815260200190565b600060018060a01b038516825260208481840152606060408401528351806060850152825b81811015610dad57858101830151858201608001528201610d91565b81811115610dbe5783608083870101525b50601f01601f19169290920160800195945050505050565b6020808252601c908201527f556e697377617020746f6b656e207061746820746f6f2073686f727400000000604082015260600190565b602080825260149082015273135a5cdb585d18da1959081c9958da5c1a595b9d60621b604082015260600190565b60208082526023908201527f556e737570706f727465642030784150492066756e6374696f6e2073656c65636040820152623a37b960e91b606082015260800190565b6020808252601e908201527f556e6973776170563320746f6b656e207061746820746f6f2073686f72740000604082015260600190565b6020808252601d908201527f4d756c7469686f7020746f6b656e207061746820746f6f2073686f7274000000604082015260600190565b60208082526016908201527526b4b9b6b0ba31b432b21034b7383aba103a37b5b2b760511b604082015260600190565b602080825260119082015270115512081b9bdd081cdd5c1c1bdc9d1959607a1b604082015260600190565b60208082526017908201527f4d69736d617463686564206f757470757420746f6b656e000000000000000000604082015260600190565b60208082526010908201526f496e76616c69642063616c6c6461746160801b604082015260600190565b6020808252818101527f4d69736d617463686564206f757470757420746f6b656e207175616e74697479604082015260600190565b6020808252601f908201527f4d69736d61746368656420696e70757420746f6b656e207175616e7469747900604082015260600190565b60405181810167ffffffffffffffff8111828210171561103357600080fd5b604052919050565b600067ffffffffffffffff821115611051578081fd5b5060209081020190565b6000808585111561106a578182fd5b83861115611076578182fd5b5050820193919092039150565b6001600160a01b038116811461109857600080fd5b50565b6001600160e01b03198116811461109857600080fdfea264697066735822122028fc4346855a7b780f541678f7cd4eb2cfbe4cdb002702a9dbab27756ccec46564736f6c634300060a0033000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80632658b4ad14610051578063334fc2891461006f5780634f0e0ef314610077578063e171fcab1461007f575b600080fd5b6100596100a1565b6040516100669190610d58565b60405180910390f35b6100596100c5565b6100596100e9565b61009261008d3660046109cc565b61010d565b60405161006693929190610d6c565b7f000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff81565b7f000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff81565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600080606081808080808060048a10156101425760405162461bcd60e51b815260040161013990610f7e565b60405180910390fd5b602460a43501356001600160e01b031916630415565b60e41b8114806101785750638182b61f60e01b6001600160e01b03198216145b156101a65761018a8b6004818f61105b565b8101906101979190610937565b929950909750935091506104df565b633dff34e160e21b6001600160e01b031982161415610203576101cc8b6004818f61105b565b8101906101d991906108ca565b949b50929950975060019650909450909250506001600160a01b0385166101fe578e94505b6104df565b6336589ea960e21b6001600160e01b03198216141561029e5760608c8c60049080926102319392919061105b565b81019061023e9190610a85565b825191965094509091506001106102675760405162461bcd60e51b815260040161013990610dd6565b8060008151811061027457fe5b602002602001015197508060018251038151811061028e57fe5b60200260200101519650506104df565b6357e3394760e11b6001600160e01b0319821614156102fe576102bf6106ee565b8c8c60049080926102d29392919061105b565b8101906102df9190610b84565b81516020830151604090930151909a5091985090945092506104df9050565b6310e0c25b60e11b6001600160e01b0319821614156103ad5761031f610714565b8c8c60049080926103329392919061105b565b81019061033f9190610c29565b8151519094509091506001106103675760405162461bcd60e51b815260040161013990610eb5565b8051805160009061037457fe5b6020026020010151975080600001516001826000015151038151811061039657fe5b6020026020010151965080602001519350506104df565b63357a3cd960e11b6001600160e01b03198216141561041c5760608c8c60049080926103db9392919061105b565b8101906103e89190610b23565b985060019750909550935090506001600160a01b038616610407578f95505b6104108161069d565b90985096506104df9050565b637a1eb1b960e01b6001600160e01b031982161415610462576104428b6004818f61105b565b81019061044f919061097c565b939a509198509094509092506104df9050565b63079d98d960e11b6001600160e01b0319821614156104c75760608c8c60049080926104909392919061105b565b81019061049d9190610ad1565b83519197509550919250506001106102675760405162461bcd60e51b815260040161013990610eb5565b60405162461bcd60e51b815260040161013990610e3b565b506001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480159061052a57506001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b6105465760405162461bcd60e51b815260040161013990610f1c565b8f6001600160a01b0316866001600160a01b0316146105775760405162461bcd60e51b815260040161013990610eec565b8e6001600160a01b0316856001600160a01b0316146105a85760405162461bcd60e51b815260040161013990610f47565b8215806105c657508d6001600160a01b0316846001600160a01b0316145b6105e25760405162461bcd60e51b815260040161013990610e0d565b8c82146106015760405162461bcd60e51b815260040161013990610fdd565b8b8110156106215760405162461bcd60e51b815260040161013990610fa8565b7f000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff60008c8c82925081818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250969f50949d50909b5050505050505050505050509750975097945050505050565b80516000908190602b11156106c45760405162461bcd60e51b815260040161013990610e7e565b50508051602080830151601760131990930183900490920290920190910151606091821c92911c90565b604080516080810182526000808252602082018190529181019190915260608082015290565b60405180606001604052806060815260200160008152602001606081525090565b600082601f830112610745578081fd5b81356107586107538261103b565b611014565b81815291506020808301908481018184028601820187101561077957600080fd5b60005b848110156107a157813561078f81611083565b8452928201929082019060010161077c565b505050505092915050565b600082601f8301126107bc578081fd5b81356107ca6107538261103b565b818152915060208083019084810160005b848110156107a15781358701606080601f19838c030112156107fc57600080fd5b61080581611014565b858301356108128161109b565b8152604083810135878301528284013567ffffffffffffffff81111561083757600080fd5b6108458d8983880101610861565b91830191909152508652505092820192908201906001016107db565b600082601f830112610871578081fd5b813567ffffffffffffffff811115610887578182fd5b61089a601f8201601f1916602001611014565b91508082528360208285010111156108b157600080fd5b8060208401602084013760009082016020015292915050565b60008060008060008060c087890312156108e2578182fd5b86356108ed81611083565b955060208701356108fd81611083565b9450604087013561090d81611083565b9350606087013561091d81611083565b9598949750929560808101359460a0909101359350915050565b6000806000806080858703121561094c578384fd5b843561095781611083565b9350602085013561096781611083565b93969395505050506040820135916060013590565b600080600080600060a08688031215610993578081fd5b853561099e81611083565b945060208601356109ae81611083565b94979496505050506040830135926060810135926080909101359150565b600080600080600080600060c0888a0312156109e6578081fd5b87356109f181611083565b96506020880135610a0181611083565b95506040880135610a1181611083565b9450606088013593506080880135925060a088013567ffffffffffffffff80821115610a3b578283fd5b818a018b601f820112610a4c578384fd5b8035925081831115610a5c578384fd5b8b6020848301011115610a6d578384fd5b60208101945050508091505092959891949750929550565b600080600060608486031215610a99578081fd5b833567ffffffffffffffff811115610aaf578182fd5b610abb86828701610735565b9660208601359650604090950135949350505050565b60008060008060808587031215610ae6578182fd5b843567ffffffffffffffff811115610afc578283fd5b610b0887828801610735565b97602087013597506040870135966060013595509350505050565b60008060008060808587031215610b38578182fd5b843567ffffffffffffffff811115610b4e578283fd5b610b5a87828801610861565b94505060208501359250604085013591506060850135610b7981611083565b939692955090935050565b60008060408385031215610b96578182fd5b823567ffffffffffffffff80821115610bad578384fd5b81850160808188031215610bbf578485fd5b610bc96080611014565b92508035610bd681611083565b83526020810135610be681611083565b602084015260408181013590840152606081013582811115610c06578586fd5b610c12888284016107ac565b606085015250919660209590950135955050505050565b60008060408385031215610c3b578182fd5b67ffffffffffffffff8084351115610c51578283fd5b8335840160608187031215610c64578384fd5b610c6e6060611014565b8282351115610c7b578485fd5b610c888783358401610735565b815260208083013581830152604083013584811115610ca5578687fd5b80840189601f820112610cb6578788fd5b610cc3610753823561103b565b8135815283810195509150828101885b8235811015610d4357813583016040818e03601f19011215610cf3578a8bfd5b610cfd6040611014565b86820135610d0a8161109b565b815260408201358a811115610d1d578c8dfd5b610d2b8f8983860101610861565b82890152508852509584019590840190600101610cd3565b50505060408301529097950135955050505050565b6001600160a01b0391909116815260200190565b600060018060a01b038516825260208481840152606060408401528351806060850152825b81811015610dad57858101830151858201608001528201610d91565b81811115610dbe5783608083870101525b50601f01601f19169290920160800195945050505050565b6020808252601c908201527f556e697377617020746f6b656e207061746820746f6f2073686f727400000000604082015260600190565b602080825260149082015273135a5cdb585d18da1959081c9958da5c1a595b9d60621b604082015260600190565b60208082526023908201527f556e737570706f727465642030784150492066756e6374696f6e2073656c65636040820152623a37b960e91b606082015260800190565b6020808252601e908201527f556e6973776170563320746f6b656e207061746820746f6f2073686f72740000604082015260600190565b6020808252601d908201527f4d756c7469686f7020746f6b656e207061746820746f6f2073686f7274000000604082015260600190565b60208082526016908201527526b4b9b6b0ba31b432b21034b7383aba103a37b5b2b760511b604082015260600190565b602080825260119082015270115512081b9bdd081cdd5c1c1bdc9d1959607a1b604082015260600190565b60208082526017908201527f4d69736d617463686564206f757470757420746f6b656e000000000000000000604082015260600190565b60208082526010908201526f496e76616c69642063616c6c6461746160801b604082015260600190565b6020808252818101527f4d69736d617463686564206f757470757420746f6b656e207175616e74697479604082015260600190565b6020808252601f908201527f4d69736d61746368656420696e70757420746f6b656e207175616e7469747900604082015260600190565b60405181810167ffffffffffffffff8111828210171561103357600080fd5b604052919050565b600067ffffffffffffffff821115611051578081fd5b5060209081020190565b6000808585111561106a578182fd5b83861115611076578182fd5b5050820193919092039150565b6001600160a01b038116811461109857600080fd5b50565b6001600160e01b03198116811461109857600080fdfea264697066735822122028fc4346855a7b780f541678f7cd4eb2cfbe4cdb002702a9dbab27756ccec46564736f6c634300060a0033

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

000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : _zeroExAddress (address): 0xDef1C0ded9bec7F1a1670819833240f027b25EfF
Arg [1] : _wethAddress (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


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