Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 5 from a total of 5 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Swap Exact Outpu... | 20846574 | 438 days ago | IN | 0.04132697 ETH | 0.00140195 | ||||
| Swap Exact Input... | 20747813 | 452 days ago | IN | 0.027 ETH | 0.0002361 | ||||
| Swap Exact Input... | 20650210 | 466 days ago | IN | 0 ETH | 0.00034762 | ||||
| Swap Exact Input... | 20126866 | 539 days ago | IN | 0 ETH | 0.00233815 | ||||
| Swap Exact Input... | 20126857 | 539 days ago | IN | 0.01 ETH | 0.00199778 |
Latest 9 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 20846574 | 438 days ago | 0.00012345 ETH | ||||
| Transfer | 20846574 | 438 days ago | 0.00012345 ETH | ||||
| Deposit | 20846574 | 438 days ago | 0.04132697 ETH | ||||
| Deposit | 20747813 | 452 days ago | 0.027 ETH | ||||
| Transfer | 20650210 | 466 days ago | 0.07985888 ETH | ||||
| Transfer | 20650210 | 466 days ago | 0.07985888 ETH | ||||
| Transfer | 20126866 | 539 days ago | 0.0098886 ETH | ||||
| Transfer | 20126866 | 539 days ago | 0.0098886 ETH | ||||
| Deposit | 20126857 | 539 days ago | 0.01 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
UniswapFeesContract
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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;
}{
"optimizer": {
"enabled": true,
"runs": 1000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.