Goerli Testnet

Contract

0x1aE97B3897eFC558955FB980B319D0ac8E22021B

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
0x6080604082834702023-01-09 17:33:24434 days ago1673285604IN
 Create: UniswapAMM
0 ETH0.0277970334.79352166

Latest 4 internal transactions

Advanced mode:
Parent Txn Hash Block From To Value
86722672023-03-17 20:13:00367 days ago1679083980
0x1aE97B38...c8E22021B
0 ETH
86722672023-03-17 20:13:00367 days ago1679083980
0x1aE97B38...c8E22021B
0 ETH
86721272023-03-17 19:37:24367 days ago1679081844
0x1aE97B38...c8E22021B
0 ETH
86721272023-03-17 19:37:24367 days ago1679081844
0x1aE97B38...c8E22021B
0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapAMM

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 100000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 2 of 6 : UniswapAMM.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity 0.8.16;
pragma experimental ABIEncoderV2;

// ==========================================================
// ====================== UniswapAMM ========================
// ==========================================================

// Primary Author(s)
// MAXOS Team: https://maxos.finance/

import "../Sweep/ISweep.sol";
import "../Common/Owned.sol";
import "../Utils/Uniswap/V2/TransferHelper.sol";
import "../Utils/Uniswap/V3/ISwapRouter.sol";

contract UniswapAMM is Owned {
    // Core
    ISweep private SWEEP;

    // Uniswap v3
    ISwapRouter public univ3_router;

    constructor(
        address _creator_address,
        address _sweep_contract_address,
        address _uniswap_router_address
    ) Owned(_creator_address) {
        SWEEP = ISweep(_sweep_contract_address);
        univ3_router = ISwapRouter(_uniswap_router_address); //0xE592427A0AEce92De3Edee1F18E0157C05861564
    }

    event Bought(uint256 usdx_amount);
    event Sold(uint256 sweep_amount);

    /* ========== Actions ========== */

    /**
    * @notice Buy Sweep
    * @param _collateral_address Token Address to use for buying sweep.
    * @param _collateral_amount Token Amount.
    * @param _amountOutMin Minimum amount out.
    * @dev Increases the sweep balance and decrease collateral balance.
    */
    function buySweep(address _collateral_address, uint256 _collateral_amount, uint256 _amountOutMin) public returns (uint256 sweep_amount) {
        sweep_amount = swapExactInput(_collateral_address, address(SWEEP), _collateral_amount, _amountOutMin);

        emit Bought(sweep_amount);
    }

    /**
    * @notice Sell Sweep
    * @param _collateral_address Token Address to return after selling sweep.
    * @param _sweep_amount Sweep Amount.
    * @param _amountOutMin Minimum amount out.
    * @dev Decreases the sweep balance and increase collateral balance
    */
    function sellSweep(address _collateral_address, uint256 _sweep_amount, uint256 _amountOutMin) public returns (uint256 collateral_amount) {
        collateral_amount = swapExactInput(address(SWEEP), _collateral_address, _sweep_amount, _amountOutMin);

        emit Sold(_sweep_amount);
    }

    /**
    * @notice Swap tokenA into tokenB using univ3_router.ExactInputSingle()
    * @param _tokenA Address to in
    * @param _tokenB Address to out
    * @param _amountIn Amount of _tokenA
    * @param _amountOutMin Minimum amount out.
    */
    function swapExactInput(address _tokenA, address _tokenB, uint256 _amountIn, uint256 _amountOutMin) public returns (uint256 amountOut) {
        // Approval
        TransferHelper.safeTransferFrom(_tokenA, msg.sender, address(this), _amountIn);
        TransferHelper.safeApprove(_tokenA, address(univ3_router), _amountIn);

        ISwapRouter.ExactInputSingleParams memory swap_params = ISwapRouter.ExactInputSingleParams({
            tokenIn: _tokenA,
            tokenOut: _tokenB,
            fee: 3000,
            recipient: msg.sender,
            deadline: block.timestamp + 200,
            amountIn: _amountIn,
            amountOutMinimum: _amountOutMin,
            sqrtPriceLimitX96: 0
        });

        amountOut = univ3_router.exactInputSingle(swap_params);
    }

    /**
    * @notice setSweep
    * @param _sweep_address.
    */
    function setSWEEP(address _sweep_address) external onlyOwner {
        SWEEP = ISweep(_sweep_address);
    }
}

File 2 of 6 : IUniswapV3SwapCallback.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

/// @title Callback for IUniswapV3PoolActions#swap
/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface
interface IUniswapV3SwapCallback {
    /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
    /// @dev In the implementation you must pay the pool tokens owed for the swap.
    /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.
    /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
    /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by
    /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.
    /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by
    /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.
    /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call
    function uniswapV3SwapCallback(
        int256 amount0Delta,
        int256 amount1Delta,
        bytes calldata data
    ) external;
}

File 3 of 6 : Owned.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity 0.8.16;

// https://docs.synthetix.io/contracts/Owned
contract Owned {
    address public owner;
    address public nominatedOwner;

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);

    constructor(address _owner) {
        require(_owner != address(0), "Owner address cannot be 0");
        owner = _owner;
        
        emit OwnerChanged(address(0), _owner);
    }

    modifier onlyOwner() {
        require(
            msg.sender == owner,
            "Only the contract owner may perform this action"
        );
        _;
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;

        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        require(
            msg.sender == nominatedOwner,
            "You must be nominated before you can accept ownership"
        );
        owner = nominatedOwner;
        nominatedOwner = address(0);

        emit OwnerChanged(owner, nominatedOwner);
    }
}

File 4 of 6 : ISweep.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity 0.8.16;

interface ISweep {
    struct Minter {
        bool is_listed;
        uint256 max_mint_amount;
        uint256 minted_amount;
    }

    function DEFAULT_ADMIN_ADDRESS() external view returns (address);

    function balancer() external view returns (address);

    function treasury() external view returns (address);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function balanceOf(address account) external view returns (uint256);

    function decimals() external view returns (uint8);

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        returns (bool);

    function isValidMinter(address) external view returns (bool);

    function amm_price() external view returns (uint256);

    function increaseAllowance(address spender, uint256 addedValue)
        external
        returns (bool);

    function name() external view returns (string memory);

    function owner() external view returns (address);

    function minter_burn_from(uint256 amount) external;

    function minter_mint(address m_address, uint256 m_amount) external;

    function minters(address m_address) external returns (Minter memory);

    function target_price() external view returns (uint256);

    function interest_rate() external view returns (uint256);

    function period_time() external view returns (uint256);

    function step_value() external view returns (uint256);

    function beginNewPeriod(uint256 interest_rate, uint256 current_target_price, uint256 next_target_price) external;

    function setUniswapOracle(address _uniswap_oracle_address) external;

    function setTimelock(address new_timelock) external;

    function symbol() external view returns (string memory);

    function timelock_address() external view returns (address);

    function totalSupply() external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

File 5 of 6 : TransferHelper.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
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));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    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));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    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));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

File 6 of 6 : ISwapRouter.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity 0.8.16;
pragma abicoder v2;

import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol';

/// @title Router token swapping functionality
/// @notice Functions for swapping tokens via Uniswap V3
interface ISwapRouter is IUniswapV3SwapCallback {
    struct ExactInputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
        uint160 sqrtPriceLimitX96;
    }

    /// @notice Swaps `amountIn` of one token for as much as possible of another token
    /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata
    /// @return amountOut The amount of the received token
    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);

    struct ExactInputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path
    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata
    /// @return amountOut The amount of the received token
    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);

    struct ExactOutputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint256 deadline;
        uint256 amountOut;
        uint256 amountInMaximum;
        uint160 sqrtPriceLimitX96;
    }

    /// @notice Swaps as little as possible of one token for `amountOut` of another token
    /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata
    /// @return amountIn The amount of the input token
    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);

    struct ExactOutputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountOut;
        uint256 amountInMaximum;
    }

    /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)
    /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata
    /// @return amountIn The amount of the input token
    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 100000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_creator_address","type":"address"},{"internalType":"address","name":"_sweep_contract_address","type":"address"},{"internalType":"address","name":"_uniswap_router_address","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"usdx_amount","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sweep_amount","type":"uint256"}],"name":"Sold","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collateral_address","type":"address"},{"internalType":"uint256","name":"_collateral_amount","type":"uint256"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"buySweep","outputs":[{"internalType":"uint256","name":"sweep_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collateral_address","type":"address"},{"internalType":"uint256","name":"_sweep_amount","type":"uint256"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"sellSweep","outputs":[{"internalType":"uint256","name":"collateral_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sweep_address","type":"address"}],"name":"setSWEEP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"swapExactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"univ3_router","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610db9380380610db983398101604081905261002f91610130565b826001600160a01b03811661008a5760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150600280546001600160a01b039384166001600160a01b0319918216179091556003805492909316911617905550610173565b80516001600160a01b038116811461012b57600080fd5b919050565b60008060006060848603121561014557600080fd5b61014e84610114565b925061015c60208501610114565b915061016a60408501610114565b90509250925092565b610c37806101826000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806379ba5097116100765780638c60c71c1161005b5780638c60c71c146101635780638da5cb5b14610176578063bd0281421461019657600080fd5b806379ba50971461013b5780638292fd841461014357600080fd5b80631627540c146100a85780632dd09ce1146100bd57806338da412e146100d057806353a47bb7146100f6575b600080fd5b6100bb6100b6366004610a28565b6101a9565b005b6100bb6100cb366004610a28565b6102ce565b6100e36100de366004610a4a565b6103bc565b6040519081526020015b60405180910390f35b6001546101169073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b6100bb610426565b6003546101169073ffffffffffffffffffffffffffffffffffffffff1681565b6100e3610171366004610a4a565b610555565b6000546101169073ffffffffffffffffffffffffffffffffffffffff1681565b6100e36101a4366004610a7d565b6105b1565b60005473ffffffffffffffffffffffffffffffffffffffff163314610255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff163314610375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015260840161024c565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6002546000906103e49073ffffffffffffffffffffffffffffffffffffffff168585856105b1565b90507f92f64ca637d023f354075a4be751b169c1a8a9ccb6d33cdd0cb35205439957278360405161041791815260200190565b60405180910390a19392505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015260840161024c565b600180546000805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117835592169092556040805191825260208201929092527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1565b60025460009061057e90859073ffffffffffffffffffffffffffffffffffffffff1685856105b1565b90507f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef18160405161041791815260200190565b60006105bf853330866106f1565b6003546105e490869073ffffffffffffffffffffffffffffffffffffffff168561088f565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff808816825286166020820152610bb891810191909152336060820152600090608081016106324260c8610abf565b8152602081018690526040808201869052600060609092019190915260035490517f414bf38900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063414bf389906106a4908490600401610aff565b6020604051808303816000875af11580156106c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e79190610b97565b9695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916107909190610bb0565b6000604051808303816000865af19150503d80600081146107cd576040519150601f19603f3d011682016040523d82523d6000602084013e6107d2565b606091505b50915091508180156107fc5750805115806107fc5750808060200190518101906107fc9190610bdf565b610887576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c454400000000000000000000000000000000000000000000000000000000606482015260840161024c565b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916109269190610bb0565b6000604051808303816000865af19150503d8060008114610963576040519150601f19603f3d011682016040523d82523d6000602084013e610968565b606091505b50915091508180156109925750805115806109925750808060200190518101906109929190610bdf565b6109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015260640161024c565b5050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a2357600080fd5b919050565b600060208284031215610a3a57600080fd5b610a43826109ff565b9392505050565b600080600060608486031215610a5f57600080fd5b610a68846109ff565b95602085013595506040909401359392505050565b60008060008060808587031215610a9357600080fd5b610a9c856109ff565b9350610aaa602086016109ff565b93969395505050506040820135916060013590565b80820180821115610af9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff6040850151166040840152806060850151166060840152506080830151608083015260a083015160a083015260c083015160c083015260e0830151610b9060e084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b600060208284031215610ba957600080fd5b5051919050565b6000825160005b81811015610bd15760208186018101518583015201610bb7565b506000920191825250919050565b600060208284031215610bf157600080fd5b81518015158114610a4357600080fdfea2646970667358221220ff4d1c35a22e04f17b264ef0eaeda1a111544a08c7f22309ac4f2498d48d9ca564736f6c6343000810003300000000000000000000000093ae1efd2e78028351c080fa0fbbbef97ec42ead0000000000000000000000004dba82efd938f273c5b8ae6a66d745a48584e636000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a35760003560e01c806379ba5097116100765780638c60c71c1161005b5780638c60c71c146101635780638da5cb5b14610176578063bd0281421461019657600080fd5b806379ba50971461013b5780638292fd841461014357600080fd5b80631627540c146100a85780632dd09ce1146100bd57806338da412e146100d057806353a47bb7146100f6575b600080fd5b6100bb6100b6366004610a28565b6101a9565b005b6100bb6100cb366004610a28565b6102ce565b6100e36100de366004610a4a565b6103bc565b6040519081526020015b60405180910390f35b6001546101169073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b6100bb610426565b6003546101169073ffffffffffffffffffffffffffffffffffffffff1681565b6100e3610171366004610a4a565b610555565b6000546101169073ffffffffffffffffffffffffffffffffffffffff1681565b6100e36101a4366004610a7d565b6105b1565b60005473ffffffffffffffffffffffffffffffffffffffff163314610255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff163314610375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e0000000000000000000000000000000000606482015260840161024c565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6002546000906103e49073ffffffffffffffffffffffffffffffffffffffff168585856105b1565b90507f92f64ca637d023f354075a4be751b169c1a8a9ccb6d33cdd0cb35205439957278360405161041791815260200190565b60405180910390a19392505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146104cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015260840161024c565b600180546000805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117835592169092556040805191825260208201929092527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1565b60025460009061057e90859073ffffffffffffffffffffffffffffffffffffffff1685856105b1565b90507f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef18160405161041791815260200190565b60006105bf853330866106f1565b6003546105e490869073ffffffffffffffffffffffffffffffffffffffff168561088f565b604080516101008101825273ffffffffffffffffffffffffffffffffffffffff808816825286166020820152610bb891810191909152336060820152600090608081016106324260c8610abf565b8152602081018690526040808201869052600060609092019190915260035490517f414bf38900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063414bf389906106a4908490600401610aff565b6020604051808303816000875af11580156106c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e79190610b97565b9695505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916107909190610bb0565b6000604051808303816000865af19150503d80600081146107cd576040519150601f19603f3d011682016040523d82523d6000602084013e6107d2565b606091505b50915091508180156107fc5750805115806107fc5750808060200190518101906107fc9190610bdf565b610887576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c454400000000000000000000000000000000000000000000000000000000606482015260840161024c565b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916109269190610bb0565b6000604051808303816000865af19150503d8060008114610963576040519150601f19603f3d011682016040523d82523d6000602084013e610968565b606091505b50915091508180156109925750805115806109925750808060200190518101906109929190610bdf565b6109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015260640161024c565b5050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a2357600080fd5b919050565b600060208284031215610a3a57600080fd5b610a43826109ff565b9392505050565b600080600060608486031215610a5f57600080fd5b610a68846109ff565b95602085013595506040909401359392505050565b60008060008060808587031215610a9357600080fd5b610a9c856109ff565b9350610aaa602086016109ff565b93969395505050506040820135916060013590565b80820180821115610af9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006101008201905073ffffffffffffffffffffffffffffffffffffffff80845116835280602085015116602084015262ffffff6040850151166040840152806060850151166060840152506080830151608083015260a083015160a083015260c083015160c083015260e0830151610b9060e084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b600060208284031215610ba957600080fd5b5051919050565b6000825160005b81811015610bd15760208186018101518583015201610bb7565b506000920191825250919050565b600060208284031215610bf157600080fd5b81518015158114610a4357600080fdfea2646970667358221220ff4d1c35a22e04f17b264ef0eaeda1a111544a08c7f22309ac4f2498d48d9ca564736f6c63430008100033

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

00000000000000000000000093ae1efd2e78028351c080fa0fbbbef97ec42ead0000000000000000000000004dba82efd938f273c5b8ae6a66d745a48584e636000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564

-----Decoded View---------------
Arg [0] : _creator_address (address): 0x93aE1efd2E78028351C080FA0fbBBeF97Ec42EAD
Arg [1] : _sweep_contract_address (address): 0x4dba82EfD938f273C5b8aE6a66D745a48584e636
Arg [2] : _uniswap_router_address (address): 0xE592427A0AEce92De3Edee1F18E0157C05861564

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000093ae1efd2e78028351c080fa0fbbbef97ec42ead
Arg [1] : 0000000000000000000000004dba82efd938f273c5b8ae6a66d745a48584e636
Arg [2] : 000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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