ETH Price: $3,278.14 (-0.77%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Swap Exact Outpu...208465742024-09-28 3:54:11438 days ago1727495651IN
0xeA7A6319...282Deab65
0.04132697 ETH0.001401957.91570841
Swap Exact Input...207478132024-09-14 9:00:11452 days ago1726304411IN
0xeA7A6319...282Deab65
0.027 ETH0.00023611.48366572
Swap Exact Input...206502102024-08-31 18:01:35466 days ago1725127295IN
0xeA7A6319...282Deab65
0 ETH0.000347621.94657143
Swap Exact Input...201268662024-06-19 16:05:47539 days ago1718813147IN
0xeA7A6319...282Deab65
0 ETH0.0023381512.10939603
Swap Exact Input...201268572024-06-19 16:03:59539 days ago1718813039IN
0xeA7A6319...282Deab65
0.01 ETH0.0019977811.47511088

Latest 9 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer208465742024-09-28 3:54:11438 days ago1727495651
0xeA7A6319...282Deab65
0.00012345 ETH
Transfer208465742024-09-28 3:54:11438 days ago1727495651
0xeA7A6319...282Deab65
0.00012345 ETH
Deposit208465742024-09-28 3:54:11438 days ago1727495651
0xeA7A6319...282Deab65
0.04132697 ETH
Deposit207478132024-09-14 9:00:11452 days ago1726304411
0xeA7A6319...282Deab65
0.027 ETH
Transfer206502102024-08-31 18:01:35466 days ago1725127295
0xeA7A6319...282Deab65
0.07985888 ETH
Transfer206502102024-08-31 18:01:35466 days ago1725127295
0xeA7A6319...282Deab65
0.07985888 ETH
Transfer201268662024-06-19 16:05:47539 days ago1718813147
0xeA7A6319...282Deab65
0.0098886 ETH
Transfer201268662024-06-19 16:05:47539 days ago1718813147
0xeA7A6319...282Deab65
0.0098886 ETH
Deposit201268572024-06-19 16:03:59539 days ago1718813039
0xeA7A6319...282Deab65
0.01 ETH
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapFeesContract

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;
pragma abicoder v2;

import "@openzeppelin/contracts/access/Ownable.sol";
import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
import './IWETH9.sol';

contract UniswapFeesContract is Ownable {
    fallback() external payable {}

    receive() external payable {}

    ISwapRouter public immutable swapRouter;
    IWETH9 public immutable WETH9;
    address public feeRecipient;

    constructor(ISwapRouter _swapRouter, address _feeRecipient, address _WETH9) {
        swapRouter = _swapRouter;
        feeRecipient = _feeRecipient;
        WETH9 = IWETH9(_WETH9);
    }

    function swapExactInputMultihop(uint256 amountInWithFees, uint256 amountIn, uint256 amountOutMin, address tokenIn, bytes calldata swapPath, uint256 amountToSendToFeeRecipient, bool isTokenInNative, bool isTokenOutNative) payable external returns (uint256) {
        _transferTokenInToContract(tokenIn, amountInWithFees, isTokenInNative);
        
        TransferHelper.safeApprove(tokenIn, address(swapRouter), amountIn);

        address swapRecipient = _getSwapRecipient(isTokenOutNative);

        ISwapRouter.ExactInputParams memory params =
            ISwapRouter.ExactInputParams({
                path: swapPath,
                recipient: swapRecipient,
                deadline: block.timestamp,
                amountIn: amountIn,
                amountOutMinimum: amountOutMin
            });

        uint256 amountOut = swapRouter.exactInput(params);
        if (isTokenOutNative) {
            _unwrappAndTransferNativeToken(amountOut, msg.sender);
        }

        TransferHelper.safeTransfer(tokenIn, feeRecipient, amountToSendToFeeRecipient);
        return amountOut;
    }
    
    function swapExactOutputMultihop(uint256 amountInWithFees, uint256 amountOut, uint256 amountInMaximum, address tokenIn, bytes calldata swapPath, uint256 amountToSendToFeeRecipient, bool isTokenInNative, bool isTokenOutNative) payable external returns (uint256) {
        _transferTokenInToContract(tokenIn, amountInWithFees, isTokenInNative);
        TransferHelper.safeApprove(tokenIn, address(swapRouter), amountInMaximum);

        address swapRecipient = _getSwapRecipient(isTokenOutNative);
        ISwapRouter.ExactOutputParams memory params =
            ISwapRouter.ExactOutputParams({
                path: swapPath,
                recipient: swapRecipient,
                deadline: block.timestamp,
                amountOut: amountOut,
                amountInMaximum: amountInMaximum
            });

        uint256 amountIn = swapRouter.exactOutput(params);

        if (isTokenOutNative) {
            _unwrappAndTransferNativeToken(amountOut, msg.sender);
        }

        TransferHelper.safeTransfer(tokenIn, feeRecipient, amountToSendToFeeRecipient);

        if (amountIn < amountInMaximum) {
            TransferHelper.safeApprove(tokenIn, address(swapRouter), 0);
            uint256 amountLeftToSend = amountInMaximum - amountIn;
            if(isTokenInNative){
                _unwrappAndTransferNativeToken(amountLeftToSend, msg.sender);
            } else {
                TransferHelper.safeTransfer(tokenIn, msg.sender, amountLeftToSend);
            }
        }
        return amountIn;
    }

    function _transferTokenInToContract(address tokenIn, uint256 amountIn, bool isTokenInNative) internal {
        if(isTokenInNative) {
            require(msg.value == amountIn, "Incorrect amount of ETH sent");
            WETH9.deposit{value: amountIn}();
        } else {
            TransferHelper.safeTransferFrom(tokenIn, msg.sender, address(this), amountIn);
        }
    }

    function _getSwapRecipient(bool isTokenOutNative) internal view returns (address) {
        if (isTokenOutNative) {
            return address(this);
        } else {
            return msg.sender;
        }
    }

    function _unwrappAndTransferNativeToken(uint256 amount, address recipient) internal {
        WETH9.withdraw(amount);
        TransferHelper.safeTransferETH(recipient, amount);
    }

    /// @notice withdraw token from the contract.
    /// @dev Only the owner can call this function.
    /// @param token The address of the ERC20 token to withdraw.
    /// @param recipient The address of the recipient.
    /// @param amount The amount of tokens to withdraw.
    function withdrawToken(address token, address recipient, uint256 amount) external onlyOwner {
        TransferHelper.safeTransfer(token, recipient, amount);
    }

    function withdrawETH(address payable recipient, uint256 amount) external onlyOwner {
        TransferHelper.safeTransferETH(recipient, amount);
    }

}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.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);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

/// @title Callback for IUniswapV3PoolActions#swap
/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface
interface IUniswapV3SwapCallback {
    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
    /// @dev In the implementation you must pay the pool tokens owed for the swap.
    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.
    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by
    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.
    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by
    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.
    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call
    function uniswapV3SwapCallback(
        int256 amount0Delta,
        int256 amount1Delta,
        bytes calldata data
    ) external;
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.7.5;
pragma abicoder v2;

import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';

/// @title Router token swapping functionality
/// @notice Functions for swapping tokens via Uniswap V3
interface ISwapRouter is IUniswapV3SwapCallback {
    struct ExactInputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
        uint160 sqrtPriceLimitX96;
    }

    /// @notice Swaps `amountIn` of one token for as much as possible of another token
    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata
    /// @return amountOut The amount of the received token
    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);

    struct ExactInputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path
    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata
    /// @return amountOut The amount of the received token
    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);

    struct ExactOutputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint256 deadline;
        uint256 amountOut;
        uint256 amountInMaximum;
        uint160 sqrtPriceLimitX96;
    }

    /// @notice Swaps as little as possible of one token for `amountOut` of another token
    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata
    /// @return amountIn The amount of the input token
    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);

    struct ExactOutputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountOut;
        uint256 amountInMaximum;
    }

    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)
    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata
    /// @return amountIn The amount of the input token
    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.6.0;

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

library TransferHelper {
    /// @notice Transfers tokens from the targeted address to the given destination
    /// @notice Errors with 'STF' if transfer fails
    /// @param token The contract address of the token to be transferred
    /// @param from The originating address from which the tokens will be transferred
    /// @param to The destination address of the transfer
    /// @param value The amount to be transferred
    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        (bool success, bytes memory data) =
            token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'STF');
    }

    /// @notice Transfers tokens from msg.sender to a recipient
    /// @dev Errors with ST if transfer fails
    /// @param token The contract address of the token which will be transferred
    /// @param to The recipient of the transfer
    /// @param value The value of the transfer
    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST');
    }

    /// @notice Approves the stipulated contract to spend the given allowance in the given token
    /// @dev Errors with 'SA' if transfer fails
    /// @param token The contract address of the token to be approved
    /// @param to The target of the approval
    /// @param value The amount of the given token the target will be allowed to spend
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'SA');
    }

    /// @notice Transfers ETH to the recipient address
    /// @dev Fails with `STE`
    /// @param to The destination of the transfer
    /// @param value The value to be transferred
    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'STE');
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.0;

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

/// @title Interface for WETH9
interface IWETH9 is IERC20 {
    /// @notice Deposit ether to get wrapped ether
    function deposit() external payable;

    /// @notice Withdraw wrapped ether to get ether
    function withdraw(uint256) external;
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract ISwapRouter","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_feeRecipient","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"WETH9","outputs":[{"internalType":"contract IWETH9","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWithFees","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"bytes","name":"swapPath","type":"bytes"},{"internalType":"uint256","name":"amountToSendToFeeRecipient","type":"uint256"},{"internalType":"bool","name":"isTokenInNative","type":"bool"},{"internalType":"bool","name":"isTokenOutNative","type":"bool"}],"name":"swapExactInputMultihop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWithFees","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"bytes","name":"swapPath","type":"bytes"},{"internalType":"uint256","name":"amountToSendToFeeRecipient","type":"uint256"},{"internalType":"bool","name":"isTokenInNative","type":"bool"},{"internalType":"bool","name":"isTokenOutNative","type":"bool"}],"name":"swapExactOutputMultihop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b5060405161117838038061117883398101604081905261002f916100cf565b61003833610067565b6001600160a01b03928316608052600180546001600160a01b031916928416929092179091551660a05261011c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100cc57600080fd5b50565b6000806000606084860312156100e457600080fd5b83516100ef816100b7565b6020850151909350610100816100b7565b6040850151909250610111816100b7565b809150509250925092565b60805160a05161100661017260003960008181610161015281816106be01526108bf0152600081816101db01528181610230015281816102de015281816103e601528181610494015261055901526110066000f3fe6080604052600436106100a85760003560e01c80637084d28e116100635780638da5cb5b1161004b5780638da5cb5b146101ab578063c31c9c07146101c9578063f2fde38b146101fd57005b80637084d28e14610183578063715018a61461019657005b8063469048401161009157806346904840146100f75780634782f7791461012f5780634aa4a4fc1461014f57005b806273253b146100b157806301e33667146100d757005b366100af57005b005b6100c46100bf366004610d44565b61021d565b6040519081526020015b60405180910390f35b3480156100e357600080fd5b506100af6100f2366004610e11565b6103a5565b34801561010357600080fd5b50600154610117906001600160a01b031681565b6040516001600160a01b0390911681526020016100ce565b34801561013b57600080fd5b506100af61014a366004610e52565b6103bd565b34801561015b57600080fd5b506101177f000000000000000000000000000000000000000000000000000000000000000081565b6100c4610191366004610d44565b6103d3565b3480156101a257600080fd5b506100af6105be565b3480156101b757600080fd5b506000546001600160a01b0316610117565b3480156101d557600080fd5b506101177f000000000000000000000000000000000000000000000000000000000000000081565b34801561020957600080fd5b506100af610218366004610e7e565b6105d2565b600061022a878b85610667565b610255877f00000000000000000000000000000000000000000000000000000000000000008b610741565b600061026083610875565b905060006040518060a0016040528089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001836001600160a01b031681526020014281526020018c81526020018b815250905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c04b8d59836040518263ffffffff1660e01b81526004016103289190610f2b565b6020604051808303816000875af1158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610f3e565b9050841561037d5761037d8133610890565b600154610395908b906001600160a01b03168961092d565b9c9b505050505050505050505050565b6103ad610a5a565b6103b883838361092d565b505050565b6103c5610a5a565b6103cf8282610ab4565b5050565b60006103e0878b85610667565b61040b877f00000000000000000000000000000000000000000000000000000000000000008a610741565b600061041683610875565b905060006040518060a0016040528089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001836001600160a01b031681526020014281526020018c81526020018b815250905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f28c0498836040518263ffffffff1660e01b81526004016104de9190610f2b565b6020604051808303816000875af11580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105219190610f3e565b90508415610533576105338c33610890565b60015461054b908b906001600160a01b03168961092d565b8a8110156103955761057f8a7f00000000000000000000000000000000000000000000000000000000000000006000610741565b600061058b828d610f57565b905086156105a25761059d8133610890565b6105ad565b6105ad8b338361092d565b509c9b505050505050505050505050565b6105c6610a5a565b6105d06000610b71565b565b6105da610a5a565b6001600160a01b03811661065b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61066481610b71565b50565b8015610735578134146106bc5760405162461bcd60e51b815260206004820152601c60248201527f496e636f727265637420616d6f756e74206f66204554482073656e74000000006044820152606401610652565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b5050505050505050565b6103b883333085610bd9565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b03167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916107b69190610f97565b6000604051808303816000865af19150503d80600081146107f3576040519150601f19603f3d011682016040523d82523d6000602084013e6107f8565b606091505b50915091508180156108225750805115806108225750808060200190518101906108229190610fb3565b61086e5760405162461bcd60e51b815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610652565b5050505050565b60008115610884575030919050565b5033919050565b919050565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b505050506103cf8183610ab4565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916109a29190610f97565b6000604051808303816000865af19150503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5091509150818015610a0e575080511580610a0e575080806020019051810190610a0e9190610fb3565b61086e5760405162461bcd60e51b815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610652565b6000546001600160a01b031633146105d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b604080516000808252602082019092526001600160a01b038416908390604051610ade9190610f97565b60006040518083038185875af1925050503d8060008114610b1b576040519150601f19603f3d011682016040523d82523d6000602084013e610b20565b606091505b50509050806103b85760405162461bcd60e51b815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610652565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691610c569190610f97565b6000604051808303816000865af19150503d8060008114610c93576040519150601f19603f3d011682016040523d82523d6000602084013e610c98565b606091505b5091509150818015610cc2575080511580610cc2575080806020019051810190610cc29190610fb3565b610d0e5760405162461bcd60e51b815260206004820152600360248201527f53544600000000000000000000000000000000000000000000000000000000006044820152606401610652565b505050505050565b6001600160a01b038116811461066457600080fd5b801515811461066457600080fd5b803561088b81610d2b565b60008060008060008060008060006101008a8c031215610d6357600080fd5b8935985060208a0135975060408a0135965060608a0135610d8381610d16565b955060808a013567ffffffffffffffff80821115610da057600080fd5b818c0191508c601f830112610db457600080fd5b813581811115610dc357600080fd5b8d6020828501011115610dd557600080fd5b60208301975080965050505060a08a01359250610df460c08b01610d39565b9150610e0260e08b01610d39565b90509295985092959850929598565b600080600060608486031215610e2657600080fd5b8335610e3181610d16565b92506020840135610e4181610d16565b929592945050506040919091013590565b60008060408385031215610e6557600080fd5b8235610e7081610d16565b946020939093013593505050565b600060208284031215610e9057600080fd5b8135610e9b81610d16565b9392505050565b60005b83811015610ebd578181015183820152602001610ea5565b50506000910152565b6000815160a0845280518060a0860152610ee78160c0870160208501610ea2565b6020848101516001600160a01b0316908601526040808501519086015260608085015190860152608093840151938501939093525050601f01601f19160160c00190565b602081526000610e9b6020830184610ec6565b600060208284031215610f5057600080fd5b5051919050565b81810381811115610f91577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008251610fa9818460208701610ea2565b9190910192915050565b600060208284031215610fc557600080fd5b8151610e9b81610d2b56fea26469706673582212208f43b6ded9071343684b9603a60754364afd29454fa5b8149ab90c620d0e1d1464736f6c63430008110033000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000af5232e4d79732b4024a8b0959233bfef70b9574000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x6080604052600436106100a85760003560e01c80637084d28e116100635780638da5cb5b1161004b5780638da5cb5b146101ab578063c31c9c07146101c9578063f2fde38b146101fd57005b80637084d28e14610183578063715018a61461019657005b8063469048401161009157806346904840146100f75780634782f7791461012f5780634aa4a4fc1461014f57005b806273253b146100b157806301e33667146100d757005b366100af57005b005b6100c46100bf366004610d44565b61021d565b6040519081526020015b60405180910390f35b3480156100e357600080fd5b506100af6100f2366004610e11565b6103a5565b34801561010357600080fd5b50600154610117906001600160a01b031681565b6040516001600160a01b0390911681526020016100ce565b34801561013b57600080fd5b506100af61014a366004610e52565b6103bd565b34801561015b57600080fd5b506101177f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6100c4610191366004610d44565b6103d3565b3480156101a257600080fd5b506100af6105be565b3480156101b757600080fd5b506000546001600160a01b0316610117565b3480156101d557600080fd5b506101177f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156481565b34801561020957600080fd5b506100af610218366004610e7e565b6105d2565b600061022a878b85610667565b610255877f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615648b610741565b600061026083610875565b905060006040518060a0016040528089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001836001600160a01b031681526020014281526020018c81526020018b815250905060007f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615646001600160a01b031663c04b8d59836040518263ffffffff1660e01b81526004016103289190610f2b565b6020604051808303816000875af1158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610f3e565b9050841561037d5761037d8133610890565b600154610395908b906001600160a01b03168961092d565b9c9b505050505050505050505050565b6103ad610a5a565b6103b883838361092d565b505050565b6103c5610a5a565b6103cf8282610ab4565b5050565b60006103e0878b85610667565b61040b877f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615648a610741565b600061041683610875565b905060006040518060a0016040528089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001836001600160a01b031681526020014281526020018c81526020018b815250905060007f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615646001600160a01b031663f28c0498836040518263ffffffff1660e01b81526004016104de9190610f2b565b6020604051808303816000875af11580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105219190610f3e565b90508415610533576105338c33610890565b60015461054b908b906001600160a01b03168961092d565b8a8110156103955761057f8a7f000000000000000000000000e592427a0aece92de3edee1f18e0157c058615646000610741565b600061058b828d610f57565b905086156105a25761059d8133610890565b6105ad565b6105ad8b338361092d565b509c9b505050505050505050505050565b6105c6610a5a565b6105d06000610b71565b565b6105da610a5a565b6001600160a01b03811661065b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61066481610b71565b50565b8015610735578134146106bc5760405162461bcd60e51b815260206004820152601c60248201527f496e636f727265637420616d6f756e74206f66204554482073656e74000000006044820152606401610652565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b5050505050505050565b6103b883333085610bd9565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b03167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916107b69190610f97565b6000604051808303816000865af19150503d80600081146107f3576040519150601f19603f3d011682016040523d82523d6000602084013e6107f8565b606091505b50915091508180156108225750805115806108225750808060200190518101906108229190610fb3565b61086e5760405162461bcd60e51b815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610652565b5050505050565b60008115610884575030919050565b5033919050565b919050565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b505050506103cf8183610ab4565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b03167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916109a29190610f97565b6000604051808303816000865af19150503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5091509150818015610a0e575080511580610a0e575080806020019051810190610a0e9190610fb3565b61086e5760405162461bcd60e51b815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610652565b6000546001600160a01b031633146105d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b604080516000808252602082019092526001600160a01b038416908390604051610ade9190610f97565b60006040518083038185875af1925050503d8060008114610b1b576040519150601f19603f3d011682016040523d82523d6000602084013e610b20565b606091505b50509050806103b85760405162461bcd60e51b815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610652565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691610c569190610f97565b6000604051808303816000865af19150503d8060008114610c93576040519150601f19603f3d011682016040523d82523d6000602084013e610c98565b606091505b5091509150818015610cc2575080511580610cc2575080806020019051810190610cc29190610fb3565b610d0e5760405162461bcd60e51b815260206004820152600360248201527f53544600000000000000000000000000000000000000000000000000000000006044820152606401610652565b505050505050565b6001600160a01b038116811461066457600080fd5b801515811461066457600080fd5b803561088b81610d2b565b60008060008060008060008060006101008a8c031215610d6357600080fd5b8935985060208a0135975060408a0135965060608a0135610d8381610d16565b955060808a013567ffffffffffffffff80821115610da057600080fd5b818c0191508c601f830112610db457600080fd5b813581811115610dc357600080fd5b8d6020828501011115610dd557600080fd5b60208301975080965050505060a08a01359250610df460c08b01610d39565b9150610e0260e08b01610d39565b90509295985092959850929598565b600080600060608486031215610e2657600080fd5b8335610e3181610d16565b92506020840135610e4181610d16565b929592945050506040919091013590565b60008060408385031215610e6557600080fd5b8235610e7081610d16565b946020939093013593505050565b600060208284031215610e9057600080fd5b8135610e9b81610d16565b9392505050565b60005b83811015610ebd578181015183820152602001610ea5565b50506000910152565b6000815160a0845280518060a0860152610ee78160c0870160208501610ea2565b6020848101516001600160a01b0316908601526040808501519086015260608085015190860152608093840151938501939093525050601f01601f19160160c00190565b602081526000610e9b6020830184610ec6565b600060208284031215610f5057600080fd5b5051919050565b81810381811115610f91577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008251610fa9818460208701610ea2565b9190910192915050565b600060208284031215610fc557600080fd5b8151610e9b81610d2b56fea26469706673582212208f43b6ded9071343684b9603a60754364afd29454fa5b8149ab90c620d0e1d1464736f6c63430008110033

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

000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000af5232e4d79732b4024a8b0959233bfef70b9574000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : _swapRouter (address): 0xE592427A0AEce92De3Edee1F18E0157C05861564
Arg [1] : _feeRecipient (address): 0xaf5232e4d79732B4024a8B0959233BfEf70b9574
Arg [2] : _WETH9 (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564
Arg [1] : 000000000000000000000000af5232e4d79732b4024a8b0959233bfef70b9574
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.