ETH Price: $2,237.88 (-6.45%)

Contract

0x6Ab2fB1fc6f43672bE731b11Db2Ba9147B1f6add
 

Overview

ETH Balance

0.138351772157565439 ETH

Eth Value

$309.61 (@ $2,237.88/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Swap Exact ETH F...180312072023-08-31 1:14:35373 days ago1693444475IN
0x6Ab2fB1f...47B1f6add
1.00046332 ETH0.0026485816.74573976
Swap Exact ETH F...178930562023-08-11 17:12:11392 days ago1691773931IN
0x6Ab2fB1f...47B1f6add
0.00382957 ETH0.004123625.51575463
Swap Exact ETH F...177603292023-07-24 3:37:11411 days ago1690169831IN
0x6Ab2fB1f...47B1f6add
15.99176503 ETH0.002441416.50744565
Swap Exact ETH F...173116142023-05-22 1:35:23474 days ago1684719323IN
0x6Ab2fB1f...47B1f6add
0.05066366 ETH0.0040160626.37985023
Swap Exact ETH F...173114542023-05-22 1:02:59474 days ago1684717379IN
0x6Ab2fB1f...47B1f6add
0.10086426 ETH0.0053138232.2822515
Swap Exact ETH F...171972792023-05-05 22:03:11490 days ago1683324191IN
0x6Ab2fB1f...47B1f6add
0.0312247 ETH0.02383239164.1553338
Swap Exact ETH F...171970602023-05-05 21:19:11490 days ago1683321551IN
0x6Ab2fB1f...47B1f6add
0.02944418 ETH0.02364222151.18153457
Swap Exact ETH F...171253452023-04-25 19:27:11500 days ago1682450831IN
0x6Ab2fB1f...47B1f6add
1.20109369 ETH0.0062019441.07002312
Swap Exact ETH F...171241052023-04-25 15:15:59500 days ago1682435759IN
0x6Ab2fB1f...47B1f6add
2.60113339 ETH0.0064270642.56078181
Swap Exact Token...171180532023-04-24 18:53:59501 days ago1682362439IN
0x6Ab2fB1f...47B1f6add
0.00175284 ETH0.009183354.03345271
Swap Exact Token...171169972023-04-24 15:20:47501 days ago1682349647IN
0x6Ab2fB1f...47B1f6add
0.00214732 ETH0.0112503166.18765627
Swap Exact ETH F...171156542023-04-24 10:48:59501 days ago1682333339IN
0x6Ab2fB1f...47B1f6add
2.10092961 ETH0.0052715134.90858639
Swap Exact ETH F...171130192023-04-24 1:56:47502 days ago1682301407IN
0x6Ab2fB1f...47B1f6add
3.00101 ETH0.0057273937.92750867
Swap ETH For Exa...171015182023-04-22 11:14:35503 days ago1682162075IN
0x6Ab2fB1f...47B1f6add
0.71604821 ETH0.0067624134.89649817
Swap Exact ETH F...171013002023-04-22 10:30:35503 days ago1682159435IN
0x6Ab2fB1f...47B1f6add
0.6358525 ETH0.0048454231.59657381
Swap Exact ETH F...170981702023-04-21 23:59:35504 days ago1682121575IN
0x6Ab2fB1f...47B1f6add
0.15096806 ETH0.0054608137.57138865
Swap Exact Token...170765252023-04-18 22:30:47507 days ago1681857047IN
0x6Ab2fB1f...47B1f6add
0.00212056 ETH0.0129309658.70398048
Swap Exact ETH F...170762762023-04-18 21:39:47507 days ago1681853987IN
0x6Ab2fB1f...47B1f6add
1.80213015 ETH0.0121291977.82508337
Swap Exact ETH F...170760792023-04-18 21:00:11507 days ago1681851611IN
0x6Ab2fB1f...47B1f6add
2.00178468 ETH0.0101203167.01794949
Swap Exact Token...170721912023-04-18 7:47:47507 days ago1681804067IN
0x6Ab2fB1f...47B1f6add
0.00155449 ETH0.0096305434.96777013
Swap Exact ETH F...170707742023-04-18 2:58:11508 days ago1681786691IN
0x6Ab2fB1f...47B1f6add
1.83089926 ETH0.0050994233.76898503
Swap Exact ETH F...170707332023-04-18 2:49:47508 days ago1681786187IN
0x6Ab2fB1f...47B1f6add
3.50131677 ETH0.0075609644.97654076
Swap ETH For Exa...168896762023-03-23 10:34:11533 days ago1679567651IN
0x6Ab2fB1f...47B1f6add
0.00708248 ETH0.0018849112.32799571
Swap ETH For Exa...168896452023-03-23 10:27:47533 days ago1679567267IN
0x6Ab2fB1f...47B1f6add
0.00681742 ETH0.0006513
Swap Exact Token...168863802023-03-22 23:24:47534 days ago1679527487IN
0x6Ab2fB1f...47B1f6add
0.00066786 ETH0.0034153417.42371365
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
180312072023-08-31 1:14:35373 days ago1693444475
0x6Ab2fB1f...47B1f6add
1 ETH
180312072023-08-31 1:14:35373 days ago1693444475
0x6Ab2fB1f...47B1f6add
0.00046332 ETH
178930562023-08-11 17:12:11392 days ago1691773931
0x6Ab2fB1f...47B1f6add
0.00311143 ETH
178930562023-08-11 17:12:11392 days ago1691773931
0x6Ab2fB1f...47B1f6add
0.00071814 ETH
177603292023-07-24 3:37:11411 days ago1690169831
0x6Ab2fB1f...47B1f6add
15.99133333 ETH
177603292023-07-24 3:37:11411 days ago1690169831
0x6Ab2fB1f...47B1f6add
0.0004317 ETH
173116142023-05-22 1:35:23474 days ago1684719323
0x6Ab2fB1f...47B1f6add
0.05 ETH
173116142023-05-22 1:35:23474 days ago1684719323
0x6Ab2fB1f...47B1f6add
0.00066366 ETH
173114542023-05-22 1:02:59474 days ago1684717379
0x6Ab2fB1f...47B1f6add
0.1 ETH
173114542023-05-22 1:02:59474 days ago1684717379
0x6Ab2fB1f...47B1f6add
0.00086426 ETH
171972792023-05-05 22:03:11490 days ago1683324191
0x6Ab2fB1f...47B1f6add
0.027 ETH
171972792023-05-05 22:03:11490 days ago1683324191
0x6Ab2fB1f...47B1f6add
0.0042247 ETH
171970602023-05-05 21:19:11490 days ago1683321551
0x6Ab2fB1f...47B1f6add
0.0253 ETH
171970602023-05-05 21:19:11490 days ago1683321551
0x6Ab2fB1f...47B1f6add
0.00414418 ETH
171253452023-04-25 19:27:11500 days ago1682450831
0x6Ab2fB1f...47B1f6add
1.2 ETH
171253452023-04-25 19:27:11500 days ago1682450831
0x6Ab2fB1f...47B1f6add
0.00109369 ETH
171241052023-04-25 15:15:59500 days ago1682435759
0x6Ab2fB1f...47B1f6add
2.6 ETH
171241052023-04-25 15:15:59500 days ago1682435759
0x6Ab2fB1f...47B1f6add
0.00113339 ETH
171180532023-04-24 18:53:59501 days ago1682362439
0x6Ab2fB1f...47B1f6add
0.00175284 ETH
171169972023-04-24 15:20:47501 days ago1682349647
0x6Ab2fB1f...47B1f6add
0.00214732 ETH
171156542023-04-24 10:48:59501 days ago1682333339
0x6Ab2fB1f...47B1f6add
2.1 ETH
171156542023-04-24 10:48:59501 days ago1682333339
0x6Ab2fB1f...47B1f6add
0.00092961 ETH
171130192023-04-24 1:56:47502 days ago1682301407
0x6Ab2fB1f...47B1f6add
3 ETH
171130192023-04-24 1:56:47502 days ago1682301407
0x6Ab2fB1f...47B1f6add
0.00101 ETH
171015182023-04-22 11:14:35503 days ago1682162075
0x6Ab2fB1f...47B1f6add
0.00071418 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BxSwap

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : BxSwap.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.4;

import '@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol';
import '@openzeppelin/contracts/token/ERC20/IERC20.sol';
import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol';

contract BxSwap {
    using SafeERC20 for IERC20;

    /// @notice Receive function to allow contract to accept ETH
    receive() external payable {}

    /// @notice Fallback function in case receive function is not matched
    fallback() external payable {}

    /// @notice Address to send tip funds to
    address payable public bxAddress;

    /// @notice Trade details
    struct Trade {
        uint amountIn;
        uint amountOut;
        address[] path;
        address payable to;
        uint256 deadline;
    }

    constructor(address payable _bxAddress) {
        bxAddress = _bxAddress;
    }

    /**
     * @notice Swap ETH for tokens and pay amount of ETH input as tip
     * @param router Uniswap V2-compliant Router contract
     * @param trade Trade details
     * @param tipAmount amount of ETH to pay as tip
     */
    function swapExactETHForTokensWithTip(
        IUniswapV2Router02 router,
        Trade calldata trade,
        uint256 tipAmount
    ) external payable {
        require(tipAmount > 0, "tip amount must be > 0");
        require(msg.value >= tipAmount, "must send ETH to cover tip");

        _tip(tipAmount);
        uint amountIn = msg.value - tipAmount;
        _swapExactETHForTokens(router, amountIn, trade.amountOut, trade.path, trade.to, trade.deadline);
    }

    /**
     * @notice Swap ETH for tokens and pay amount of ETH input as tip
     * @param router Uniswap V2-compliant Router contract
     * @param trade Trade details
     * @param tipAmount amount of ETH to pay as tip
     */
    function swapETHForExactTokensWithTip(
        IUniswapV2Router02 router,
        Trade calldata trade,
        uint256 tipAmount
    ) external payable {
        require(tipAmount > 0, "tip amount must be > 0");
        require(msg.value >= tipAmount, "must send ETH to cover tip");

        _tip(tipAmount);
        uint amountIn = msg.value - tipAmount;
        _swapETHForExactTokens(router, amountIn, trade.amountOut, trade.path, trade.to, trade.deadline);
    }


    /**
     * @notice Swap tokens for tokens and pay ETH amount as tip
     * @param router Uniswap V2-compliant Router contract
     * @param trade Trade details
     */
    function swapExactTokensForTokensWithTip(
        IUniswapV2Router02 router,
        Trade calldata trade
    ) external payable {
        require(msg.value > 0, "tip amount must be > 0");
        _tip(msg.value);
        _swapExactTokensForTokens(router, trade.amountIn, trade.amountOut, trade.path, trade.to, trade.deadline);
    }

    /**
      * @notice Swap tokens for tokens and pay ETH amount as tip
      * @param router Uniswap V2-compliant Router contract
      * @param trade Trade details
      */
    function swapTokensForExactTokensWithTip(
        IUniswapV2Router02 router,
        Trade calldata trade
    ) external payable {
        require(msg.value > 0, "tip amount must be > 0");
        _tip(msg.value);
        _swapTokensForExactTokens(router, trade.amountOut, trade.amountIn, trade.path, trade.to, trade.deadline);
    }

    /**
     * @notice Swap tokens for ETH and pay amount of ETH as tip
     * @param router Uniswap V2-compliant Router contract
     * @param trade Trade details
     */
    function swapExactTokensForETHWithTip(
        IUniswapV2Router02 router,
        Trade calldata trade
    ) external payable {
        require(msg.value > 0, "tip amount must be > 0");
        _tip(msg.value);
        _swapExactTokensForETH(router, trade.amountIn, trade.amountOut, trade.path, trade.to, trade.deadline);
    }


    /**
     * @notice Swap tokens for ETH and pay amount of ETH as tip
     * @param router Uniswap V2-compliant Router contract
     * @param trade Trade details
     */
    function swapTokensForExactETHWithTip(
        IUniswapV2Router02 router,
        Trade calldata trade
    ) external payable {
        require(msg.value > 0, "tip amount must be > 0");
        _tip(msg.value);
        _swapTokensForExactETH(router, trade.amountOut, trade.amountIn, trade.path, trade.to, trade.deadline);
    }

    /**
        INTERNAL FUNCTIONS
     */

    function _tip(uint amount) internal {
        bxAddress.transfer(amount);
    }

    /**
     * @notice Internal implementation of swap ETH for tokens
     * @param amountIn Amount to swap
     * @param amountOutMin Minimum amount out
     * @param path Path for swap
     * @param deadline Block timestamp deadline for trade
     */
    function _swapExactETHForTokens(
        IUniswapV2Router02 router,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) internal {
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountIn}(amountOutMin, path, to, deadline);
    }

    /**
     * @notice Internal implementation of swap ETH for tokens
     * @param amountOut Amount of ETH out
     * @param amountInMax Max amount in
     * @param path Path for swap
     * @param to Address to receive ETH
     * @param deadline Block timestamp deadline for trade
     */
    function _swapETHForExactTokens(
        IUniswapV2Router02 router,
        uint amountInMax,
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) internal {
        router.swapETHForExactTokens{value: amountInMax}(amountOut, path, to, deadline);
    }

    /**
     * @notice Internal implementation of swap tokens for tokens
     * @param amountIn Amount to swap
     * @param amountOutMin Minimum amount out
     * @param path Path for swap
     * @param deadline Block timestamp deadline for trade
     */
    function _swapExactTokensForTokens(
        IUniswapV2Router02 router,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) internal {
        IERC20 fromToken = IERC20(path[0]);
        fromToken.safeTransferFrom(msg.sender, address(this), amountIn);
        fromToken.safeIncreaseAllowance(address(router), amountIn);
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, deadline);
    }

    /**
     * @notice Internal implementation of swap tokens for tokens
     * @param amountOut Amount of tokens out
     * @param amountInMax Max amount in
     * @param path Path for swap
     * @param to Address to receive tokens
     * @param deadline Block timestamp deadline for trade
     */
    function _swapTokensForExactTokens(
        IUniswapV2Router02 router,
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) internal {
        IERC20 fromToken = IERC20(path[0]);
        fromToken.safeTransferFrom(msg.sender, address(this), amountInMax);
        fromToken.safeIncreaseAllowance(address(router), amountInMax);
        router.swapTokensForExactTokens(amountOut, amountInMax, path, to, deadline);
    }

    /**
     * @notice Internal implementation of swap tokens for ETH
     * @param amountIn Amount to swap
     * @param amountOutMin Minimum amount out
     * @param path Path for swap
     * @param deadline Block timestamp deadline for trade
     */
    function _swapExactTokensForETH(
        IUniswapV2Router02 router,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) internal {
        IERC20 fromToken = IERC20(path[0]);
        fromToken.safeTransferFrom(msg.sender, address(this), amountIn);
        fromToken.safeIncreaseAllowance(address(router), amountIn);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, deadline);
    }

    /**
     * @notice Internal implementation of swap tokens for ETH
     * @param amountOut Amount of ETH out
     * @param amountInMax Max amount in
     * @param path Path for swap
     * @param to Address to receive ETH
     * @param deadline Block timestamp deadline for trade
     */
    function _swapTokensForExactETH(
        IUniswapV2Router02 router,
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) internal {
        IERC20 fromToken = IERC20(path[0]);
        fromToken.safeTransferFrom(msg.sender, address(this), amountInMax);
        fromToken.safeIncreaseAllowance(address(router), amountInMax);
        router.swapTokensForExactETH(amountOut, amountInMax, path, to, deadline);
    }
}

File 2 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 3 of 6 : SafeERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../IERC20.sol";
import "../../../utils/Address.sol";

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

File 4 of 6 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 5 of 6 : IUniswapV2Router01.sol
pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

File 6 of 6 : IUniswapV2Router02.sol
pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_bxAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"bxAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"},{"components":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct BxSwap.Trade","name":"trade","type":"tuple"},{"internalType":"uint256","name":"tipAmount","type":"uint256"}],"name":"swapETHForExactTokensWithTip","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"},{"components":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct BxSwap.Trade","name":"trade","type":"tuple"},{"internalType":"uint256","name":"tipAmount","type":"uint256"}],"name":"swapExactETHForTokensWithTip","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"},{"components":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct BxSwap.Trade","name":"trade","type":"tuple"}],"name":"swapExactTokensForETHWithTip","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"},{"components":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct BxSwap.Trade","name":"trade","type":"tuple"}],"name":"swapExactTokensForTokensWithTip","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"},{"components":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct BxSwap.Trade","name":"trade","type":"tuple"}],"name":"swapTokensForExactETHWithTip","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Router02","name":"router","type":"address"},{"components":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct BxSwap.Trade","name":"trade","type":"tuple"}],"name":"swapTokensForExactTokensWithTip","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162001c7038038062001c70833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200010f565b6000815190506200008f81620000f5565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000d5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200010081620000c1565b81146200010c57600080fd5b50565b611b51806200011f6000396000f3fe6080604052600436106100745760003560e01c80637793ed0a1161004e5780637793ed0a146100d157806383e1f1bc146100ed578063848599d7146101095780638f61f13d146101345761007b565b8063072438261461007d578063341246df146100995780633f03a709146100b55761007b565b3661007b57005b005b6100976004803603810190610092919061122c565b610150565b005b6100b360048036038101906100ae91906111d8565b61022c565b005b6100cf60048036038101906100ca91906111d8565b6102b7565b005b6100eb60048036038101906100e691906111d8565b610342565b005b610107600480360381019061010291906111d8565b6103cd565b005b34801561011557600080fd5b5061011e610458565b60405161012b919061149d565b60405180910390f35b61014e6004803603810190610149919061122c565b61047c565b005b60008111610193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018a90611583565b60405180910390fd5b803410156101d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cd906115a3565b60405180910390fd5b6101df81610558565b600081346101ed919061181c565b90506102268482856020013586806040019061020991906116ad565b88606001602081019061021c9190611145565b89608001356105c2565b50505050565b6000341161026f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026690611583565b60405180910390fd5b61027834610558565b6102b3828260000135836020013584806040019061029691906116ad565b8660600160208101906102a99190611145565b8760800135610665565b5050565b600034116102fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f190611583565b60405180910390fd5b61030334610558565b61033e828260000135836020013584806040019061032191906116ad565b8660600160208101906103349190611145565b876080013561078f565b5050565b60003411610385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037c90611583565b60405180910390fd5b61038e34610558565b6103c982826020013583600001358480604001906103ac91906116ad565b8660600160208101906103bf9190611145565b87608001356108b9565b5050565b60003411610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790611583565b60405180910390fd5b61041934610558565b610454828260200135836000013584806040019061043791906116ad565b86606001602081019061044a9190611145565b8760800135610a09565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081116104bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b690611583565b60405180910390fd5b80341015610502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f9906115a3565b60405180910390fd5b61050b81610558565b60008134610519919061181c565b90506105528482856020013586806040019061053591906116ad565b8860600160208101906105489190611145565b8960800135610b59565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156105be573d6000803e3d6000fd5b5050565b8673ffffffffffffffffffffffffffffffffffffffff1663fb3bdb418787878787876040518763ffffffff1660e01b8152600401610604959493929190611603565b6000604051808303818588803b15801561061d57600080fd5b505af1158015610631573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061065b919061116e565b5050505050505050565b6000848460008181106106a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906106b6919061111c565b90506106e53330898473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b61071088888373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff16635c11d7958888888888886040518763ffffffff1660e01b815260040161075396959493929190611651565b600060405180830381600087803b15801561076d57600080fd5b505af1158015610781573d6000803e3d6000fd5b505050505050505050505050565b6000848460008181106107cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107e0919061111c565b905061080f3330898473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b61083a88888373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff1663791ac9478888888888886040518763ffffffff1660e01b815260040161087d96959493929190611651565b600060405180830381600087803b15801561089757600080fd5b505af11580156108ab573d6000803e3d6000fd5b505050505050505050505050565b6000848460008181106108f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061090a919061111c565b90506109393330888473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b61096488878373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff16634a25d94a8888888888886040518763ffffffff1660e01b81526004016109a796959493929190611651565b600060405180830381600087803b1580156109c157600080fd5b505af11580156109d5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109fe919061116e565b505050505050505050565b600084846000818110610a45577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610a5a919061111c565b9050610a893330888473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b610ab488878373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff16638803dbee8888888888886040518763ffffffff1660e01b8152600401610af796959493929190611651565b600060405180830381600087803b158015610b1157600080fd5b505af1158015610b25573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b4e919061116e565b505050505050505050565b8673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958787878787876040518763ffffffff1660e01b8152600401610b9b959493929190611603565b6000604051808303818588803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b505050505050505050505050565b610c59846323b872dd60e01b858585604051602401610bf7939291906114e1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d80565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401610c9d9291906114b8565b60206040518083038186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190611293565b610cf791906117c6565b9050610d7a8463095ea7b360e01b8584604051602401610d18929190611518565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d80565b50505050565b6000610de2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e479092919063ffffffff16565b9050600081511115610e425780806020019051810190610e0291906111af565b610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e38906115e3565b60405180910390fd5b5b505050565b6060610e568484600085610e5f565b90509392505050565b606082471015610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90611563565b60405180910390fd5b610ead85610f73565b610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906115c3565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610f159190611486565b60006040518083038185875af1925050503d8060008114610f52576040519150601f19603f3d011682016040523d82523d6000602084013e610f57565b606091505b5091509150610f67828286610f86565b92505050949350505050565b600080823b905060008111915050919050565b60608315610f9657829050610fe6565b600083511115610fa95782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd9190611541565b60405180910390fd5b9392505050565b6000611000610ffb84611729565b611704565b9050808382526020820190508285602086028201111561101f57600080fd5b60005b8581101561104f57816110358882611107565b845260208401935060208301925050600181019050611022565b5050509392505050565b60008135905061106881611aa8565b92915050565b60008135905061107d81611abf565b92915050565b600082601f83011261109457600080fd5b81516110a4848260208601610fed565b91505092915050565b6000815190506110bc81611ad6565b92915050565b6000813590506110d181611aed565b92915050565b600060a082840312156110e957600080fd5b81905092915050565b60008135905061110181611b04565b92915050565b60008151905061111681611b04565b92915050565b60006020828403121561112e57600080fd5b600061113c84828501611059565b91505092915050565b60006020828403121561115757600080fd5b60006111658482850161106e565b91505092915050565b60006020828403121561118057600080fd5b600082015167ffffffffffffffff81111561119a57600080fd5b6111a684828501611083565b91505092915050565b6000602082840312156111c157600080fd5b60006111cf848285016110ad565b91505092915050565b600080604083850312156111eb57600080fd5b60006111f9858286016110c2565b925050602083013567ffffffffffffffff81111561121657600080fd5b611222858286016110d7565b9150509250929050565b60008060006060848603121561124157600080fd5b600061124f868287016110c2565b935050602084013567ffffffffffffffff81111561126c57600080fd5b611278868287016110d7565b9250506040611289868287016110f2565b9150509250925092565b6000602082840312156112a557600080fd5b60006112b384828501611107565b91505092915050565b60006112c883836112e3565b60208301905092915050565b6112dd81611862565b82525050565b6112ec81611850565b82525050565b6112fb81611850565b82525050565b600061130d8385611782565b935061131882611755565b8060005b858110156113515761132e82846117af565b61133888826112bc565b975061134383611775565b92505060018101905061131c565b5085925050509392505050565b60006113698261175f565b6113738185611793565b93506113838185602086016118bc565b80840191505092915050565b600061139a8261176a565b6113a4818561179e565b93506113b48185602086016118bc565b6113bd8161197e565b840191505092915050565b60006113d560268361179e565b91506113e08261198f565b604082019050919050565b60006113f860168361179e565b9150611403826119de565b602082019050919050565b600061141b601a8361179e565b915061142682611a07565b602082019050919050565b600061143e601d8361179e565b915061144982611a30565b602082019050919050565b6000611461602a8361179e565b915061146c82611a59565b604082019050919050565b611480816118b2565b82525050565b6000611492828461135e565b915081905092915050565b60006020820190506114b260008301846112d4565b92915050565b60006040820190506114cd60008301856112f2565b6114da60208301846112f2565b9392505050565b60006060820190506114f660008301866112f2565b61150360208301856112f2565b6115106040830184611477565b949350505050565b600060408201905061152d60008301856112f2565b61153a6020830184611477565b9392505050565b6000602082019050818103600083015261155b818461138f565b905092915050565b6000602082019050818103600083015261157c816113c8565b9050919050565b6000602082019050818103600083015261159c816113eb565b9050919050565b600060208201905081810360008301526115bc8161140e565b9050919050565b600060208201905081810360008301526115dc81611431565b9050919050565b600060208201905081810360008301526115fc81611454565b9050919050565b60006080820190506116186000830188611477565b818103602083015261162b818688611301565b905061163a60408301856112f2565b6116476060830184611477565b9695505050505050565b600060a0820190506116666000830189611477565b6116736020830188611477565b8181036040830152611686818688611301565b905061169560608301856112f2565b6116a26080830184611477565b979650505050505050565b600080833560016020038436030381126116c657600080fd5b80840192508235915067ffffffffffffffff8211156116e457600080fd5b6020830192506020820236038313156116fc57600080fd5b509250929050565b600061170e61171f565b905061171a82826118ef565b919050565b6000604051905090565b600067ffffffffffffffff8211156117445761174361194f565b5b602082029050602081019050919050565b6000819050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006117be6020840184611059565b905092915050565b60006117d1826118b2565b91506117dc836118b2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561181157611810611920565b5b828201905092915050565b6000611827826118b2565b9150611832836118b2565b92508282101561184557611844611920565b5b828203905092915050565b600061185b82611892565b9050919050565b600061186d82611892565b9050919050565b60008115159050919050565b600061188b82611850565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156118da5780820151818401526020810190506118bf565b838111156118e9576000848401525b50505050565b6118f88261197e565b810181811067ffffffffffffffff821117156119175761191661194f565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f74697020616d6f756e74206d757374206265203e203000000000000000000000600082015250565b7f6d7573742073656e642045544820746f20636f76657220746970000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b611ab181611850565b8114611abc57600080fd5b50565b611ac881611862565b8114611ad357600080fd5b50565b611adf81611874565b8114611aea57600080fd5b50565b611af681611880565b8114611b0157600080fd5b50565b611b0d816118b2565b8114611b1857600080fd5b5056fea264697066735822122018b607a855c2d02b7904902c8c8cce0e75fec8fb502cec8a6f0072e7ff25b6e164736f6c63430008040033000000000000000000000000965df5ff6116c395187e288e5c87fb96cfb8141c

Deployed Bytecode

0x6080604052600436106100745760003560e01c80637793ed0a1161004e5780637793ed0a146100d157806383e1f1bc146100ed578063848599d7146101095780638f61f13d146101345761007b565b8063072438261461007d578063341246df146100995780633f03a709146100b55761007b565b3661007b57005b005b6100976004803603810190610092919061122c565b610150565b005b6100b360048036038101906100ae91906111d8565b61022c565b005b6100cf60048036038101906100ca91906111d8565b6102b7565b005b6100eb60048036038101906100e691906111d8565b610342565b005b610107600480360381019061010291906111d8565b6103cd565b005b34801561011557600080fd5b5061011e610458565b60405161012b919061149d565b60405180910390f35b61014e6004803603810190610149919061122c565b61047c565b005b60008111610193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018a90611583565b60405180910390fd5b803410156101d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cd906115a3565b60405180910390fd5b6101df81610558565b600081346101ed919061181c565b90506102268482856020013586806040019061020991906116ad565b88606001602081019061021c9190611145565b89608001356105c2565b50505050565b6000341161026f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026690611583565b60405180910390fd5b61027834610558565b6102b3828260000135836020013584806040019061029691906116ad565b8660600160208101906102a99190611145565b8760800135610665565b5050565b600034116102fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f190611583565b60405180910390fd5b61030334610558565b61033e828260000135836020013584806040019061032191906116ad565b8660600160208101906103349190611145565b876080013561078f565b5050565b60003411610385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037c90611583565b60405180910390fd5b61038e34610558565b6103c982826020013583600001358480604001906103ac91906116ad565b8660600160208101906103bf9190611145565b87608001356108b9565b5050565b60003411610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040790611583565b60405180910390fd5b61041934610558565b610454828260200135836000013584806040019061043791906116ad565b86606001602081019061044a9190611145565b8760800135610a09565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081116104bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b690611583565b60405180910390fd5b80341015610502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f9906115a3565b60405180910390fd5b61050b81610558565b60008134610519919061181c565b90506105528482856020013586806040019061053591906116ad565b8860600160208101906105489190611145565b8960800135610b59565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156105be573d6000803e3d6000fd5b5050565b8673ffffffffffffffffffffffffffffffffffffffff1663fb3bdb418787878787876040518763ffffffff1660e01b8152600401610604959493929190611603565b6000604051808303818588803b15801561061d57600080fd5b505af1158015610631573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f8201168201806040525081019061065b919061116e565b5050505050505050565b6000848460008181106106a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906106b6919061111c565b90506106e53330898473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b61071088888373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff16635c11d7958888888888886040518763ffffffff1660e01b815260040161075396959493929190611651565b600060405180830381600087803b15801561076d57600080fd5b505af1158015610781573d6000803e3d6000fd5b505050505050505050505050565b6000848460008181106107cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107e0919061111c565b905061080f3330898473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b61083a88888373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff1663791ac9478888888888886040518763ffffffff1660e01b815260040161087d96959493929190611651565b600060405180830381600087803b15801561089757600080fd5b505af11580156108ab573d6000803e3d6000fd5b505050505050505050505050565b6000848460008181106108f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061090a919061111c565b90506109393330888473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b61096488878373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff16634a25d94a8888888888886040518763ffffffff1660e01b81526004016109a796959493929190611651565b600060405180830381600087803b1580156109c157600080fd5b505af11580156109d5573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109fe919061116e565b505050505050505050565b600084846000818110610a45577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610a5a919061111c565b9050610a893330888473ffffffffffffffffffffffffffffffffffffffff16610bd6909392919063ffffffff16565b610ab488878373ffffffffffffffffffffffffffffffffffffffff16610c5f9092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff16638803dbee8888888888886040518763ffffffff1660e01b8152600401610af796959493929190611651565b600060405180830381600087803b158015610b1157600080fd5b505af1158015610b25573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b4e919061116e565b505050505050505050565b8673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958787878787876040518763ffffffff1660e01b8152600401610b9b959493929190611603565b6000604051808303818588803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b505050505050505050505050565b610c59846323b872dd60e01b858585604051602401610bf7939291906114e1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d80565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401610c9d9291906114b8565b60206040518083038186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ced9190611293565b610cf791906117c6565b9050610d7a8463095ea7b360e01b8584604051602401610d18929190611518565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d80565b50505050565b6000610de2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e479092919063ffffffff16565b9050600081511115610e425780806020019051810190610e0291906111af565b610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e38906115e3565b60405180910390fd5b5b505050565b6060610e568484600085610e5f565b90509392505050565b606082471015610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b90611563565b60405180910390fd5b610ead85610f73565b610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906115c3565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610f159190611486565b60006040518083038185875af1925050503d8060008114610f52576040519150601f19603f3d011682016040523d82523d6000602084013e610f57565b606091505b5091509150610f67828286610f86565b92505050949350505050565b600080823b905060008111915050919050565b60608315610f9657829050610fe6565b600083511115610fa95782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd9190611541565b60405180910390fd5b9392505050565b6000611000610ffb84611729565b611704565b9050808382526020820190508285602086028201111561101f57600080fd5b60005b8581101561104f57816110358882611107565b845260208401935060208301925050600181019050611022565b5050509392505050565b60008135905061106881611aa8565b92915050565b60008135905061107d81611abf565b92915050565b600082601f83011261109457600080fd5b81516110a4848260208601610fed565b91505092915050565b6000815190506110bc81611ad6565b92915050565b6000813590506110d181611aed565b92915050565b600060a082840312156110e957600080fd5b81905092915050565b60008135905061110181611b04565b92915050565b60008151905061111681611b04565b92915050565b60006020828403121561112e57600080fd5b600061113c84828501611059565b91505092915050565b60006020828403121561115757600080fd5b60006111658482850161106e565b91505092915050565b60006020828403121561118057600080fd5b600082015167ffffffffffffffff81111561119a57600080fd5b6111a684828501611083565b91505092915050565b6000602082840312156111c157600080fd5b60006111cf848285016110ad565b91505092915050565b600080604083850312156111eb57600080fd5b60006111f9858286016110c2565b925050602083013567ffffffffffffffff81111561121657600080fd5b611222858286016110d7565b9150509250929050565b60008060006060848603121561124157600080fd5b600061124f868287016110c2565b935050602084013567ffffffffffffffff81111561126c57600080fd5b611278868287016110d7565b9250506040611289868287016110f2565b9150509250925092565b6000602082840312156112a557600080fd5b60006112b384828501611107565b91505092915050565b60006112c883836112e3565b60208301905092915050565b6112dd81611862565b82525050565b6112ec81611850565b82525050565b6112fb81611850565b82525050565b600061130d8385611782565b935061131882611755565b8060005b858110156113515761132e82846117af565b61133888826112bc565b975061134383611775565b92505060018101905061131c565b5085925050509392505050565b60006113698261175f565b6113738185611793565b93506113838185602086016118bc565b80840191505092915050565b600061139a8261176a565b6113a4818561179e565b93506113b48185602086016118bc565b6113bd8161197e565b840191505092915050565b60006113d560268361179e565b91506113e08261198f565b604082019050919050565b60006113f860168361179e565b9150611403826119de565b602082019050919050565b600061141b601a8361179e565b915061142682611a07565b602082019050919050565b600061143e601d8361179e565b915061144982611a30565b602082019050919050565b6000611461602a8361179e565b915061146c82611a59565b604082019050919050565b611480816118b2565b82525050565b6000611492828461135e565b915081905092915050565b60006020820190506114b260008301846112d4565b92915050565b60006040820190506114cd60008301856112f2565b6114da60208301846112f2565b9392505050565b60006060820190506114f660008301866112f2565b61150360208301856112f2565b6115106040830184611477565b949350505050565b600060408201905061152d60008301856112f2565b61153a6020830184611477565b9392505050565b6000602082019050818103600083015261155b818461138f565b905092915050565b6000602082019050818103600083015261157c816113c8565b9050919050565b6000602082019050818103600083015261159c816113eb565b9050919050565b600060208201905081810360008301526115bc8161140e565b9050919050565b600060208201905081810360008301526115dc81611431565b9050919050565b600060208201905081810360008301526115fc81611454565b9050919050565b60006080820190506116186000830188611477565b818103602083015261162b818688611301565b905061163a60408301856112f2565b6116476060830184611477565b9695505050505050565b600060a0820190506116666000830189611477565b6116736020830188611477565b8181036040830152611686818688611301565b905061169560608301856112f2565b6116a26080830184611477565b979650505050505050565b600080833560016020038436030381126116c657600080fd5b80840192508235915067ffffffffffffffff8211156116e457600080fd5b6020830192506020820236038313156116fc57600080fd5b509250929050565b600061170e61171f565b905061171a82826118ef565b919050565b6000604051905090565b600067ffffffffffffffff8211156117445761174361194f565b5b602082029050602081019050919050565b6000819050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006117be6020840184611059565b905092915050565b60006117d1826118b2565b91506117dc836118b2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561181157611810611920565b5b828201905092915050565b6000611827826118b2565b9150611832836118b2565b92508282101561184557611844611920565b5b828203905092915050565b600061185b82611892565b9050919050565b600061186d82611892565b9050919050565b60008115159050919050565b600061188b82611850565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156118da5780820151818401526020810190506118bf565b838111156118e9576000848401525b50505050565b6118f88261197e565b810181811067ffffffffffffffff821117156119175761191661194f565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f74697020616d6f756e74206d757374206265203e203000000000000000000000600082015250565b7f6d7573742073656e642045544820746f20636f76657220746970000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b611ab181611850565b8114611abc57600080fd5b50565b611ac881611862565b8114611ad357600080fd5b50565b611adf81611874565b8114611aea57600080fd5b50565b611af681611880565b8114611b0157600080fd5b50565b611b0d816118b2565b8114611b1857600080fd5b5056fea264697066735822122018b607a855c2d02b7904902c8c8cce0e75fec8fb502cec8a6f0072e7ff25b6e164736f6c63430008040033

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

000000000000000000000000965df5ff6116c395187e288e5c87fb96cfb8141c

-----Decoded View---------------
Arg [0] : _bxAddress (address): 0x965Df5Ff6116C395187E288e5C87fb96CfB8141c

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000965df5ff6116c395187e288e5c87fb96cfb8141c


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.