More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,105 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Multi Swap Eth F... | 5940762 | 374 days ago | IN | 2,600 GLMR | 0.37758663 | ||||
Multi Swap Token... | 5937173 | 374 days ago | IN | 0 GLMR | 1.63912 | ||||
Multi Swap Token... | 5936487 | 374 days ago | IN | 0 GLMR | 0.32352665 | ||||
Multi Swap Token... | 5936485 | 374 days ago | IN | 0 GLMR | 0.12445615 | ||||
Multi Swap Token... | 5936473 | 374 days ago | IN | 0 GLMR | 1.62984 | ||||
Multi Swap Token... | 5936471 | 374 days ago | IN | 0 GLMR | 1.61824 | ||||
Multi Swap Token... | 5936469 | 374 days ago | IN | 0 GLMR | 1.61824 | ||||
Multi Swap Eth F... | 5936458 | 374 days ago | IN | 600 GLMR | 0.16762482 | ||||
Multi Swap Eth F... | 5936456 | 374 days ago | IN | 600 GLMR | 0.16589391 | ||||
Multi Swap Eth F... | 5936453 | 374 days ago | IN | 800 GLMR | 0.21844406 | ||||
Multi Swap Eth F... | 5936395 | 374 days ago | IN | 2,200 GLMR | 0.50948731 | ||||
Multi Swap Eth F... | 5936393 | 374 days ago | IN | 800 GLMR | 0.21710369 | ||||
Multi Swap Eth F... | 5936258 | 374 days ago | IN | 1,200 GLMR | 0.31236398 | ||||
Multi Swap Token... | 5935763 | 374 days ago | IN | 0 GLMR | 0.13172473 | ||||
Multi Swap Token... | 5879231 | 382 days ago | IN | 0 GLMR | 0.11764535 | ||||
Multi Swap Eth F... | 5878196 | 382 days ago | IN | 1,600 GLMR | 0.32457964 | ||||
Multi Swap Eth F... | 5878194 | 382 days ago | IN | 1,600 GLMR | 0.40974919 | ||||
Multi Swap Eth F... | 5878192 | 382 days ago | IN | 1,600 GLMR | 0.37624586 | ||||
Multi Swap Token... | 5877768 | 382 days ago | IN | 0 GLMR | 0.11714891 | ||||
Multi Swap Token... | 5874556 | 383 days ago | IN | 0 GLMR | 0.37137115 | ||||
Multi Swap Token... | 5874554 | 383 days ago | IN | 0 GLMR | 0.75144778 | ||||
Multi Swap Token... | 5872831 | 383 days ago | IN | 0 GLMR | 0.21472819 | ||||
Multi Swap Token... | 5872828 | 383 days ago | IN | 0 GLMR | 0.11999874 | ||||
Multi Swap Token... | 5872825 | 383 days ago | IN | 0 GLMR | 0.11989444 | ||||
Multi Swap Token... | 5872750 | 383 days ago | IN | 0 GLMR | 0.16890634 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5940762 | 374 days ago | 2,600 GLMR | ||||
5936485 | 374 days ago | 600.82642498 GLMR | ||||
5936485 | 374 days ago | 600.82642498 GLMR | ||||
5936458 | 374 days ago | 600 GLMR | ||||
5936456 | 374 days ago | 600 GLMR | ||||
5936453 | 374 days ago | 800 GLMR | ||||
5936395 | 374 days ago | 2,200 GLMR | ||||
5936393 | 374 days ago | 800 GLMR | ||||
5936258 | 374 days ago | 1,200 GLMR | ||||
5879231 | 382 days ago | 600.44899881 GLMR | ||||
5879231 | 382 days ago | 600.44899881 GLMR | ||||
5878196 | 382 days ago | 1,600 GLMR | ||||
5878194 | 382 days ago | 1,600 GLMR | ||||
5878192 | 382 days ago | 1,600 GLMR | ||||
5877768 | 382 days ago | 600.38550583 GLMR | ||||
5877768 | 382 days ago | 600.38550583 GLMR | ||||
5874556 | 383 days ago | 2,798.67443988 GLMR | ||||
5874556 | 383 days ago | 2,798.67443988 GLMR | ||||
5872831 | 383 days ago | 1,400.13347983 GLMR | ||||
5872831 | 383 days ago | 1,400.13347983 GLMR | ||||
5872828 | 383 days ago | 600.37566198 GLMR | ||||
5872828 | 383 days ago | 600.37566198 GLMR | ||||
5872825 | 383 days ago | 601.72930492 GLMR | ||||
5872825 | 383 days ago | 601.72930492 GLMR | ||||
5872750 | 383 days ago | 1,000.84013864 GLMR |
Loading...
Loading
Contract Name:
BeamswapHybridRouter
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "@openzeppelin/contracts/access/Ownable.sol"; import {IWETH} from "./interface/IWETH.sol"; import {IEERC20} from "./interface/IEERC20.sol"; import {IBeamswapExectuor} from "./interface/IBeamswapExectuor.sol"; import {BeamswapTypes} from "./BeamswapTypes.sol"; import "../interfaces/IBeamswapV3Pool.sol"; import "./libraries/TransferHelper.sol"; error BEAMSWAP_AmountOutLow(); error BEAMSWAP_Expired(); error BEAMSWAP_Paused(); error BEAMSWAP_BadFeeOrder(); error BEAMSWAP_FeeTooHigh(); error BEAMSWAP_AddressZero(); error BEAMSWAP_AmountOutMinZero(); error BEAMSWAP_SwapDataZero(); error BEAMSWAP_EthTransferFailed(); contract BeamswapHybridRouter is Ownable, BeamswapTypes { address private _feeDeposit; uint256 private _minFee; uint256 private _maxFee; uint256 private _stableFee = 2; uint256 private constant feeCap = 200; address public immutable WETH; IBeamswapExectuor public _executor; bool private _feeOn; bool private _paused; mapping(address => bool) internal isStable; constructor(address WETH_, address executor_) { _feeDeposit = msg.sender; _minFee = 5; _maxFee = 10; WETH = WETH_; _executor = IBeamswapExectuor(executor_); _feeOn = true; isStable[0x931715FEE2d06333043d11F658C8CE934aC61D0c] = true; isStable[0xCa01a1D0993565291051daFF390892518ACfAD3A] = true; isStable[0xFFFFFFfFea09FB06d082fd1275CD48b191cbCD1d] = true; } modifier ensureDeadline(uint256 deadline) { if (deadline < block.timestamp) revert BEAMSWAP_Expired(); _; } modifier notPaused() { if (_paused) revert BEAMSWAP_Paused(); _; } /** * @notice Upon completion of any swap, the executor contract will transfer its balance of `tokenOut` back * to this contract, final balance checks will be completed, fees will be processed and the results of the * swap will be transferred to the user. */ /** * @notice Performs a multi-path swap using the network token as the principal input and tokens as the principal output. * @param tokenOut Token to recieve after swap. * @param to Address to recieve resulting amount of tokenOut tokens. * @param amountOutMin Minimum amount of tokenOut to recieve, pre optimizer fee. * @param deadline Deadline for executing the swap. The transaction will revert if blocktime exceeds `deadline`. * @param swapData bytes package defining swap parameters for the executor contract. */ function multiSwapEthForTokens( address tokenOut, address to, uint256 amountOutMin, uint256 deadline, bytes calldata swapData ) external payable notPaused ensureDeadline(deadline) returns (uint256 netTokens, uint256 feeAmount) { if (amountOutMin == 0) revert BEAMSWAP_AmountOutMinZero(); if (swapData.length == 0) revert BEAMSWAP_SwapDataZero(); IWETH(WETH).deposit{value: msg.value}(); TransferHelper.safeTransfer(WETH, address(_executor), msg.value); _executor.executeSplitSwap( WETH, tokenOut, msg.value, amountOutMin, swapData ); // Final balance checking netTokens = IEERC20(tokenOut).balanceOf(address(this)); if (netTokens < amountOutMin) revert BEAMSWAP_AmountOutLow(); (feeAmount, netTokens) = _feeOn ? _sendAdminFee(tokenOut, netTokens, amountOutMin, swapData) : (0, netTokens); address receiver = to == address(0) ? msg.sender : to; // Transfer tokens net fees to user. TransferHelper.safeTransfer(tokenOut, receiver, netTokens); } /** * @notice Performs a multi-path swap using tokens as the principal input and ETH as the principal output. * @param tokenIn Input token for swap. * @param to Address to recieve resulting amount of tokenOut tokens. * @param amountIn Amount of `tokenIn` tokens with which to initiate the swap. * @param amountOutMin Minimum amount of tokenOut to recieve, pre optimizer fee. * @param deadline Deadline for executing the swap. The transaction will revert if blocktime exceeds `deadline`. * @param swapData bytes package defining swap parameters for the executor contract. */ function multiSwapTokensForEth( address tokenIn, address to, uint256 amountIn, uint256 amountOutMin, uint256 deadline, bytes calldata swapData ) external notPaused ensureDeadline(deadline) returns (uint256 netTokens, uint256 feeAmount) { if (amountOutMin == 0) revert BEAMSWAP_AmountOutMinZero(); if (swapData.length == 0) revert BEAMSWAP_SwapDataZero(); // Initial transfer of tokens from user TransferHelper.safeTransferFrom( tokenIn, msg.sender, address(_executor), amountIn ); _executor.executeSplitSwap( tokenIn, WETH, amountIn, amountOutMin, swapData ); // Final balance checking netTokens = IEERC20(WETH).balanceOf(address(this)); if (netTokens < amountOutMin) revert BEAMSWAP_AmountOutLow(); (feeAmount, netTokens) = _feeOn ? _sendAdminFee(WETH, netTokens, amountOutMin, swapData) : (0, netTokens); address receiver = to == address(0) ? msg.sender : to; IWETH(WETH).withdraw(netTokens); _sendEth(receiver, netTokens); } /** * @notice Performs a multi-path swap using tokens as the principal input and tokens as the principal output. * @param tokenIn Input token for swap. * @param tokenOut Token to recieve after swap. * @param to Address to recieve resulting amount of tokenOut tokens. * @param amountIn Amount of `tokenIn` tokens with which to initiate the swap. * @param amountOutMin Minimum amount of tokenOut to recieve, pre optimizer fee. * @param deadline Deadline for executing the swap. The transaction will revert if blocktime exceeds `deadline`. * @param swapData bytes package defining swap parameters for the executor contract. */ function multiSwapTokensForTokens( address tokenIn, address tokenOut, address to, uint256 amountIn, uint256 amountOutMin, uint256 deadline, bytes calldata swapData ) external notPaused ensureDeadline(deadline) returns (uint256 netTokens, uint256 feeAmount) { if (amountOutMin == 0) revert BEAMSWAP_AmountOutMinZero(); if (swapData.length == 0) revert BEAMSWAP_SwapDataZero(); // Initial transfer of tokens from user TransferHelper.safeTransferFrom( tokenIn, msg.sender, address(_executor), amountIn ); _executor.executeSplitSwap( tokenIn, tokenOut, amountIn, amountOutMin, swapData ); // Final balance checking netTokens = IEERC20(tokenOut).balanceOf(address(this)); if (netTokens < amountOutMin) revert BEAMSWAP_AmountOutLow(); (feeAmount, netTokens) = _feeOn ? _sendAdminFee(tokenOut, netTokens, amountOutMin, swapData) : (0, netTokens); address receiver = to == address(0) ? msg.sender : to; // Transfer tokens net fees to user. TransferHelper.safeTransfer(tokenOut, receiver, netTokens); } // Fee is equal to half of the difference between netTokens and AmountOutMin, floored at _minFee // and capped at _maxFee. function getFee( uint256 netTokens, uint256 amountOutMin ) public view returns (uint256, uint256) { return _getFee(netTokens, amountOutMin); } function _getFee( uint256 netTokens, uint256 amountOutMin ) internal view returns (uint256, uint256) { uint256 amountDiff = netTokens - amountOutMin; uint256 feePercent = (amountDiff * 10000) / ((amountOutMin + netTokens) / 2) / 2; // in bips if (feePercent < _minFee) { feePercent = _minFee; } else if (feePercent > _maxFee) { feePercent = _maxFee; } uint256 feeAmount = ((netTokens * feePercent) / 10000); uint256 amountNetFee = netTokens - feeAmount; return (feeAmount, amountNetFee); } function _getFeeStable( uint256 netTokens ) internal view returns (uint256, uint256) { uint256 feeAmount = ((netTokens * _stableFee) / 10000); uint256 amountNetFee = netTokens - feeAmount; return (feeAmount, amountNetFee); } function setExecutor(address newExecutor) external onlyOwner { if (newExecutor == address(0)) revert BEAMSWAP_AddressZero(); _executor = IBeamswapExectuor(newExecutor); } function setFeeDeposit(address newFeeDeposit) external onlyOwner { if (newFeeDeposit == address(0)) revert BEAMSWAP_AddressZero(); _feeDeposit = newFeeDeposit; } function setFees( uint256 minFee_, uint256 maxFee_, uint256 stableFee_ ) external onlyOwner { if (minFee_ > maxFee_) revert BEAMSWAP_BadFeeOrder(); if (maxFee_ > feeCap) revert BEAMSWAP_FeeTooHigh(); if (stableFee_ > feeCap) revert BEAMSWAP_FeeTooHigh(); _minFee = minFee_; _maxFee = maxFee_; _stableFee = stableFee_; } function setFeeOn(bool state) external onlyOwner { _feeOn = state; } function setPaused(bool state) external onlyOwner { _paused = state; } function isPaused() external view returns (bool paused) { paused = _paused; } function minFee() public view returns (uint256 fee) { fee = _minFee; } function maxFee() public view returns (uint256 fee) { fee = _maxFee; } function executor() public view returns (address executor) { executor = address(_executor); } function feeDeposit() external view returns (address feeDeposit) { feeDeposit = _feeDeposit; } function feeOn() public view returns (bool isFeeOn) { isFeeOn = _feeOn; } function getStableToken( address token ) external view returns (bool isStable_) { isStable_ = isStable[token]; } function setStableToken(address token, bool isStable_) external onlyOwner { isStable[token] = isStable_; } function rescueTokens(address token, uint256 amount) external onlyOwner { TransferHelper.safeTransfer(token, owner(), amount); } function rescueEth(uint256 amount) external onlyOwner { _sendEth(owner(), amount); } function _sendAdminFee( address token, uint256 netTokens, uint256 amountOutMin, bytes calldata swapData ) internal returns (uint256 feeAmount, uint256 amountNetFee) { bool stableFee = false; // checks if any swap path is using saddle stable bool isStableToken = isStable[token]; // gas saving if (isStableToken) { SplitPaths[] memory splitPaths = abi.decode( swapData, (SplitPaths[]) ); uint length = splitPaths.length; for (uint i; i < length; ) { SplitPaths memory splitPath = splitPaths[i]; SwapDataWrapper[] memory wrappedSwapData = splitPath .wrappedSwapData; address[] memory pools = splitPath.pools; uint256 len = pools.length; for (uint j; j < len; ) { SwapDataWrapper memory wrappedSwapData_ = wrappedSwapData[ j ]; if (wrappedSwapData_.swapType == SwapType.SaddleStable) { stableFee = true; // if any swap path is using saddle stable then stableFee is true break; } if (wrappedSwapData_.swapType == SwapType.UniV3) { IBeamswapV3Pool v3Pool = IBeamswapV3Pool(pools[j]); address token0 = v3Pool.token0(); address token1 = v3Pool.token1(); uint24 fee = v3Pool.fee(); if ( isStable[token0] && isStable[token1] && (fee == 500 || fee == 100) ) { stableFee = true; //if both tokens are stable and fee tier is stable break; } } unchecked { ++j; } } if (stableFee) { break; } unchecked { ++i; } } } (feeAmount, amountNetFee) = !stableFee && !isStableToken ? _getFee(netTokens, amountOutMin) : _getFeeStable(netTokens); // if token is stable and any swap path used saddle, then we charge stable fee if (feeAmount > 0) { TransferHelper.safeTransfer(token, _feeDeposit, feeAmount); } } function _sendEth(address to, uint256 value) private { (bool success, ) = to.call{value: value}(new bytes(0)); if (!success) revert BEAMSWAP_EthTransferFailed(); } receive() external payable { assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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 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: MIT pragma solidity 0.8.19; interface IBeamswapV3Pool { function protocolFees() external view returns (uint128 token0, uint128 token1); function setLmPool(address lmPool) external; function collectProtocol( address recipient, uint128 amount0Requested, uint128 amount1Requested ) external returns (uint128 amount0, uint128 amount1); function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external; function token0() external view returns (address); function token1() external view returns (address); function fee() external view returns (uint24); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract BeamswapTypes { enum SwapType { None, //0 - implemented K, //1 - implemented SaddleStable, //2 - implemented UniV3, //3 - implemented Gmx //4 - implemented } struct SplitPaths { uint256 amountIn; address[] pools; SwapDataWrapper[] wrappedSwapData; } struct SwapDataWrapper { bytes swapData; SwapType swapType; //? enum } struct PlainSwapData { uint8 poolInPos; //1 uint8 poolOutPos; // address tokenOut; //20 uint256 poolFee; //32 } struct UniV3SwapData { uint8 poolInPos; //1 uint8 poolOutPos; // address tokenOut; //20 bytes callbackData; } struct GmxSwapData { address tokenIn; address tokenOut; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IBeamswapExectuor { function executeSplitSwap( address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOutMin, bytes calldata swapData ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IEERC20 { event Approval(address, address, uint256); event Transfer(address, address, uint256); function name() external view returns (string memory); function decimals() external view returns (uint8); function transferFrom(address, address, uint256) external returns (bool); function allowance(address, address) external view returns (uint256); function approve(address, uint256) external returns (bool); function transfer(address, uint256) external returns (bool); function balanceOf(address) external view returns (uint256); function nonces(address) external view returns (uint256); // Only tokens that support permit function permit( address, address, uint256, uint256, uint8, bytes32, bytes32 ) external; // Only tokens that support permit function swap(address, uint256) external; // Only Avalanche bridge tokens function swapSupply(address) external view returns (uint256); // Only Avalanche bridge tokens function totalSupply() external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; error THELP_ApproveFailed(); error THELP_TransferFailed(); error THELP_TransferFromFailed(); error THELP_EthTransferFailed(); library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x095ea7b3, to, value) ); if (!success || !(data.length == 0 || abi.decode(data, (bool)))) revert THELP_ApproveFailed(); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0xa9059cbb, to, value) ); if (!success || !(data.length == 0 || abi.decode(data, (bool)))) revert THELP_TransferFailed(); } function safeTransferFrom( address token, address from, address to, uint value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x23b872dd, from, to, value) ); if (!success || !(data.length == 0 || abi.decode(data, (bool)))) revert THELP_TransferFromFailed(); } function safeTransferETH(address to, uint value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); if (!success) revert THELP_EthTransferFailed(); } }
{ "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":"address","name":"WETH_","type":"address"},{"internalType":"address","name":"executor_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BEAMSWAP_AddressZero","type":"error"},{"inputs":[],"name":"BEAMSWAP_AmountOutLow","type":"error"},{"inputs":[],"name":"BEAMSWAP_AmountOutMinZero","type":"error"},{"inputs":[],"name":"BEAMSWAP_BadFeeOrder","type":"error"},{"inputs":[],"name":"BEAMSWAP_EthTransferFailed","type":"error"},{"inputs":[],"name":"BEAMSWAP_Expired","type":"error"},{"inputs":[],"name":"BEAMSWAP_FeeTooHigh","type":"error"},{"inputs":[],"name":"BEAMSWAP_Paused","type":"error"},{"inputs":[],"name":"BEAMSWAP_SwapDataZero","type":"error"},{"inputs":[],"name":"THELP_TransferFailed","type":"error"},{"inputs":[],"name":"THELP_TransferFromFailed","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":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_executor","outputs":[{"internalType":"contract IBeamswapExectuor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"address","name":"executor","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDeposit","outputs":[{"internalType":"address","name":"feeDeposit","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOn","outputs":[{"internalType":"bool","name":"isFeeOn","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"netTokens","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"getFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getStableToken","outputs":[{"internalType":"bool","name":"isStable_","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"paused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"swapData","type":"bytes"}],"name":"multiSwapEthForTokens","outputs":[{"internalType":"uint256","name":"netTokens","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"swapData","type":"bytes"}],"name":"multiSwapTokensForEth","outputs":[{"internalType":"uint256","name":"netTokens","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"swapData","type":"bytes"}],"name":"multiSwapTokensForTokens","outputs":[{"internalType":"uint256","name":"netTokens","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"stateMutability":"nonpayable","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":"amount","type":"uint256"}],"name":"rescueEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newExecutor","type":"address"}],"name":"setExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeDeposit","type":"address"}],"name":"setFeeDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minFee_","type":"uint256"},{"internalType":"uint256","name":"maxFee_","type":"uint256"},{"internalType":"uint256","name":"stableFee_","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"isStable_","type":"bool"}],"name":"setStableToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405260026004553480156200001657600080fd5b50604051620025333803806200253383398101604081905262000039916200019f565b620000443362000132565b600180546001600160a01b0319163317815560056002819055600a6003556001600160a01b0393841660805280546001600160a81b0319169290931691909117600160a01b1790915560066020527fb90cb5ebb1e4d45d34bcbcc31f8cab1f522991c64aa2003bd190c2261e20fd1f805460ff1990811683179091557fc1aa3f7e4f448bf687821a78dea13d817896a3975a68e16e07850c939b900904805482168317905573ffffffffea09fb06d082fd1275cd48b191cbcd1d6000527f6f3e346997c8a08029bbdbdc0bd38c9b479d6ee67ee0d40e553a1f235e43569580549091169091179055620001d7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200019a57600080fd5b919050565b60008060408385031215620001b357600080fd5b620001be8362000182565b9150620001ce6020840162000182565b90509250929050565b6080516123086200022b6000396000818161019f0152818161040f015281816105e70152818161065c015281816107120152818161078901528181610df101528181610e6a0152610ec401526123086000f3fe60806040526004361061018f5760003560e01c80638da5cb5b116100d6578063c34c08e51161007f578063f2fde38b11610059578063f2fde38b146104ae578063fb1a746f146104ce578063fc4064b3146104ee57600080fd5b8063c34c08e514610450578063cec10c111461046e578063d250185c1461048e57600080fd5b8063abca7290116100b0578063abca7290146103df578063ad5c4648146103fd578063b187bd261461043157600080fd5b80638da5cb5b1461037a578063a9b1a08e146103ac578063aa014a45146103bf57600080fd5b80635535240c11610138578063739f08c811610112578063739f08c81461031a5780637a883d6e1461033a578063840f94981461035a57600080fd5b80635535240c146102ac57806357376198146102e5578063715018a61461030557600080fd5b80631c3c0ea8116101695780631c3c0ea81461024c57806324ec75901461026c5780634f335d0a1461028157600080fd5b806301f59d16146101d357806312a6a6d4146101f757806316c38b3c1461022c57600080fd5b366101ce57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101cc576101cc611a9f565b005b600080fd5b3480156101df57600080fd5b506003545b6040519081526020015b60405180910390f35b34801561020357600080fd5b50610217610212366004611b0c565b61050e565b604080519283526020830191909152016101ee565b34801561023857600080fd5b506101cc610247366004611ba0565b610805565b34801561025857600080fd5b506101cc610267366004611bc4565b61089d565b34801561027857600080fd5b506002546101e4565b34801561028d57600080fd5b50600554600160a01b900460ff165b60405190151581526020016101ee565b3480156102b857600080fd5b5061029c6102c7366004611bc4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156102f157600080fd5b506101cc610300366004611be1565b61094d565b34801561031157600080fd5b506101cc6109c7565b34801561032657600080fd5b506101cc610335366004611c0d565b610a2d565b34801561034657600080fd5b506101cc610355366004611bc4565b610aa5565b34801561036657600080fd5b50610217610375366004611c26565b610b55565b34801561038657600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101ee565b6102176103ba366004611cbe565b610d5a565b3480156103cb57600080fd5b506101cc6103da366004611d3a565b611010565b3480156103eb57600080fd5b506001546001600160a01b0316610394565b34801561040957600080fd5b506103947f000000000000000000000000000000000000000000000000000000000000000081565b34801561043d57600080fd5b50600554600160a81b900460ff1661029c565b34801561045c57600080fd5b506005546001600160a01b0316610394565b34801561047a57600080fd5b506101cc610489366004611d73565b611095565b34801561049a57600080fd5b506102176104a9366004611d9f565b61117b565b3480156104ba57600080fd5b506101cc6104c9366004611bc4565b611194565b3480156104da57600080fd5b50600554610394906001600160a01b031681565b3480156104fa57600080fd5b506101cc610509366004611ba0565b611273565b6005546000908190600160a81b900460ff161561053e5760405163f199645960e01b815260040160405180910390fd5b84428110156105605760405163368179bd60e21b815260040160405180910390fd5b8660000361058157604051631ca596a360e31b815260040160405180910390fd5b60008490036105a357604051635e4ae1ef60e01b815260040160405180910390fd5b6005546105bd908b9033906001600160a01b03168b611306565b60055460405163b5bd447b60e01b81526001600160a01b039091169063b5bd447b90610617908d907f0000000000000000000000000000000000000000000000000000000000000000908d908d908c908c90600401611dc1565b600060405180830381600087803b15801561063157600080fd5b505af1158015610645573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506370a082319150602401602060405180830381865afa1580156106ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d19190611e1c565b9250868310156106f45760405163628d226360e11b815260040160405180910390fd5b600554600160a01b900460ff1661070d5760008361073a565b61073a7f000000000000000000000000000000000000000000000000000000000000000084898888611445565b9350915060006001600160a01b038a16156107555789610757565b335b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156107d557600080fd5b505af11580156107e9573d6000803e3d6000fd5b505050506107f78185611783565b505097509795505050505050565b6000546001600160a01b031633146108645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60058054911515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146108f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b03811661091e5760405163c42313dd60e01b815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6109c3826109bd6000546001600160a01b031690565b8361182f565b5050565b6000546001600160a01b03163314610a215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b610a2b6000611965565b565b6000546001600160a01b03163314610a875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b610aa2610a9c6000546001600160a01b031690565b82611783565b50565b6000546001600160a01b03163314610aff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b038116610b265760405163c42313dd60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000908190600160a81b900460ff1615610b855760405163f199645960e01b815260040160405180910390fd5b8442811015610ba75760405163368179bd60e21b815260040160405180910390fd5b86600003610bc857604051631ca596a360e31b815260040160405180910390fd5b6000849003610bea57604051635e4ae1ef60e01b815260040160405180910390fd5b600554610c04908c9033906001600160a01b03168b611306565b60055460405163b5bd447b60e01b81526001600160a01b039091169063b5bd447b90610c3e908e908e908d908d908c908c90600401611dc1565b600060405180830381600087803b158015610c5857600080fd5b505af1158015610c6c573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038d1692506370a082319150602401602060405180830381865afa158015610cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd89190611e1c565b925086831015610cfb5760405163628d226360e11b815260040160405180910390fd5b600554600160a01b900460ff16610d1457600083610d21565b610d218a84898888611445565b9350915060006001600160a01b038a1615610d3c5789610d3e565b335b9050610d4b8b828661182f565b50509850989650505050505050565b6005546000908190600160a81b900460ff1615610d8a5760405163f199645960e01b815260040160405180910390fd5b8442811015610dac5760405163368179bd60e21b815260040160405180910390fd5b86600003610dcd57604051631ca596a360e31b815260040160405180910390fd5b6000849003610def57604051635e4ae1ef60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e4a57600080fd5b505af1158015610e5e573d6000803e3d6000fd5b5050600554610e9c93507f000000000000000000000000000000000000000000000000000000000000000092506001600160a01b031690503461182f565b60055460405163b5bd447b60e01b81526001600160a01b039091169063b5bd447b90610ef6907f0000000000000000000000000000000000000000000000000000000000000000908d9034908d908c908c90600401611dc1565b600060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038c1692506370a082319150602401602060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190611e1c565b925086831015610fb35760405163628d226360e11b815260040160405180910390fd5b600554600160a01b900460ff16610fcc57600083610fd9565b610fd98984898888611445565b9350915060006001600160a01b03891615610ff45788610ff6565b335b90506110038a828661182f565b5050965096945050505050565b6000546001600160a01b0316331461106a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b81831115611129576040517fac6d9eea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c882111561114b5760405163bd957e8160e01b815260040160405180910390fd5b60c881111561116d5760405163bd957e8160e01b815260040160405180910390fd5b600292909255600355600455565b60008061118884846119c2565b915091505b9250929050565b6000546001600160a01b031633146111ee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b03811661126a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161085b565b610aa281611965565b6000546001600160a01b031633146112cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b60058054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916113989190611e35565b6000604051808303816000865af19150503d80600081146113d5576040519150601f19603f3d011682016040523d82523d6000602084013e6113da565b606091505b50915091508115806114065750805115806114045750808060200190518101906114049190611e64565b155b1561143d576040517ff275e43500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6001600160a01b0385166000908152600660205260408120548190819060ff16801561172c5760006114798688018861207a565b805190915060005b8181101561172857600083828151811061149d5761149d6121e9565b60209081029190910181015160408101519181015180519193509060005b818110156117095760008482815181106114d7576114d76121e9565b60200260200101519050600260048111156114f4576114f46121ff565b8160200151600481111561150a5761150a6121ff565b036115195760019a5050611709565b600381602001516004811115611531576115316121ff565b0361170057600084838151811061154a5761154a6121e9565b602002602001015190506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190612215565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190612215565b90506000836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190612232565b6001600160a01b03841660009081526006602052604090205490915060ff1680156116c757506001600160a01b03821660009081526006602052604090205460ff165b80156116e857508062ffffff166101f414806116e857508062ffffff166064145b156116fb5760019e505050505050611709565b505050505b506001016114bb565b5088156117195750505050611728565b84600101945050505050611481565b5050505b81158015611738575080155b61174a5761174588611a65565b611754565b61175488886119c2565b9094509250831561177757600154611777908a906001600160a01b03168661182f565b50509550959350505050565b604080516000808252602082019092526001600160a01b0384169083906040516117ad9190611e35565b60006040518083038185875af1925050503d80600081146117ea576040519150601f19603f3d011682016040523d82523d6000602084013e6117ef565b606091505b505090508061182a576040517fc27196ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916118b99190611e35565b6000604051808303816000865af19150503d80600081146118f6576040519150601f19603f3d011682016040523d82523d6000602084013e6118fb565b606091505b50915091508115806119275750805115806119255750808060200190518101906119259190611e64565b155b1561195e576040517fe9e9cd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080806119d0848661226d565b905060006002806119e18888612286565b6119eb9190612299565b6119f7846127106122bb565b611a019190612299565b611a0b9190612299565b9050600254811015611a205750600254611a2f565b600354811115611a2f57506003545b6000612710611a3e83896122bb565b611a489190612299565b90506000611a56828961226d565b91989197509095505050505050565b600080600061271060045485611a7b91906122bb565b611a859190612299565b90506000611a93828661226d565b91959194509092505050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0381168114610aa257600080fd5b60008083601f840112611adc57600080fd5b50813567ffffffffffffffff811115611af457600080fd5b60208301915083602082850101111561118d57600080fd5b600080600080600080600060c0888a031215611b2757600080fd5b8735611b3281611ab5565b96506020880135611b4281611ab5565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115611b7357600080fd5b611b7f8a828b01611aca565b989b979a50959850939692959293505050565b8015158114610aa257600080fd5b600060208284031215611bb257600080fd5b8135611bbd81611b92565b9392505050565b600060208284031215611bd657600080fd5b8135611bbd81611ab5565b60008060408385031215611bf457600080fd5b8235611bff81611ab5565b946020939093013593505050565b600060208284031215611c1f57600080fd5b5035919050565b60008060008060008060008060e0898b031215611c4257600080fd5b8835611c4d81611ab5565b97506020890135611c5d81611ab5565b96506040890135611c6d81611ab5565b9550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff811115611c9e57600080fd5b611caa8b828c01611aca565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611cd757600080fd5b8635611ce281611ab5565b95506020870135611cf281611ab5565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d1c57600080fd5b611d2889828a01611aca565b979a9699509497509295939492505050565b60008060408385031215611d4d57600080fd5b8235611d5881611ab5565b91506020830135611d6881611b92565b809150509250929050565b600080600060608486031215611d8857600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611db257600080fd5b50508035926020909101359150565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c0601f19601f8501168301019050979650505050505050565b600060208284031215611e2e57600080fd5b5051919050565b6000825160005b81811015611e565760208186018101518583015201611e3c565b506000920191825250919050565b600060208284031215611e7657600080fd5b8151611bbd81611b92565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611eba57611eba611e81565b60405290565b6040516060810167ffffffffffffffff81118282101715611eba57611eba611e81565b604051601f8201601f1916810167ffffffffffffffff81118282101715611f0c57611f0c611e81565b604052919050565b600067ffffffffffffffff821115611f2e57611f2e611e81565b5060051b60200190565b803560058110611f4757600080fd5b919050565b6000601f8381840112611f5e57600080fd5b82356020611f73611f6e83611f14565b611ee3565b82815260059290921b85018101918181019087841115611f9257600080fd5b8287015b8481101561206e57803567ffffffffffffffff80821115611fb75760008081fd5b908901906040601f19838d038101821315611fd25760008081fd5b611fda611e97565b8885013584811115611fec5760008081fd5b8501603f81018f13611ffe5760008081fd5b898101358581111561201257612012611e81565b6120218b858f84011601611ee3565b95508086528f8582840101111561203a57600093508384fd5b808583018c88013760009086018b015250838152612059858401611f38565b818a0152875250505092840192508301611f96565b50979650505050505050565b6000602080838503121561208d57600080fd5b823567ffffffffffffffff808211156120a557600080fd5b818501915085601f8301126120b957600080fd5b81356120c7611f6e82611f14565b81815260059190911b830184019084810190888311156120e657600080fd5b8585015b838110156121dc5780358581111561210157600080fd5b86016060818c03601f1901121561211757600080fd5b61211f611ec0565b88820135815260408201358781111561213757600080fd5b8201603f81018d1361214857600080fd5b89810135612158611f6e82611f14565b81815260059190911b8201604001908b8101908f83111561217857600080fd5b6040840193505b828410156121a157833561219281611ab5565b8252928c0192908c019061217f565b848d01525050506060820135878111156121ba57600080fd5b6121c88d8b83860101611f4c565b6040830152508452509186019186016120ea565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60006020828403121561222757600080fd5b8151611bbd81611ab5565b60006020828403121561224457600080fd5b815162ffffff81168114611bbd57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561228057612280612257565b92915050565b8082018082111561228057612280612257565b6000826122b657634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176122805761228061225756fea2646970667358221220569827af3004d674f94ab19fd27f7db6355e409144d0bf92ba343cf6d5f7e4c664736f6c63430008130033000000000000000000000000acc15dc74880c9944775448304b263d191c6077f00000000000000000000000015a5d31a64dc779a416e025882bce52022bab6d1
Deployed Bytecode
0x60806040526004361061018f5760003560e01c80638da5cb5b116100d6578063c34c08e51161007f578063f2fde38b11610059578063f2fde38b146104ae578063fb1a746f146104ce578063fc4064b3146104ee57600080fd5b8063c34c08e514610450578063cec10c111461046e578063d250185c1461048e57600080fd5b8063abca7290116100b0578063abca7290146103df578063ad5c4648146103fd578063b187bd261461043157600080fd5b80638da5cb5b1461037a578063a9b1a08e146103ac578063aa014a45146103bf57600080fd5b80635535240c11610138578063739f08c811610112578063739f08c81461031a5780637a883d6e1461033a578063840f94981461035a57600080fd5b80635535240c146102ac57806357376198146102e5578063715018a61461030557600080fd5b80631c3c0ea8116101695780631c3c0ea81461024c57806324ec75901461026c5780634f335d0a1461028157600080fd5b806301f59d16146101d357806312a6a6d4146101f757806316c38b3c1461022c57600080fd5b366101ce57336001600160a01b037f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f16146101cc576101cc611a9f565b005b600080fd5b3480156101df57600080fd5b506003545b6040519081526020015b60405180910390f35b34801561020357600080fd5b50610217610212366004611b0c565b61050e565b604080519283526020830191909152016101ee565b34801561023857600080fd5b506101cc610247366004611ba0565b610805565b34801561025857600080fd5b506101cc610267366004611bc4565b61089d565b34801561027857600080fd5b506002546101e4565b34801561028d57600080fd5b50600554600160a01b900460ff165b60405190151581526020016101ee565b3480156102b857600080fd5b5061029c6102c7366004611bc4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156102f157600080fd5b506101cc610300366004611be1565b61094d565b34801561031157600080fd5b506101cc6109c7565b34801561032657600080fd5b506101cc610335366004611c0d565b610a2d565b34801561034657600080fd5b506101cc610355366004611bc4565b610aa5565b34801561036657600080fd5b50610217610375366004611c26565b610b55565b34801561038657600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101ee565b6102176103ba366004611cbe565b610d5a565b3480156103cb57600080fd5b506101cc6103da366004611d3a565b611010565b3480156103eb57600080fd5b506001546001600160a01b0316610394565b34801561040957600080fd5b506103947f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f81565b34801561043d57600080fd5b50600554600160a81b900460ff1661029c565b34801561045c57600080fd5b506005546001600160a01b0316610394565b34801561047a57600080fd5b506101cc610489366004611d73565b611095565b34801561049a57600080fd5b506102176104a9366004611d9f565b61117b565b3480156104ba57600080fd5b506101cc6104c9366004611bc4565b611194565b3480156104da57600080fd5b50600554610394906001600160a01b031681565b3480156104fa57600080fd5b506101cc610509366004611ba0565b611273565b6005546000908190600160a81b900460ff161561053e5760405163f199645960e01b815260040160405180910390fd5b84428110156105605760405163368179bd60e21b815260040160405180910390fd5b8660000361058157604051631ca596a360e31b815260040160405180910390fd5b60008490036105a357604051635e4ae1ef60e01b815260040160405180910390fd5b6005546105bd908b9033906001600160a01b03168b611306565b60055460405163b5bd447b60e01b81526001600160a01b039091169063b5bd447b90610617908d907f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f908d908d908c908c90600401611dc1565b600060405180830381600087803b15801561063157600080fd5b505af1158015610645573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201527f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031692506370a082319150602401602060405180830381865afa1580156106ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d19190611e1c565b9250868310156106f45760405163628d226360e11b815260040160405180910390fd5b600554600160a01b900460ff1661070d5760008361073a565b61073a7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f84898888611445565b9350915060006001600160a01b038a16156107555789610757565b335b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018690529091507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156107d557600080fd5b505af11580156107e9573d6000803e3d6000fd5b505050506107f78185611783565b505097509795505050505050565b6000546001600160a01b031633146108645760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60058054911515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000546001600160a01b031633146108f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b03811661091e5760405163c42313dd60e01b815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109a75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6109c3826109bd6000546001600160a01b031690565b8361182f565b5050565b6000546001600160a01b03163314610a215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b610a2b6000611965565b565b6000546001600160a01b03163314610a875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b610aa2610a9c6000546001600160a01b031690565b82611783565b50565b6000546001600160a01b03163314610aff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b038116610b265760405163c42313dd60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546000908190600160a81b900460ff1615610b855760405163f199645960e01b815260040160405180910390fd5b8442811015610ba75760405163368179bd60e21b815260040160405180910390fd5b86600003610bc857604051631ca596a360e31b815260040160405180910390fd5b6000849003610bea57604051635e4ae1ef60e01b815260040160405180910390fd5b600554610c04908c9033906001600160a01b03168b611306565b60055460405163b5bd447b60e01b81526001600160a01b039091169063b5bd447b90610c3e908e908e908d908d908c908c90600401611dc1565b600060405180830381600087803b158015610c5857600080fd5b505af1158015610c6c573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038d1692506370a082319150602401602060405180830381865afa158015610cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd89190611e1c565b925086831015610cfb5760405163628d226360e11b815260040160405180910390fd5b600554600160a01b900460ff16610d1457600083610d21565b610d218a84898888611445565b9350915060006001600160a01b038a1615610d3c5789610d3e565b335b9050610d4b8b828661182f565b50509850989650505050505050565b6005546000908190600160a81b900460ff1615610d8a5760405163f199645960e01b815260040160405180910390fd5b8442811015610dac5760405163368179bd60e21b815260040160405180910390fd5b86600003610dcd57604051631ca596a360e31b815260040160405180910390fd5b6000849003610def57604051635e4ae1ef60e01b815260040160405180910390fd5b7f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f6001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e4a57600080fd5b505af1158015610e5e573d6000803e3d6000fd5b5050600554610e9c93507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f92506001600160a01b031690503461182f565b60055460405163b5bd447b60e01b81526001600160a01b039091169063b5bd447b90610ef6907f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f908d9034908d908c908c90600401611dc1565b600060405180830381600087803b158015610f1057600080fd5b505af1158015610f24573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b038c1692506370a082319150602401602060405180830381865afa158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190611e1c565b925086831015610fb35760405163628d226360e11b815260040160405180910390fd5b600554600160a01b900460ff16610fcc57600083610fd9565b610fd98984898888611445565b9350915060006001600160a01b03891615610ff45788610ff6565b335b90506110038a828661182f565b5050965096945050505050565b6000546001600160a01b0316331461106a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b81831115611129576040517fac6d9eea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c882111561114b5760405163bd957e8160e01b815260040160405180910390fd5b60c881111561116d5760405163bd957e8160e01b815260040160405180910390fd5b600292909255600355600455565b60008061118884846119c2565b915091505b9250929050565b6000546001600160a01b031633146111ee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b6001600160a01b03811661126a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161085b565b610aa281611965565b6000546001600160a01b031633146112cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161085b565b60058054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916113989190611e35565b6000604051808303816000865af19150503d80600081146113d5576040519150601f19603f3d011682016040523d82523d6000602084013e6113da565b606091505b50915091508115806114065750805115806114045750808060200190518101906114049190611e64565b155b1561143d576040517ff275e43500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6001600160a01b0385166000908152600660205260408120548190819060ff16801561172c5760006114798688018861207a565b805190915060005b8181101561172857600083828151811061149d5761149d6121e9565b60209081029190910181015160408101519181015180519193509060005b818110156117095760008482815181106114d7576114d76121e9565b60200260200101519050600260048111156114f4576114f46121ff565b8160200151600481111561150a5761150a6121ff565b036115195760019a5050611709565b600381602001516004811115611531576115316121ff565b0361170057600084838151811061154a5761154a6121e9565b602002602001015190506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190612215565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190612215565b90506000836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190612232565b6001600160a01b03841660009081526006602052604090205490915060ff1680156116c757506001600160a01b03821660009081526006602052604090205460ff165b80156116e857508062ffffff166101f414806116e857508062ffffff166064145b156116fb5760019e505050505050611709565b505050505b506001016114bb565b5088156117195750505050611728565b84600101945050505050611481565b5050505b81158015611738575080155b61174a5761174588611a65565b611754565b61175488886119c2565b9094509250831561177757600154611777908a906001600160a01b03168661182f565b50509550959350505050565b604080516000808252602082019092526001600160a01b0384169083906040516117ad9190611e35565b60006040518083038185875af1925050503d80600081146117ea576040519150601f19603f3d011682016040523d82523d6000602084013e6117ef565b606091505b505090508061182a576040517fc27196ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916118b99190611e35565b6000604051808303816000865af19150503d80600081146118f6576040519150601f19603f3d011682016040523d82523d6000602084013e6118fb565b606091505b50915091508115806119275750805115806119255750808060200190518101906119259190611e64565b155b1561195e576040517fe9e9cd1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080806119d0848661226d565b905060006002806119e18888612286565b6119eb9190612299565b6119f7846127106122bb565b611a019190612299565b611a0b9190612299565b9050600254811015611a205750600254611a2f565b600354811115611a2f57506003545b6000612710611a3e83896122bb565b611a489190612299565b90506000611a56828961226d565b91989197509095505050505050565b600080600061271060045485611a7b91906122bb565b611a859190612299565b90506000611a93828661226d565b91959194509092505050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0381168114610aa257600080fd5b60008083601f840112611adc57600080fd5b50813567ffffffffffffffff811115611af457600080fd5b60208301915083602082850101111561118d57600080fd5b600080600080600080600060c0888a031215611b2757600080fd5b8735611b3281611ab5565b96506020880135611b4281611ab5565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115611b7357600080fd5b611b7f8a828b01611aca565b989b979a50959850939692959293505050565b8015158114610aa257600080fd5b600060208284031215611bb257600080fd5b8135611bbd81611b92565b9392505050565b600060208284031215611bd657600080fd5b8135611bbd81611ab5565b60008060408385031215611bf457600080fd5b8235611bff81611ab5565b946020939093013593505050565b600060208284031215611c1f57600080fd5b5035919050565b60008060008060008060008060e0898b031215611c4257600080fd5b8835611c4d81611ab5565b97506020890135611c5d81611ab5565b96506040890135611c6d81611ab5565b9550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff811115611c9e57600080fd5b611caa8b828c01611aca565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215611cd757600080fd5b8635611ce281611ab5565b95506020870135611cf281611ab5565b94506040870135935060608701359250608087013567ffffffffffffffff811115611d1c57600080fd5b611d2889828a01611aca565b979a9699509497509295939492505050565b60008060408385031215611d4d57600080fd5b8235611d5881611ab5565b91506020830135611d6881611b92565b809150509250929050565b600080600060608486031215611d8857600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611db257600080fd5b50508035926020909101359150565b60006001600160a01b03808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c0601f19601f8501168301019050979650505050505050565b600060208284031215611e2e57600080fd5b5051919050565b6000825160005b81811015611e565760208186018101518583015201611e3c565b506000920191825250919050565b600060208284031215611e7657600080fd5b8151611bbd81611b92565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611eba57611eba611e81565b60405290565b6040516060810167ffffffffffffffff81118282101715611eba57611eba611e81565b604051601f8201601f1916810167ffffffffffffffff81118282101715611f0c57611f0c611e81565b604052919050565b600067ffffffffffffffff821115611f2e57611f2e611e81565b5060051b60200190565b803560058110611f4757600080fd5b919050565b6000601f8381840112611f5e57600080fd5b82356020611f73611f6e83611f14565b611ee3565b82815260059290921b85018101918181019087841115611f9257600080fd5b8287015b8481101561206e57803567ffffffffffffffff80821115611fb75760008081fd5b908901906040601f19838d038101821315611fd25760008081fd5b611fda611e97565b8885013584811115611fec5760008081fd5b8501603f81018f13611ffe5760008081fd5b898101358581111561201257612012611e81565b6120218b858f84011601611ee3565b95508086528f8582840101111561203a57600093508384fd5b808583018c88013760009086018b015250838152612059858401611f38565b818a0152875250505092840192508301611f96565b50979650505050505050565b6000602080838503121561208d57600080fd5b823567ffffffffffffffff808211156120a557600080fd5b818501915085601f8301126120b957600080fd5b81356120c7611f6e82611f14565b81815260059190911b830184019084810190888311156120e657600080fd5b8585015b838110156121dc5780358581111561210157600080fd5b86016060818c03601f1901121561211757600080fd5b61211f611ec0565b88820135815260408201358781111561213757600080fd5b8201603f81018d1361214857600080fd5b89810135612158611f6e82611f14565b81815260059190911b8201604001908b8101908f83111561217857600080fd5b6040840193505b828410156121a157833561219281611ab5565b8252928c0192908c019061217f565b848d01525050506060820135878111156121ba57600080fd5b6121c88d8b83860101611f4c565b6040830152508452509186019186016120ea565b5098975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60006020828403121561222757600080fd5b8151611bbd81611ab5565b60006020828403121561224457600080fd5b815162ffffff81168114611bbd57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561228057612280612257565b92915050565b8082018082111561228057612280612257565b6000826122b657634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176122805761228061225756fea2646970667358221220569827af3004d674f94ab19fd27f7db6355e409144d0bf92ba343cf6d5f7e4c664736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000acc15dc74880c9944775448304b263d191c6077f00000000000000000000000015a5d31a64dc779a416e025882bce52022bab6d1
-----Decoded View---------------
Arg [0] : WETH_ (address): 0xAcc15dC74880C9944775448304B263D191c6077F
Arg [1] : executor_ (address): 0x15a5d31a64Dc779A416e025882BCE52022bAb6d1
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000acc15dc74880c9944775448304b263d191c6077f
Arg [1] : 00000000000000000000000015a5d31a64dc779a416e025882bce52022bab6d1
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.