Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ETHArbitrageV2
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.24; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {TransferHelper} from "@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol"; import {IYakRouter, Trade, FormattedOffer} from "./IYakRouter.sol"; error ArbitrageError(); error NoRouteAvailableError(); contract ETHArbitrageV2 is Ownable { IYakRouter public immutable YAK_ROUTER; constructor( IYakRouter yakRouter, address owner ) Ownable(owner) { YAK_ROUTER = yakRouter; } function dexArbitrage( address[] calldata adapters, address[] calldata tokens ) external payable { uint256 adaptersLength = adapters.length; uint256 tokensLength = tokens.length; require(adaptersLength == tokensLength, "AT"); require(tokens[0] == YAK_ROUTER.WNATIVE(), "T0-WN"); address[] memory path = new address[](tokensLength + 1); for (uint256 i = 0; i < tokensLength; i++) { path[i] = tokens[i]; } path[tokensLength] = YAK_ROUTER.WNATIVE(); YAK_ROUTER.swapNoSplitToAVAX(Trade({ amountIn: msg.value, amountOut: msg.value + 1, adapters: adapters, path: path }), msg.sender, 0); } function recoverTokens(address tokenAddress) external onlyOwner { TransferHelper.safeTransfer( tokenAddress, owner(), IERC20(tokenAddress).balanceOf(address(this)) ); } function findArbitrageRoutes( address[] calldata tokens, uint256 fromAmount ) external view returns (address[] memory adapters) { uint256 numberOfTokens = tokens.length; require( numberOfTokens > 1, "Token arbitrage require at least 2 tokens" ); adapters = new address[](tokens.length); uint256 amountIn = fromAmount; for ( uint256 tokenInIndex = 0; tokenInIndex < numberOfTokens - 1; tokenInIndex++ ) { FormattedOffer memory offer = YAK_ROUTER.findBestPath( amountIn, tokens[tokenInIndex], tokens[tokenInIndex + 1], 1 ); if (offer.amounts.length < 1) { revert NoRouteAvailableError(); } adapters[tokenInIndex] = offer.adapters[0]; amountIn = offer.amounts[offer.amounts.length - 1]; } FormattedOffer memory lastOffer = YAK_ROUTER.findBestPath( amountIn, tokens[numberOfTokens - 1], tokens[0], 1 ); if (lastOffer.amounts.length < 1) { revert NoRouteAvailableError(); } adapters[numberOfTokens - 1] = lastOffer.adapters[0]; uint256 arbitrageAmountOut = lastOffer.amounts[ lastOffer.amounts.length - 1 ]; if (arbitrageAmountOut < fromAmount) { revert ArbitrageError(); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @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 { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _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 v5.1.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ 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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// 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: MIT pragma solidity ^0.8.0; struct Query { address adapter; address tokenIn; address tokenOut; uint256 amountOut; } struct Offer { bytes amounts; bytes adapters; bytes path; uint256 gasEstimate; } struct FormattedOffer { uint256[] amounts; address[] adapters; address[] path; uint256 gasEstimate; } struct Trade { uint256 amountIn; uint256 amountOut; address[] path; address[] adapters; } interface IYakRouter { event UpdatedTrustedTokens(address[] _newTrustedTokens); event UpdatedAdapters(address[] _newAdapters); event UpdatedMinFee(uint256 _oldMinFee, uint256 _newMinFee); event UpdatedFeeClaimer(address _oldFeeClaimer, address _newFeeClaimer); event YakSwap(address indexed _tokenIn, address indexed _tokenOut, uint256 _amountIn, uint256 _amountOut); // admin function WNATIVE() external view returns (address); function setTrustedTokens(address[] memory _trustedTokens) external; function setAdapters(address[] memory _adapters) external; function setFeeClaimer(address _claimer) external; function setMinFee(uint256 _fee) external; // misc function trustedTokensCount() external view returns (uint256); function adaptersCount() external view returns (uint256); // query function queryAdapter( uint256 _amountIn, address _tokenIn, address _tokenOut, uint8 _index ) external returns (uint256); function queryNoSplit( uint256 _amountIn, address _tokenIn, address _tokenOut, uint8[] calldata _options ) external view returns (Query memory); function queryNoSplit( uint256 _amountIn, address _tokenIn, address _tokenOut ) external view returns (Query memory); function findBestPathWithGas( uint256 _amountIn, address _tokenIn, address _tokenOut, uint256 _maxSteps, uint256 _gasPrice ) external view returns (FormattedOffer memory); function findBestPath( uint256 _amountIn, address _tokenIn, address _tokenOut, uint256 _maxSteps ) external view returns (FormattedOffer memory); // swap function swapNoSplit( Trade calldata _trade, address _to, uint256 _fee ) external; function swapNoSplitFromAVAX( Trade calldata _trade, address _to, uint256 _fee ) external payable; function swapNoSplitToAVAX( Trade calldata _trade, address _to, uint256 _fee ) external; function swapNoSplitWithPermit( Trade calldata _trade, address _to, uint256 _fee, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s ) external; function swapNoSplitToAVAXWithPermit( Trade calldata _trade, address _to, uint256 _fee, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s ) external; }
{ "optimizer": { "enabled": true, "runs": 1000 }, "viaIR": true, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IYakRouter","name":"yakRouter","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ArbitrageError","type":"error"},{"inputs":[],"name":"NoRouteAvailableError","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"YAK_ROUTER","outputs":[{"internalType":"contract IYakRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"adapters","type":"address[]"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"dexArbitrage","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"fromAmount","type":"uint256"}],"name":"findArbitrageRoutes","outputs":[{"internalType":"address[]","name":"adapters","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a0346100f157601f61103c38819003918201601f19168301916001600160401b038311848410176100f65780849260409485528339810103126100f1578051906001600160a01b03821682036100f157602001516001600160a01b03811691908290036100f15781156100db57600080546001600160a01b031981168417825560405193916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3608052610f2f908161010d823960805181818161015d015281816101d9015261064e0152f35b631e4fbdf760e01b600052600060045260246000fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c806316114acd146109d45780632f602904146105dd578063715018a614610577578063781f7db9146101815780637d9b5a5a1461013d5780638da5cb5b146101175763f2fde38b1461006a57600080fd5b34610114576020366003190112610114576001600160a01b0361008b610bc1565b610093610eb7565b1680156100e8576001600160a01b0382548273ffffffffffffffffffffffffffffffffffffffff198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346101145780600319360112610114576001600160a01b036020915416604051908152f35b503461011457806003193601126101145760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101145760403660031901126101145760043567ffffffffffffffff8111610573576101b3903690600401610bdc565b60243590600181111561050957916101ca83610cc7565b91809385926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692600019830183811197885b6104f5578187101561033e5761022461021f888787610c61565b610c87565b6001880180891161032a579061023f61021f8d938989610c61565b604051632604e7a760e11b815260048101949094526001600160a01b0391821660248501521660448301526001606483015281608481895afa90811561031f578a916102fd575b506001815151106102ee576001600160a01b036102a66020830151610cf9565b51166102b2888a610d06565b525180516000198101919082116102da576102d08a92600192610d06565b5197019690610205565b60248b634e487b7160e01b81526011600452fd5b60048a6374e8b73f60e11b8152fd5b61031991503d808c833e6103118183610c3f565b810190610dbc565b38610286565b6040513d8c823e3d90fd5b60248c634e487b7160e01b81526011600452fd5b858a9589958b6104e15761035661021f868484610c61565b91156104cd57916103ae94939161036d8994610c87565b9260405196879485938493632604e7a760e11b8552600485016001600160a01b03606092959481600195608085019885521660208401521660408201520152565b03915afa9182156104c25785926104a6575b50600182515110610497576103ec6001600160a01b036103e36020850151610cf9565b51169185610d06565b52518051600019810191908211610483579061040791610d06565b511061045b5790604051918291602083016020845282518091526020604085019301915b818110610439575050500390f35b82516001600160a01b031684528594506020938401939092019160010161042b565b6004827fca26aaa9000000000000000000000000000000000000000000000000000000008152fd5b602485634e487b7160e01b81526011600452fd5b6004856374e8b73f60e11b8152fd5b6104bb9192503d8087833e6103118183610c3f565b90856103c0565b6040513d87823e3d90fd5b602488634e487b7160e01b81526032600452fd5b602488634e487b7160e01b81526011600452fd5b60248a634e487b7160e01b81526011600452fd5b608460405162461bcd60e51b815260206004820152602960248201527f546f6b656e206172626974726167652072657175697265206174206c6561737460448201527f203220746f6b656e7300000000000000000000000000000000000000000000006064820152fd5b5080fd5b5034610114578060031936011261011457610590610eb7565b806001600160a01b03815473ffffffffffffffffffffffffffffffffffffffff1981168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5060403660031901126101145760043567ffffffffffffffff81116105735761060a903690600401610bdc565b919060243567ffffffffffffffff81116109d05761062c903690600401610bdc565b9081850361098c5781156109785761064381610c87565b916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926040516302ce073d60e61b8152602081600481885afa90811561096d578791610925575b506001600160a01b038091169116036108e157600181018082116108cd576106ba90610cc7565b91855b8281106108a0575050604051906302ce073d60e61b8252602082600481875afa918215610895578692610849575b506106fe6001600160a01b039184610d06565b911690526001340191823411610483576040519261071b84610c0d565b348452602084019081526040840192835261073587610caf565b946107436040519687610c3f565b878652602086019760051b81019036821161084557975b818910610821575050908392916060879501958652813b1561081d578480946107e56107d298604051998a97889687957ff03503820000000000000000000000000000000000000000000000000000000087526060600488015251606487015251608486015251608060a486015260e4850190610d1a565b90518382036063190160c4850152610d1a565b33602483015282604483015203925af18015610810576108025780f35b61080b91610c3f565b818180f35b50604051903d90823e3d90fd5b8480fd5b88356001600160a01b03811681036108415781526020988901980161075a565b8880fd5b8780fd5b9091506020813d60201161088d575b8161086560209383610c3f565b81010312610889576106fe6108816001600160a01b0392610c9b565b9291506106eb565b8580fd5b3d9150610858565b6040513d88823e3d90fd5b806108b161021f6001938686610c61565b6001600160a01b036108c38388610d06565b91169052016106bd565b602486634e487b7160e01b81526011600452fd5b606460405162461bcd60e51b815260206004820152600560248201527f54302d574e0000000000000000000000000000000000000000000000000000006044820152fd5b90506020813d602011610965575b8161094060209383610c3f565b81010312610961576001600160a01b0361095a8192610c9b565b9150610693565b8680fd5b3d9150610933565b6040513d89823e3d90fd5b602484634e487b7160e01b81526032600452fd5b606460405162461bcd60e51b815260206004820152600260248201527f41540000000000000000000000000000000000000000000000000000000000006044820152fd5b8280fd5b503461011457602036600319011261011457806109ef610bc1565b6109f7610eb7565b6001600160a01b0382541690604051917f70a082310000000000000000000000000000000000000000000000000000000083523060048401526020836024816001600160a01b0386165afa8015610bb65784938491610b7b575b5083906040519060208201937fa9059cbb0000000000000000000000000000000000000000000000000000000085526024830152604482015260448152610a99606482610c3f565b51925af13d15610b74573d67ffffffffffffffff8111610b605760405190610acb601f8201601f191660200183610c3f565b81523d83602083013e5b81610b28575b5015610ae45780f35b606460405162461bcd60e51b815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152fd5b8051801592508215610b3d575b505038610adb565b819250906020918101031261057357602001518015158103610573573880610b35565b602483634e487b7160e01b81526041600452fd5b6060610ad5565b9350506020833d602011610bae575b81610b9760209383610c3f565b81010312610ba9578380935190610a51565b505050fd5b3d9150610b8a565b6040513d86823e3d90fd5b600435906001600160a01b0382168203610bd757565b600080fd5b9181601f84011215610bd75782359167ffffffffffffffff8311610bd7576020808501948460051b010111610bd757565b6080810190811067ffffffffffffffff821117610c2957604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610c2957604052565b9190811015610c715760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b0381168103610bd75790565b51906001600160a01b0382168203610bd757565b67ffffffffffffffff8111610c295760051b60200190565b90610cd182610caf565b610cde6040519182610c3f565b8281528092610cef601f1991610caf565b0190602036910137565b805115610c715760200190565b8051821015610c715760209160051b010190565b906020808351928381520192019060005b818110610d385750505090565b82516001600160a01b0316845260209384019390920191600101610d2b565b9080601f83011215610bd7578151610d6e81610caf565b92610d7c6040519485610c3f565b81845260208085019260051b820101928311610bd757602001905b828210610da45750505090565b60208091610db184610c9b565b815201910190610d97565b602081830312610bd75780519067ffffffffffffffff8211610bd7570190608082820312610bd75760405191610df183610c0d565b805167ffffffffffffffff8111610bd757810182601f82011215610bd757805190610e1b82610caf565b91610e296040519384610c3f565b80835260208084019160051b83010191858311610bd757602001905b828210610ea7575050508352602081015167ffffffffffffffff8111610bd75782610e71918301610d57565b6020840152604081015167ffffffffffffffff8111610bd757606092610e98918301610d57565b60408401520151606082015290565b8151815260209182019101610e45565b6001600160a01b03600054163303610ecb57565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fdfea26469706673582212209adda9222654abeb19928ddb44de95b27e3eab02ced506043eb5bc265842b24f64736f6c634300081b00330000000000000000000000006275486f3da664c7f17283c5a30d0ebf6d80cd1c000000000000000000000000c683c8ae60d4f1962f2c8a234d2c3b85cbc26be6
Deployed Bytecode
0x6080604052600436101561001257600080fd5b6000803560e01c806316114acd146109d45780632f602904146105dd578063715018a614610577578063781f7db9146101815780637d9b5a5a1461013d5780638da5cb5b146101175763f2fde38b1461006a57600080fd5b34610114576020366003190112610114576001600160a01b0361008b610bc1565b610093610eb7565b1680156100e8576001600160a01b0382548273ffffffffffffffffffffffffffffffffffffffff198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b80fd5b50346101145780600319360112610114576001600160a01b036020915416604051908152f35b503461011457806003193601126101145760206040516001600160a01b037f0000000000000000000000006275486f3da664c7f17283c5a30d0ebf6d80cd1c168152f35b50346101145760403660031901126101145760043567ffffffffffffffff8111610573576101b3903690600401610bdc565b60243590600181111561050957916101ca83610cc7565b91809385926001600160a01b037f0000000000000000000000006275486f3da664c7f17283c5a30d0ebf6d80cd1c1692600019830183811197885b6104f5578187101561033e5761022461021f888787610c61565b610c87565b6001880180891161032a579061023f61021f8d938989610c61565b604051632604e7a760e11b815260048101949094526001600160a01b0391821660248501521660448301526001606483015281608481895afa90811561031f578a916102fd575b506001815151106102ee576001600160a01b036102a66020830151610cf9565b51166102b2888a610d06565b525180516000198101919082116102da576102d08a92600192610d06565b5197019690610205565b60248b634e487b7160e01b81526011600452fd5b60048a6374e8b73f60e11b8152fd5b61031991503d808c833e6103118183610c3f565b810190610dbc565b38610286565b6040513d8c823e3d90fd5b60248c634e487b7160e01b81526011600452fd5b858a9589958b6104e15761035661021f868484610c61565b91156104cd57916103ae94939161036d8994610c87565b9260405196879485938493632604e7a760e11b8552600485016001600160a01b03606092959481600195608085019885521660208401521660408201520152565b03915afa9182156104c25785926104a6575b50600182515110610497576103ec6001600160a01b036103e36020850151610cf9565b51169185610d06565b52518051600019810191908211610483579061040791610d06565b511061045b5790604051918291602083016020845282518091526020604085019301915b818110610439575050500390f35b82516001600160a01b031684528594506020938401939092019160010161042b565b6004827fca26aaa9000000000000000000000000000000000000000000000000000000008152fd5b602485634e487b7160e01b81526011600452fd5b6004856374e8b73f60e11b8152fd5b6104bb9192503d8087833e6103118183610c3f565b90856103c0565b6040513d87823e3d90fd5b602488634e487b7160e01b81526032600452fd5b602488634e487b7160e01b81526011600452fd5b60248a634e487b7160e01b81526011600452fd5b608460405162461bcd60e51b815260206004820152602960248201527f546f6b656e206172626974726167652072657175697265206174206c6561737460448201527f203220746f6b656e7300000000000000000000000000000000000000000000006064820152fd5b5080fd5b5034610114578060031936011261011457610590610eb7565b806001600160a01b03815473ffffffffffffffffffffffffffffffffffffffff1981168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5060403660031901126101145760043567ffffffffffffffff81116105735761060a903690600401610bdc565b919060243567ffffffffffffffff81116109d05761062c903690600401610bdc565b9081850361098c5781156109785761064381610c87565b916001600160a01b037f0000000000000000000000006275486f3da664c7f17283c5a30d0ebf6d80cd1c16926040516302ce073d60e61b8152602081600481885afa90811561096d578791610925575b506001600160a01b038091169116036108e157600181018082116108cd576106ba90610cc7565b91855b8281106108a0575050604051906302ce073d60e61b8252602082600481875afa918215610895578692610849575b506106fe6001600160a01b039184610d06565b911690526001340191823411610483576040519261071b84610c0d565b348452602084019081526040840192835261073587610caf565b946107436040519687610c3f565b878652602086019760051b81019036821161084557975b818910610821575050908392916060879501958652813b1561081d578480946107e56107d298604051998a97889687957ff03503820000000000000000000000000000000000000000000000000000000087526060600488015251606487015251608486015251608060a486015260e4850190610d1a565b90518382036063190160c4850152610d1a565b33602483015282604483015203925af18015610810576108025780f35b61080b91610c3f565b818180f35b50604051903d90823e3d90fd5b8480fd5b88356001600160a01b03811681036108415781526020988901980161075a565b8880fd5b8780fd5b9091506020813d60201161088d575b8161086560209383610c3f565b81010312610889576106fe6108816001600160a01b0392610c9b565b9291506106eb565b8580fd5b3d9150610858565b6040513d88823e3d90fd5b806108b161021f6001938686610c61565b6001600160a01b036108c38388610d06565b91169052016106bd565b602486634e487b7160e01b81526011600452fd5b606460405162461bcd60e51b815260206004820152600560248201527f54302d574e0000000000000000000000000000000000000000000000000000006044820152fd5b90506020813d602011610965575b8161094060209383610c3f565b81010312610961576001600160a01b0361095a8192610c9b565b9150610693565b8680fd5b3d9150610933565b6040513d89823e3d90fd5b602484634e487b7160e01b81526032600452fd5b606460405162461bcd60e51b815260206004820152600260248201527f41540000000000000000000000000000000000000000000000000000000000006044820152fd5b8280fd5b503461011457602036600319011261011457806109ef610bc1565b6109f7610eb7565b6001600160a01b0382541690604051917f70a082310000000000000000000000000000000000000000000000000000000083523060048401526020836024816001600160a01b0386165afa8015610bb65784938491610b7b575b5083906040519060208201937fa9059cbb0000000000000000000000000000000000000000000000000000000085526024830152604482015260448152610a99606482610c3f565b51925af13d15610b74573d67ffffffffffffffff8111610b605760405190610acb601f8201601f191660200183610c3f565b81523d83602083013e5b81610b28575b5015610ae45780f35b606460405162461bcd60e51b815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152fd5b8051801592508215610b3d575b505038610adb565b819250906020918101031261057357602001518015158103610573573880610b35565b602483634e487b7160e01b81526041600452fd5b6060610ad5565b9350506020833d602011610bae575b81610b9760209383610c3f565b81010312610ba9578380935190610a51565b505050fd5b3d9150610b8a565b6040513d86823e3d90fd5b600435906001600160a01b0382168203610bd757565b600080fd5b9181601f84011215610bd75782359167ffffffffffffffff8311610bd7576020808501948460051b010111610bd757565b6080810190811067ffffffffffffffff821117610c2957604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610c2957604052565b9190811015610c715760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b0381168103610bd75790565b51906001600160a01b0382168203610bd757565b67ffffffffffffffff8111610c295760051b60200190565b90610cd182610caf565b610cde6040519182610c3f565b8281528092610cef601f1991610caf565b0190602036910137565b805115610c715760200190565b8051821015610c715760209160051b010190565b906020808351928381520192019060005b818110610d385750505090565b82516001600160a01b0316845260209384019390920191600101610d2b565b9080601f83011215610bd7578151610d6e81610caf565b92610d7c6040519485610c3f565b81845260208085019260051b820101928311610bd757602001905b828210610da45750505090565b60208091610db184610c9b565b815201910190610d97565b602081830312610bd75780519067ffffffffffffffff8211610bd7570190608082820312610bd75760405191610df183610c0d565b805167ffffffffffffffff8111610bd757810182601f82011215610bd757805190610e1b82610caf565b91610e296040519384610c3f565b80835260208084019160051b83010191858311610bd757602001905b828210610ea7575050508352602081015167ffffffffffffffff8111610bd75782610e71918301610d57565b6020840152604081015167ffffffffffffffff8111610bd757606092610e98918301610d57565b60408401520151606082015290565b8151815260209182019101610e45565b6001600160a01b03600054163303610ecb57565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fdfea26469706673582212209adda9222654abeb19928ddb44de95b27e3eab02ced506043eb5bc265842b24f64736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006275486f3da664c7f17283c5a30d0ebf6d80cd1c000000000000000000000000c683c8ae60d4f1962f2c8a234d2c3b85cbc26be6
-----Decoded View---------------
Arg [0] : yakRouter (address): 0x6275486f3dA664c7f17283c5A30d0ebF6d80CD1c
Arg [1] : owner (address): 0xC683C8aE60d4f1962F2c8a234d2c3b85cBc26be6
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006275486f3da664c7f17283c5a30d0ebf6d80cd1c
Arg [1] : 000000000000000000000000c683c8ae60d4f1962f2c8a234d2c3b85cbc26be6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.