Source Code
Latest 25 from a total of 3,105 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Multi Swap Eth F... | 5940762 | 650 days ago | IN | 2,600 GLMR | 0.37758663 | ||||
| Multi Swap Token... | 5937173 | 651 days ago | IN | 0 GLMR | 1.63912 | ||||
| Multi Swap Token... | 5936487 | 651 days ago | IN | 0 GLMR | 0.32352665 | ||||
| Multi Swap Token... | 5936485 | 651 days ago | IN | 0 GLMR | 0.12445615 | ||||
| Multi Swap Token... | 5936473 | 651 days ago | IN | 0 GLMR | 1.62984 | ||||
| Multi Swap Token... | 5936471 | 651 days ago | IN | 0 GLMR | 1.61824 | ||||
| Multi Swap Token... | 5936469 | 651 days ago | IN | 0 GLMR | 1.61824 | ||||
| Multi Swap Eth F... | 5936458 | 651 days ago | IN | 600 GLMR | 0.16762482 | ||||
| Multi Swap Eth F... | 5936456 | 651 days ago | IN | 600 GLMR | 0.16589391 | ||||
| Multi Swap Eth F... | 5936453 | 651 days ago | IN | 800 GLMR | 0.21844406 | ||||
| Multi Swap Eth F... | 5936395 | 651 days ago | IN | 2,200 GLMR | 0.50948731 | ||||
| Multi Swap Eth F... | 5936393 | 651 days ago | IN | 800 GLMR | 0.21710369 | ||||
| Multi Swap Eth F... | 5936258 | 651 days ago | IN | 1,200 GLMR | 0.31236398 | ||||
| Multi Swap Token... | 5935763 | 651 days ago | IN | 0 GLMR | 0.13172473 | ||||
| Multi Swap Token... | 5879231 | 659 days ago | IN | 0 GLMR | 0.11764535 | ||||
| Multi Swap Eth F... | 5878196 | 659 days ago | IN | 1,600 GLMR | 0.32457964 | ||||
| Multi Swap Eth F... | 5878194 | 659 days ago | IN | 1,600 GLMR | 0.40974919 | ||||
| Multi Swap Eth F... | 5878192 | 659 days ago | IN | 1,600 GLMR | 0.37624586 | ||||
| Multi Swap Token... | 5877768 | 659 days ago | IN | 0 GLMR | 0.11714891 | ||||
| Multi Swap Token... | 5874556 | 660 days ago | IN | 0 GLMR | 0.37137115 | ||||
| Multi Swap Token... | 5874554 | 660 days ago | IN | 0 GLMR | 0.75144778 | ||||
| Multi Swap Token... | 5872831 | 660 days ago | IN | 0 GLMR | 0.21472819 | ||||
| Multi Swap Token... | 5872828 | 660 days ago | IN | 0 GLMR | 0.11999874 | ||||
| Multi Swap Token... | 5872825 | 660 days ago | IN | 0 GLMR | 0.11989444 | ||||
| Multi Swap Token... | 5872750 | 660 days ago | IN | 0 GLMR | 0.16890634 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 5940762 | 650 days ago | 2,600 GLMR | ||||
| 5936485 | 651 days ago | 600.82642498 GLMR | ||||
| 5936485 | 651 days ago | 600.82642498 GLMR | ||||
| 5936458 | 651 days ago | 600 GLMR | ||||
| 5936456 | 651 days ago | 600 GLMR | ||||
| 5936453 | 651 days ago | 800 GLMR | ||||
| 5936395 | 651 days ago | 2,200 GLMR | ||||
| 5936393 | 651 days ago | 800 GLMR | ||||
| 5936258 | 651 days ago | 1,200 GLMR | ||||
| 5879231 | 659 days ago | 600.44899881 GLMR | ||||
| 5879231 | 659 days ago | 600.44899881 GLMR | ||||
| 5878196 | 659 days ago | 1,600 GLMR | ||||
| 5878194 | 659 days ago | 1,600 GLMR | ||||
| 5878192 | 659 days ago | 1,600 GLMR | ||||
| 5877768 | 659 days ago | 600.38550583 GLMR | ||||
| 5877768 | 659 days ago | 600.38550583 GLMR | ||||
| 5874556 | 660 days ago | 2,798.67443988 GLMR | ||||
| 5874556 | 660 days ago | 2,798.67443988 GLMR | ||||
| 5872831 | 660 days ago | 1,400.13347983 GLMR | ||||
| 5872831 | 660 days ago | 1,400.13347983 GLMR | ||||
| 5872828 | 660 days ago | 600.37566198 GLMR | ||||
| 5872828 | 660 days ago | 600.37566198 GLMR | ||||
| 5872825 | 660 days ago | 601.72930492 GLMR | ||||
| 5872825 | 660 days ago | 601.72930492 GLMR | ||||
| 5872750 | 660 days ago | 1,000.84013864 GLMR |
Cross-Chain Transactions
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
Net Worth in USD
$0.00
Net Worth in GLMR
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.