ETH Price: $1,902.69 (-2.60%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Buy Tokens152845472022-08-05 20:46:211297 days ago1659732381IN
0xE519eca8...5672883C7
0 ETH0.0029588821.18744161
Buy Tokens151987182022-07-23 11:42:321311 days ago1658576552IN
0xE519eca8...5672883C7
0.005 ETH0.000655386.22429261
Buy Tokens151940462022-07-22 18:31:401311 days ago1658514700IN
0xE519eca8...5672883C7
0 ETH0.0045447332.5458788
Buy Tokens151940362022-07-22 18:29:241311 days ago1658514564IN
0xE519eca8...5672883C7
0 ETH0.0035344425.31097548
Buy Tokens151938792022-07-22 17:52:401311 days ago1658512360IN
0xE519eca8...5672883C7
0 ETH0.0069601823.42700502
Buy Tokens148462722022-05-26 5:40:351369 days ago1653543635IN
0xE519eca8...5672883C7
0.055 ETH0.008595653.19558469
Buy Tokens146423952022-04-23 17:28:091401 days ago1650734889IN
0xE519eca8...5672883C7
0.05738743 ETH0.0062085149.90971806
Buy Tokens146044642022-04-17 18:50:511407 days ago1650221451IN
0xE519eca8...5672883C7
0.007 ETH0.0023963819.264294
Buy Tokens145756682022-04-13 6:46:291412 days ago1649832389IN
0xE519eca8...5672883C7
0.015 ETH0.0036505529.34644379
Buy Tokens145640632022-04-11 11:11:551414 days ago1649675515IN
0xE519eca8...5672883C7
0.015 ETH0.0036766229.55606757
Buy Tokens145587682022-04-10 15:36:451415 days ago1649605005IN
0xE519eca8...5672883C7
0.2 ETH0.0090941584.75838659
Buy Tokens145586902022-04-10 15:17:291415 days ago1649603849IN
0xE519eca8...5672883C7
0.05 ETH0.0090626872.8611433
Buy Tokens145586662022-04-10 15:11:251415 days ago1649603485IN
0xE519eca8...5672883C7
0.2 ETH0.0061961457.74866494
Buy Tokens145580502022-04-10 12:48:331415 days ago1649594913IN
0xE519eca8...5672883C7
0.01 ETH0.0031478525.30776198
Buy Tokens145195482022-04-04 12:29:171421 days ago1649075357IN
0xE519eca8...5672883C7
0.003 ETH0.0053625143.10878734
Buy Tokens145192482022-04-04 11:21:261421 days ago1649071286IN
0xE519eca8...5672883C7
0.01 ETH0.0042289539.4186846
Buy Tokens145127582022-04-03 10:58:171422 days ago1648983497IN
0xE519eca8...5672883C7
0.002 ETH0.0046359843.2126661
Buy Tokens145127572022-04-03 10:57:541422 days ago1648983474IN
0xE519eca8...5672883C7
0.002 ETH0.0051113441.09361021
Buy Tokens145073562022-04-02 14:46:571423 days ago1648910817IN
0xE519eca8...5672883C7
0.001 ETH0.0065893452.97110624
Buy Tokens145068392022-04-02 12:55:031423 days ago1648904103IN
0xE519eca8...5672883C7
0.01 ETH0.0066134753.17027614
Buy Tokens144988212022-04-01 6:47:391424 days ago1648795659IN
0xE519eca8...5672883C7
0.005 ETH0.0064856652.13769189
Buy Tokens144550552022-03-25 11:05:331431 days ago1648206333IN
0xE519eca8...5672883C7
0.01 ETH0.0031728425.50866249
Buy Tokens144547982022-03-25 10:06:241431 days ago1648202784IN
0xE519eca8...5672883C7
0 ETH0.0060431426.60527343
Transfer Ownersh...144475812022-03-24 7:22:201432 days ago1648106540IN
0xE519eca8...5672883C7
0 ETH0.0008043628.04115033

Latest 18 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer151987182022-07-23 11:42:321311 days ago1658576552
0xE519eca8...5672883C7
0.005 ETH
-148462722022-05-26 5:40:351369 days ago1653543635
0xE519eca8...5672883C7
0.055 ETH
-146423952022-04-23 17:28:091401 days ago1650734889
0xE519eca8...5672883C7
0.05738743 ETH
-146044642022-04-17 18:50:511407 days ago1650221451
0xE519eca8...5672883C7
0.007 ETH
-145756682022-04-13 6:46:291412 days ago1649832389
0xE519eca8...5672883C7
0.015 ETH
-145640632022-04-11 11:11:551414 days ago1649675515
0xE519eca8...5672883C7
0.015 ETH
-145587682022-04-10 15:36:451415 days ago1649605005
0xE519eca8...5672883C7
0.2 ETH
-145586902022-04-10 15:17:291415 days ago1649603849
0xE519eca8...5672883C7
0.05 ETH
-145586662022-04-10 15:11:251415 days ago1649603485
0xE519eca8...5672883C7
0.2 ETH
-145580502022-04-10 12:48:331415 days ago1649594913
0xE519eca8...5672883C7
0.01 ETH
-145195482022-04-04 12:29:171421 days ago1649075357
0xE519eca8...5672883C7
0.003 ETH
-145192482022-04-04 11:21:261421 days ago1649071286
0xE519eca8...5672883C7
0.01 ETH
-145127582022-04-03 10:58:171422 days ago1648983497
0xE519eca8...5672883C7
0.002 ETH
-145127572022-04-03 10:57:541422 days ago1648983474
0xE519eca8...5672883C7
0.002 ETH
-145073562022-04-02 14:46:571423 days ago1648910817
0xE519eca8...5672883C7
0.001 ETH
-145068392022-04-02 12:55:031423 days ago1648904103
0xE519eca8...5672883C7
0.01 ETH
-144988212022-04-01 6:47:391424 days ago1648795659
0xE519eca8...5672883C7
0.005 ETH
-144550552022-03-25 11:05:331431 days ago1648206333
0xE519eca8...5672883C7
0.01 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CHBPublicSale

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "./utils/ReentrancyGuard.sol";
import "./libraries/TransferHelper.sol";
import "./utils/Ownable.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/OracleWrapper.sol";

contract CHBPublicSale is Ownable, ReentrancyGuard {
    uint256 public totalTokenSold;
    uint256 public totalUSDTRaised;
    uint256 public tokenDecimal;
    uint8 public defaultPhase;
    uint8 public totalPhases;
    address public tokenAddress;

    address public receiverAddress = 0xABDe245ef6F5875c3F19d5f699c7A787050cAF5f;

    address public USDTAddress = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    address public USDTOracleAddress =
        0x3E7d1eAB13ad0104d2750B8863b489D65364e32D;
    address public BNBorETHOracleAddress =
        0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419;

   

    /* ================ STRUCT SECTION ================ */
    // Stores phases
    struct Phases {
        uint256 tokenSold;
        uint256 tokenLimit;
        uint32 startTime;
        uint32 expirationTimestamp;
        uint32 price; // 10 ** 2
        bool isComplete;
    }
    mapping(uint256 => Phases) public phaseInfo;

    /* ================ EVENT SECTION ================ */
    // Emits when tokens are bought
    event TokensBought(
        address buyerAddress,
        uint256 buyAmount,
        uint256 tokenAmount,
        uint32 buyTime
    );

    /* ================ CONSTRUCTOR SECTION ================ */
    constructor(address _tokenAddress) {
        tokenAddress = _tokenAddress;

        totalPhases = 6;
        tokenDecimal = uint256(10**Token(tokenAddress).decimals());
        uint32 currenTimeStamp = uint32(block.timestamp);

        phaseInfo[0] = Phases({
            tokenLimit: 200_000_000 * tokenDecimal,
            tokenSold: 0,
            startTime: currenTimeStamp,
            expirationTimestamp: currenTimeStamp + 60 days, // 2 Months
            price: 1,
            isComplete: false
        });
        phaseInfo[1] = Phases({
            tokenLimit: 100_000_000 * tokenDecimal,
            tokenSold: 0,
            startTime: phaseInfo[0].expirationTimestamp,
            expirationTimestamp: phaseInfo[0].expirationTimestamp + 15 days, // 15 Days
            isComplete: false,
            price: 2
        });
        phaseInfo[2] = Phases({
            tokenLimit: 100_000_000 * tokenDecimal,
            tokenSold: 0,
            startTime: phaseInfo[1].expirationTimestamp,
            expirationTimestamp: phaseInfo[1].expirationTimestamp + 15 days, // 15 Days
            isComplete: false,
            price: 3
        });
        phaseInfo[3] = Phases({
            tokenLimit: 100_000_000 * tokenDecimal,
            tokenSold: 0,
            startTime: phaseInfo[2].expirationTimestamp,
            expirationTimestamp: phaseInfo[2].expirationTimestamp + 15 days, // 15 Days
            isComplete: false,
            price: 4
        });
        phaseInfo[4] = Phases({
            tokenLimit: 100_000_000 * tokenDecimal,
            tokenSold: 0,
            startTime: phaseInfo[3].expirationTimestamp,
            expirationTimestamp: phaseInfo[3].expirationTimestamp + 15 days, // 15 Days
            isComplete: false,
            price: 5
        });
        phaseInfo[5] = Phases({
            tokenLimit: 100_000_000 * tokenDecimal,
            tokenSold: 0,
            startTime: phaseInfo[4].expirationTimestamp,
            expirationTimestamp: phaseInfo[4].expirationTimestamp + 15 days, // 15 Days
            isComplete: false,
            price: 6
        });
    }

    /* ================ BUYING TOKENS SECTION ================ */

    // Receive Function
    receive() external payable {
        // Sending deposited currency to the receiver address
        payable(receiverAddress).transfer(msg.value);
    }

    // Function lets user buy CHB tokens || Type 1 = BNB or ETH, Type = 2 for USDT
    function buyTokens(uint8 _type, uint256 _usdtAmount)
        external
        payable
        nonReentrant
    {
        require(
            block.timestamp < phaseInfo[(totalPhases - 1)].expirationTimestamp,
            "Buying Phases are over"
        );

        uint256 _buyAmount;

        // If type == 1
        if (_type == 1) {
            _buyAmount = msg.value;
        }
        // If type == 2
        else {
            _buyAmount = _usdtAmount;

            // Balance Check
            require(
                Token(USDTAddress).balanceOf(msg.sender) >= _buyAmount,
                "User doesn't have enough balance"
            );

            // Allowance Check
            require(
                Token(USDTAddress).allowance(msg.sender, address(this)) >=
                    _buyAmount,
                "Allowance provided is low"
            );
        }

        // Token calculation
        (uint256 _tokenAmount, uint8 _phaseNo) = calculateTokens(
            _type,
            _buyAmount
        );

        // Phase info setting
        setPhaseInfo(_tokenAmount, defaultPhase);

        // Transfers CHB to user
        TransferHelper.safeTransfer(tokenAddress, msg.sender, _tokenAmount);

        // Update Phase number and add token amount
        defaultPhase = _phaseNo;
        totalTokenSold += _tokenAmount;

        // Calculated total USDT raised in the platform
        (uint256 _amountToUSD, uint256 _typeDecimal) = cryptoValues(_type);
        totalUSDTRaised += uint256((_buyAmount * _amountToUSD) / _typeDecimal);

        if (_type == 1) {
            // Sending deposited currency to the receiver address
            payable(receiverAddress).transfer(_buyAmount);
        } else {
            // Sending deposited currency to the receiver address
            TransferHelper.safeTransferFrom(
                USDTAddress,
                msg.sender,
                receiverAddress,
                _buyAmount
            );
        }
        // Emits event
        emit TokensBought(
            msg.sender,
            _buyAmount,
            _tokenAmount,
            uint32(block.timestamp)
        );
    }

    // Function calculates tokens according to user's given amount
    function calculateTokens(uint8 _type, uint256 _amount)
        public
        view
        returns (uint256, uint8)
    {
        (uint256 _amountToUSD, uint256 _typeDecimal) = cryptoValues(_type);
        uint256 _amountGivenInUsd = ((_amount * _amountToUSD) / _typeDecimal);

        return
            calculateTokensInternal(_type, _amountGivenInUsd, defaultPhase, 0);
    }

    // Internal function to calculatye tokens
    function calculateTokensInternal(
        uint8 _type,
        uint256 _amount,
        uint8 _phaseNo,
        uint256 _previousTokens
    ) internal view returns (uint256, uint8) {
        // Phases cannot exceed totalPhases
        require(
            _phaseNo < totalPhases,
            "Not enough tokens in the contract or Phase expired"
        );

        Phases memory pInfo = phaseInfo[_phaseNo];

        // If phase is still going on
        if (pInfo.expirationTimestamp > block.timestamp) {
            uint256 _tokensAmount = tokensUserWillGet(_amount, pInfo.price);

            uint256 _tokensLeftToSell = (pInfo.tokenLimit + _previousTokens) -
                pInfo.tokenSold;

            // If token left are 0. Next phase will be executed
            if (_tokensLeftToSell == 0) {
                return
                    calculateTokensInternal(
                        _type,
                        _amount,
                        _phaseNo + 1,
                        _previousTokens
                    );
            }
            // If the phase have enough tokens left
            else if (_tokensLeftToSell >= _tokensAmount) {
                return (_tokensAmount, _phaseNo);
            }
            // If the phase doesn't have enough tokens
            else {
                _tokensAmount =
                    pInfo.tokenLimit +
                    _previousTokens -
                    pInfo.tokenSold;

                uint256 _tokenPriceInPhase = tokenValueInPhase(
                    pInfo.price,
                    _tokensAmount
                );

                (
                    uint256 _remainingTokens,
                    uint8 _newPhase
                ) = calculateTokensInternal(
                        _type,
                        _amount - _tokenPriceInPhase,
                        _phaseNo + 1,
                        0
                    );

                return (_remainingTokens + _tokensAmount, _newPhase);
            }
        }
        // In case the phase is expired. New will begin after sending the left tokens to the next phase
        else {
            uint256 _remainingTokens = pInfo.tokenLimit - pInfo.tokenSold;

            return
                calculateTokensInternal(
                    _type,
                    _amount,
                    _phaseNo + 1,
                    _remainingTokens + _previousTokens
                );
        }
    }

    // Returns the value of tokens in the phase in dollors
    function tokenValueInPhase(uint32 _price, uint256 _tokenAmount)
        internal
        view
        returns (uint256)
    {
        return ((_tokenAmount * uint256(_price) * (10**8)) /
            (100 * tokenDecimal));
    }

    // Tokens user will get according to the price
    function tokensUserWillGet(uint256 _amount, uint32 _price)
        internal
        view
        returns (uint256)
    {
        return ((_amount * tokenDecimal * 100) / ((10**8) * uint256(_price)));
    }

    // Returns the crypto values used
    function cryptoValues(uint8 _type)
        internal
        view
        returns (uint256, uint256)
    {
        uint256 _amountToUSD;
        uint256 _typeDecimal;

        if (_type == 1) {
            _amountToUSD = OracleWrapper(BNBorETHOracleAddress).latestAnswer();
            _typeDecimal = 10**18;
        } else {
            _amountToUSD = OracleWrapper(USDTOracleAddress).latestAnswer();
            _typeDecimal = uint256(10**Token(USDTAddress).decimals());
        }
        return (_amountToUSD, _typeDecimal);
    }

    // Sets phase info according to the tokens bought
    function setPhaseInfo(uint256 _tokensUserWillGet, uint8 _phaseNo) internal {
        require(_phaseNo < totalPhases, "All tokens have been exhausted");

        Phases storage pInfo = phaseInfo[_phaseNo];

        if (block.timestamp < pInfo.expirationTimestamp) {
            //  when phase has more tokens than reuired
            if ((pInfo.tokenLimit - pInfo.tokenSold) > _tokensUserWillGet) {
                pInfo.tokenSold += _tokensUserWillGet;
            }
            //  when  phase has equal tokens as reuired
            else if (
                (pInfo.tokenLimit - pInfo.tokenSold) == _tokensUserWillGet
            ) {
                pInfo.tokenSold = pInfo.tokenLimit;
                pInfo.isComplete = true;
            }
            // when tokens required are more than left tokens in phase
            else {
                uint256 tokensLeft = _tokensUserWillGet -
                    (pInfo.tokenLimit - pInfo.tokenSold);
                pInfo.tokenSold = pInfo.tokenLimit;
                pInfo.isComplete = true;

                setPhaseInfo(tokensLeft, _phaseNo + 1);
            }
        }
        // if tokens left in phase afterb completion of expiration time
        else {
            uint256 remainingTokens = pInfo.tokenLimit - pInfo.tokenSold;
            pInfo.tokenSold = pInfo.tokenLimit;
            pInfo.isComplete = true;

            phaseInfo[_phaseNo + 1].tokenLimit += remainingTokens;
            setPhaseInfo(_tokensUserWillGet, _phaseNo + 1);
        }
    }

    // Function sends the left over tokens to the receiving address, only after phases are over
    function sendLeftoverTokensToReceiver() external onlyOwner {
        require(
            block.timestamp > phaseInfo[(totalPhases - 1)].expirationTimestamp,
            "Phases are not over yet"
        );

        uint256 _balance = Token(tokenAddress).balanceOf(address(this));
        require(_balance > 0, "No tokens left to send");

        TransferHelper.safeTransfer(tokenAddress, receiverAddress, _balance);
    }

    /* ================ OTHER FUNCTIONS SECTION ================ */
    // Updates USDT Address
    function updateUSDTAddress(address _USDTAddress) external onlyOwner {
        USDTAddress = _USDTAddress;
    }

    // Updates USDT Oracle Address
    function updateUSDTOracleAddress(address _USDTOracleAddress)
        external
        onlyOwner
    {
        USDTOracleAddress = _USDTOracleAddress;
    }

    // Updates USDT Oracle Address
    function updateBNBorETHOracleAddress(address _BNBorETHOracleAddress)
        external
        onlyOwner
    {
        BNBorETHOracleAddress = _BNBorETHOracleAddress;
    }

    // Updates Receiver Address
    function updateReceiverAddress(address _receiverAddress)
        external
        onlyOwner
    {
        receiverAddress = _receiverAddress;
    }
}

File 2 of 6 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.4;

// 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,
        uint256 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::safeApprove: approve failed"
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 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::safeTransfer: transfer failed"
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 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::transferFrom: transferFrom failed"
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(
            success,
            "TransferHelper::safeTransferETH: ETH transfer failed"
        );
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

contract Ownable {
    address public owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() {
        _setOwner(msg.sender);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function _setOwner(address newOwner) internal {
        owner = newOwner;
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

interface Token {
    function decimals() external view returns (uint8);

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

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, uint256 value) external returns (bool);

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

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

File 6 of 6 : OracleWrapper.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

interface OracleWrapper {
    function latestAnswer() external view returns (uint128);
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"buyAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"buyTime","type":"uint32"}],"name":"TokensBought","type":"event"},{"inputs":[],"name":"BNBorETHOracleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDTAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDTOracleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_usdtAmount","type":"uint256"}],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultPhase","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"phaseInfo","outputs":[{"internalType":"uint256","name":"tokenSold","type":"uint256"},{"internalType":"uint256","name":"tokenLimit","type":"uint256"},{"internalType":"uint32","name":"startTime","type":"uint32"},{"internalType":"uint32","name":"expirationTimestamp","type":"uint32"},{"internalType":"uint32","name":"price","type":"uint32"},{"internalType":"bool","name":"isComplete","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiverAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendLeftoverTokensToReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDecimal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPhases","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokenSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUSDTRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_BNBorETHOracleAddress","type":"address"}],"name":"updateBNBorETHOracleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiverAddress","type":"address"}],"name":"updateReceiverAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_USDTAddress","type":"address"}],"name":"updateUSDTAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_USDTOracleAddress","type":"address"}],"name":"updateUSDTOracleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b031990811673abde245ef6f5875c3f19d5f699c7a787050caf5f1790915560078054821673dac17f958d2ee523a2206206994597c13d831ec7179055600880548216733e7d1eab13ad0104d2750b8863b489d65364e32d17905560098054909116735f4ec3df9cbd43714fe2740f5e3616155c5b84191790553480156200009557600080fd5b50604051620024b1380380620024b1833981016040819052620000b89162000a31565b600080546001600160a01b031916331790556001805560058054610100600160b01b031916620100006001600160a01b03848116820261ff0019169290921761060017928390556040805163313ce56760e01b81529051919093049091169163313ce567916004808301926020929190829003018186803b1580156200013d57600080fd5b505afa15801562000152573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000178919062000a63565b6200018590600a62000afc565b60048190556040805160c081019091526000815242916020820190620001b090630bebc20062000bbd565b815263ffffffff83166020820152604001620001d083624f1a0062000a88565b63ffffffff9081168252600160208084019190915260006040938401819052808052600a825284517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e355848201517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e455848401517f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e580546060880151608089015160a09099015115156c010000000000000000000000000260ff60601b1999881668010000000000000000029990991664ffffffffff60401b19918816640100000000026001600160401b0319909316949097169390931717919091169390931794909417909155815160c081019092529181526004549091820190620002fc906305f5e10062000bbd565b81527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e554640100000000900463ffffffff16602080830182905260008052600a905260409091019062000353906213c68062000a88565b63ffffffff908116825260026020808401919091526000604093840181905260018152600a825284517fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc755848201517fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc855848401517fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc980546060880151608089015160a09099015115156c010000000000000000000000000260ff60601b1999881668010000000000000000029990991664ffffffffff60401b19918816640100000000026001600160401b0319909316949097169390931717919091169390931794909417909155815160c08101909252918152600454909182019062000480906305f5e10062000bbd565b81527fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc954640100000000900463ffffffff1660208083018290526001600052600a9052604090910190620004d8906213c68062000a88565b63ffffffff908116825260036020808401919091526000604093840181905260028152600a825284517fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba855848201517fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba955848401517fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2baa80546060880151608089015160a09099015115156c010000000000000000000000000260ff60601b1999881668010000000000000000029990991664ffffffffff60401b19918816640100000000026001600160401b0319909316949097169390931717919091169390931794909417909155815160c08101909252918152600454909182019062000605906305f5e10062000bbd565b81527fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2baa54640100000000900463ffffffff1660208083018290526002600052600a90526040909101906200065d906213c68062000a88565b63ffffffff9081168252600460208084018290526000604094850181905260038152600a825285517fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa3975955858201517fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa3975a5585850151600080516020620024918339815191528054606089015160808a015160a0909a015115156c010000000000000000000000000260ff60601b199a891668010000000000000000029a909a1664ffffffffff60401b19918916640100000000026001600160401b0319909316949098169390931717919091169490941795909517909255825160c081019093529282529154909182019062000777906305f5e10062000bbd565b81526000805160206200249183398151915254640100000000900463ffffffff1660208083018290526003600052600a9052604090910190620007be906213c68062000a88565b63ffffffff90811682526005602080840191909152600060409384018190526004808252600a835285517fe1eb2b2161a492c07c5a334e48012567cba93ec021043f53c1955516a3c5a84155858301517fe1eb2b2161a492c07c5a334e48012567cba93ec021043f53c1955516a3c5a8425585850151600080516020620024718339815191528054606089015160808a015160a0909a015115156c010000000000000000000000000260ff60601b199a891668010000000000000000029a909a1664ffffffffff60401b19918916640100000000026001600160401b0319909316949098169390931717919091169490941795909517909255825160c0810190935290825291549091820190620008da906305f5e10062000bbd565b81526000805160206200247183398151915254640100000000900463ffffffff1660208083018290526004600052600a905260409091019062000921906213c68062000a88565b63ffffffff908116825260066020808401919091526000604093840181905260059052600a815283517ff35035bc2b01d44bd35a1dcdc552315cffb73da35cfd60570b7b777f98036f9f558301517ff35035bc2b01d44bd35a1dcdc552315cffb73da35cfd60570b7b777f98036fa055908201517ff35035bc2b01d44bd35a1dcdc552315cffb73da35cfd60570b7b777f98036fa180546060850151608086015160a09096015115156c010000000000000000000000000260ff60601b1996861668010000000000000000029690961664ffffffffff60401b19918616640100000000026001600160401b031990931694909516939093171791909116919091179190911790555062000bf59050565b60006020828403121562000a4457600080fd5b81516001600160a01b038116811462000a5c57600080fd5b9392505050565b60006020828403121562000a7657600080fd5b815160ff8116811462000a5c57600080fd5b600063ffffffff80831681851680830382111562000aaa5762000aaa62000bdf565b01949350505050565b600181815b8085111562000af457816000190482111562000ad85762000ad862000bdf565b8085161562000ae657918102915b93841c939080029062000ab8565b509250929050565b600062000a5c60ff84168360008262000b185750600162000bb7565b8162000b275750600062000bb7565b816001811462000b40576002811462000b4b5762000b6b565b600191505062000bb7565b60ff84111562000b5f5762000b5f62000bdf565b50506001821b62000bb7565b5060208310610133831016604e8410600b841016171562000b90575081810a62000bb7565b62000b9c838362000ab3565b806000190482111562000bb35762000bb362000bdf565b0290505b92915050565b600081600019048311821515161562000bda5762000bda62000bdf565b500290565b634e487b7160e01b600052601160045260246000fd5b61186c8062000c056000396000f3fe6080604052600436106101235760003560e01c8063940c333e116100a0578063ddcbdaf211610064578063ddcbdaf2146103ec578063e8e438591461040c578063ef5f567914610426578063f2fde38b14610446578063ff920c741461046657600080fd5b8063940c333e146103685780639d76ea581461037b578063b3fcfd6a146103a1578063b5f7f636146103b6578063d02c7f7e146103cc57600080fd5b80635caed029116100e75780635caed029146102b95780636b8eed0a146102cf57806375d60372146102f157806381409bab146103115780638da5cb5b1461034857600080fd5b806308c89b6d1461016957806316fed3e214610192578063195619bb146101ca5780631a4b0a25146101ea5780633c5d18121461028857600080fd5b36610164576006546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610161573d6000803e3d6000fd5b50005b600080fd5b34801561017557600080fd5b5061017f60035481565b6040519081526020015b60405180910390f35b34801561019e57600080fd5b506006546101b2906001600160a01b031681565b6040516001600160a01b039091168152602001610189565b3480156101d657600080fd5b506008546101b2906001600160a01b031681565b3480156101f657600080fd5b5061024d610205366004611580565b600a6020526000908152604090208054600182015460029092015490919063ffffffff808216916401000000008104821691600160401b82041690600160601b900460ff1686565b60408051968752602087019590955263ffffffff938416948601949094529082166060850152166080830152151560a082015260c001610189565b34801561029457600080fd5b506005546102a790610100900460ff1681565b60405160ff9091168152602001610189565b3480156102c557600080fd5b5061017f60045481565b3480156102db57600080fd5b506102ef6102ea366004611505565b610486565b005b3480156102fd57600080fd5b506102ef61030c366004611505565b6104db565b34801561031d57600080fd5b5061033161032c3660046115cf565b610527565b6040805192835260ff909116602083015201610189565b34801561035457600080fd5b506000546101b2906001600160a01b031681565b6102ef6103763660046115cf565b610578565b34801561038757600080fd5b506005546101b2906201000090046001600160a01b031681565b3480156103ad57600080fd5b506102ef610976565b3480156103c257600080fd5b5061017f60025481565b3480156103d857600080fd5b506102ef6103e7366004611505565b610b23565b3480156103f857600080fd5b506102ef610407366004611505565b610b6f565b34801561041857600080fd5b506005546102a79060ff1681565b34801561043257600080fd5b506009546101b2906001600160a01b031681565b34801561045257600080fd5b506102ef610461366004611505565b610bbb565b34801561047257600080fd5b506007546101b2906001600160a01b031681565b6000546001600160a01b031633146104b95760405162461bcd60e51b81526004016104b090611636565b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004016104b090611636565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008061053686610c53565b909250905060008161054884886117b8565b61055291906116a8565b60055490915061056a908890839060ff166000610e35565b945094505050509250929050565b600260015414156105cb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b0565b60026001908155600554600a916000916105ed9190610100900460ff166117ee565b60ff168152602081019190915260400160002060020154640100000000900463ffffffff1642106106595760405162461bcd60e51b8152602060048201526016602482015275213abcb4b73390283430b9b2b99030b9329037bb32b960511b60448201526064016104b0565b60008260ff166001141561066e57503461080b565b506007546040516370a0823160e01b8152336004820152829182916001600160a01b03909116906370a082319060240160206040518083038186803b1580156106b657600080fd5b505afa1580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190611599565b101561073c5760405162461bcd60e51b815260206004820181905260248201527f5573657220646f65736e2774206861766520656e6f7567682062616c616e636560448201526064016104b0565b600754604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e9060440160206040518083038186803b15801561078557600080fd5b505afa158015610799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd9190611599565b101561080b5760405162461bcd60e51b815260206004820152601960248201527f416c6c6f77616e63652070726f7669646564206973206c6f770000000000000060448201526064016104b0565b6000806108188584610527565b600554919350915061082e90839060ff16611051565b60055461084b906201000090046001600160a01b03163384611226565b6005805460ff191660ff83161790556002805483919060009061086f90849061166b565b90915550600090508061088187610c53565b90925090508061089183876117b8565b61089b91906116a8565b600360008282546108ac919061166b565b9091555050600160ff881614156108fd576006546040516001600160a01b039091169086156108fc029087906000818181858888f193505050501580156108f7573d6000803e3d6000fd5b5061091c565b60075460065461091c916001600160a01b039081169133911688611357565b604080513381526020810187905290810185905263ffffffff421660608201527f7a8ce7485c0a347f7e5f7b942c8ea1b2fc6b805ed8a9e9f6a005edf7e7467bd49060800160405180910390a15050600180555050505050565b6000546001600160a01b031633146109a05760405162461bcd60e51b81526004016104b090611636565b600554600a906000906109bd90600190610100900460ff166117ee565b60ff168152602081019190915260400160002060020154640100000000900463ffffffff164211610a305760405162461bcd60e51b815260206004820152601760248201527f50686173657320617265206e6f74206f7665722079657400000000000000000060448201526064016104b0565b6005546040516370a0823160e01b81523060048201526000916201000090046001600160a01b0316906370a082319060240160206040518083038186803b158015610a7a57600080fd5b505afa158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190611599565b905060008111610afd5760405162461bcd60e51b8152602060048201526016602482015275139bc81d1bdad95b9cc81b19599d081d1bc81cd95b9960521b60448201526064016104b0565b600554600654610b20916001600160a01b03620100009091048116911683611226565b50565b6000546001600160a01b03163314610b4d5760405162461bcd60e51b81526004016104b090611636565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b995760405162461bcd60e51b81526004016104b090611636565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610be55760405162461bcd60e51b81526004016104b090611636565b6001600160a01b038116610bf857600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000808460ff1660011415610d0657600960009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb357600080fd5b505afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190611557565b6001600160801b03169150670de0b6b3a76400009050610e2b565b600860009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5457600080fd5b505afa158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c9190611557565b6001600160801b03169150600760009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610de557600080fd5b505afa158015610df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1d91906115b2565b610e2890600a61170d565b90505b9094909350915050565b600554600090819060ff610100909104811690851610610eb25760405162461bcd60e51b815260206004820152603260248201527f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e747261636044820152711d081bdc88141a185cd948195e1c1a5c995960721b60648201526084016104b0565b60ff8085166000908152600a6020908152604091829020825160c081018452815481526001820154928101929092526002015463ffffffff808216938301939093526401000000008104831660608301819052600160401b82049093166080830152600160601b9004909216151560a083015242101561100d576000610f3c878360800151611495565b905060008260000151868460200151610f55919061166b565b610f5f91906117d7565b905080610f8857610f7c8989610f768a6001611683565b89610e35565b94509450505050611048565b818110610f9c575092508491506110489050565b82516020840151610fae90889061166b565b610fb891906117d7565b91506000610fca8460800151846114d6565b9050600080610fef8c610fdd858e6117d7565b610fe88d6001611683565b6000610e35565b9092509050610ffe858361166b565b97509550611048945050505050565b80516020820151600091611020916117d7565b90506110418888611032896001611683565b61103c898661166b565b610e35565b9350935050505b94509492505050565b60055460ff6101009091048116908216106110ae5760405162461bcd60e51b815260206004820152601e60248201527f416c6c20746f6b656e732068617665206265656e20657868617573746564000060448201526064016104b0565b60ff81166000908152600a602052604090206002810154640100000000900463ffffffff164210156111a3578054600182015484916110ec916117d7565b11156111115782816000016000828254611106919061166b565b909155506112219050565b805460018201548491611123916117d7565b141561114a576001810154815560028101805460ff60601b1916600160601b179055505050565b8054600182015460009161115d916117d7565b61116790856117d7565b600180840154845560028401805460ff60601b1916600160601b17905590915061119d908290611198908690611683565b611051565b50505050565b805460018201546000916111b6916117d7565b600180840154845560028401805460ff60601b1916600160601b1790559091508190600a906000906111e9908790611683565b60ff168152602001908152602001600020600101600082825461120c919061166b565b9091555061119d905084611198856001611683565b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161128291906115fb565b6000604051808303816000865af19150503d80600081146112bf576040519150601f19603f3d011682016040523d82523d6000602084013e6112c4565b606091505b50915091508180156112ee5750805115806112ee5750808060200190518101906112ee9190611535565b6113505760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b60648201526084016104b0565b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916113bb91906115fb565b6000604051808303816000865af19150503d80600081146113f8576040519150601f19603f3d011682016040523d82523d6000602084013e6113fd565b606091505b50915091508180156114275750805115806114275750808060200190518101906114279190611535565b61148d5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b60648201526084016104b0565b505050505050565b60006114ab63ffffffff83166305f5e1006117b8565b6004546114b890856117b8565b6114c39060646117b8565b6114cd91906116a8565b90505b92915050565b600060045460646114e791906117b8565b6114f763ffffffff8516846117b8565b6114c3906305f5e1006117b8565b60006020828403121561151757600080fd5b81356001600160a01b038116811461152e57600080fd5b9392505050565b60006020828403121561154757600080fd5b8151801515811461152e57600080fd5b60006020828403121561156957600080fd5b81516001600160801b038116811461152e57600080fd5b60006020828403121561159257600080fd5b5035919050565b6000602082840312156115ab57600080fd5b5051919050565b6000602082840312156115c457600080fd5b815161152e81611827565b600080604083850312156115e257600080fd5b82356115ed81611827565b946020939093013593505050565b6000825160005b8181101561161c5760208186018101518583015201611602565b8181111561162b576000828501525b509190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561167e5761167e611811565b500190565b600060ff821660ff84168060ff038211156116a0576116a0611811565b019392505050565b6000826116c557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156117055781600019048211156116eb576116eb611811565b808516156116f857918102915b93841c93908002906116cf565b509250929050565b60006114cd60ff841683600082611726575060016114d0565b81611733575060006114d0565b816001811461174957600281146117535761176f565b60019150506114d0565b60ff84111561176457611764611811565b50506001821b6114d0565b5060208310610133831016604e8410600b8410161715611792575081810a6114d0565b61179c83836116ca565b80600019048211156117b0576117b0611811565b029392505050565b60008160001904831182151516156117d2576117d2611811565b500290565b6000828210156117e9576117e9611811565b500390565b600060ff821660ff84168082101561180857611808611811565b90039392505050565b634e487b7160e01b600052601160045260246000fd5b60ff81168114610b2057600080fdfea264697066735822122043382a61f4d168d174f9ec0377d1f8229a892f03697939f3c961dc902bc5856d64736f6c63430008070033e1eb2b2161a492c07c5a334e48012567cba93ec021043f53c1955516a3c5a843a856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa3975b000000000000000000000000f68d4d917592f3a62417ace42592f15296cc33a0

Deployed Bytecode

0x6080604052600436106101235760003560e01c8063940c333e116100a0578063ddcbdaf211610064578063ddcbdaf2146103ec578063e8e438591461040c578063ef5f567914610426578063f2fde38b14610446578063ff920c741461046657600080fd5b8063940c333e146103685780639d76ea581461037b578063b3fcfd6a146103a1578063b5f7f636146103b6578063d02c7f7e146103cc57600080fd5b80635caed029116100e75780635caed029146102b95780636b8eed0a146102cf57806375d60372146102f157806381409bab146103115780638da5cb5b1461034857600080fd5b806308c89b6d1461016957806316fed3e214610192578063195619bb146101ca5780631a4b0a25146101ea5780633c5d18121461028857600080fd5b36610164576006546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610161573d6000803e3d6000fd5b50005b600080fd5b34801561017557600080fd5b5061017f60035481565b6040519081526020015b60405180910390f35b34801561019e57600080fd5b506006546101b2906001600160a01b031681565b6040516001600160a01b039091168152602001610189565b3480156101d657600080fd5b506008546101b2906001600160a01b031681565b3480156101f657600080fd5b5061024d610205366004611580565b600a6020526000908152604090208054600182015460029092015490919063ffffffff808216916401000000008104821691600160401b82041690600160601b900460ff1686565b60408051968752602087019590955263ffffffff938416948601949094529082166060850152166080830152151560a082015260c001610189565b34801561029457600080fd5b506005546102a790610100900460ff1681565b60405160ff9091168152602001610189565b3480156102c557600080fd5b5061017f60045481565b3480156102db57600080fd5b506102ef6102ea366004611505565b610486565b005b3480156102fd57600080fd5b506102ef61030c366004611505565b6104db565b34801561031d57600080fd5b5061033161032c3660046115cf565b610527565b6040805192835260ff909116602083015201610189565b34801561035457600080fd5b506000546101b2906001600160a01b031681565b6102ef6103763660046115cf565b610578565b34801561038757600080fd5b506005546101b2906201000090046001600160a01b031681565b3480156103ad57600080fd5b506102ef610976565b3480156103c257600080fd5b5061017f60025481565b3480156103d857600080fd5b506102ef6103e7366004611505565b610b23565b3480156103f857600080fd5b506102ef610407366004611505565b610b6f565b34801561041857600080fd5b506005546102a79060ff1681565b34801561043257600080fd5b506009546101b2906001600160a01b031681565b34801561045257600080fd5b506102ef610461366004611505565b610bbb565b34801561047257600080fd5b506007546101b2906001600160a01b031681565b6000546001600160a01b031633146104b95760405162461bcd60e51b81526004016104b090611636565b60405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146105055760405162461bcd60e51b81526004016104b090611636565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008061053686610c53565b909250905060008161054884886117b8565b61055291906116a8565b60055490915061056a908890839060ff166000610e35565b945094505050509250929050565b600260015414156105cb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104b0565b60026001908155600554600a916000916105ed9190610100900460ff166117ee565b60ff168152602081019190915260400160002060020154640100000000900463ffffffff1642106106595760405162461bcd60e51b8152602060048201526016602482015275213abcb4b73390283430b9b2b99030b9329037bb32b960511b60448201526064016104b0565b60008260ff166001141561066e57503461080b565b506007546040516370a0823160e01b8152336004820152829182916001600160a01b03909116906370a082319060240160206040518083038186803b1580156106b657600080fd5b505afa1580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190611599565b101561073c5760405162461bcd60e51b815260206004820181905260248201527f5573657220646f65736e2774206861766520656e6f7567682062616c616e636560448201526064016104b0565b600754604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e9060440160206040518083038186803b15801561078557600080fd5b505afa158015610799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd9190611599565b101561080b5760405162461bcd60e51b815260206004820152601960248201527f416c6c6f77616e63652070726f7669646564206973206c6f770000000000000060448201526064016104b0565b6000806108188584610527565b600554919350915061082e90839060ff16611051565b60055461084b906201000090046001600160a01b03163384611226565b6005805460ff191660ff83161790556002805483919060009061086f90849061166b565b90915550600090508061088187610c53565b90925090508061089183876117b8565b61089b91906116a8565b600360008282546108ac919061166b565b9091555050600160ff881614156108fd576006546040516001600160a01b039091169086156108fc029087906000818181858888f193505050501580156108f7573d6000803e3d6000fd5b5061091c565b60075460065461091c916001600160a01b039081169133911688611357565b604080513381526020810187905290810185905263ffffffff421660608201527f7a8ce7485c0a347f7e5f7b942c8ea1b2fc6b805ed8a9e9f6a005edf7e7467bd49060800160405180910390a15050600180555050505050565b6000546001600160a01b031633146109a05760405162461bcd60e51b81526004016104b090611636565b600554600a906000906109bd90600190610100900460ff166117ee565b60ff168152602081019190915260400160002060020154640100000000900463ffffffff164211610a305760405162461bcd60e51b815260206004820152601760248201527f50686173657320617265206e6f74206f7665722079657400000000000000000060448201526064016104b0565b6005546040516370a0823160e01b81523060048201526000916201000090046001600160a01b0316906370a082319060240160206040518083038186803b158015610a7a57600080fd5b505afa158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190611599565b905060008111610afd5760405162461bcd60e51b8152602060048201526016602482015275139bc81d1bdad95b9cc81b19599d081d1bc81cd95b9960521b60448201526064016104b0565b600554600654610b20916001600160a01b03620100009091048116911683611226565b50565b6000546001600160a01b03163314610b4d5760405162461bcd60e51b81526004016104b090611636565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b995760405162461bcd60e51b81526004016104b090611636565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610be55760405162461bcd60e51b81526004016104b090611636565b6001600160a01b038116610bf857600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000808460ff1660011415610d0657600960009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb357600080fd5b505afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190611557565b6001600160801b03169150670de0b6b3a76400009050610e2b565b600860009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5457600080fd5b505afa158015610d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8c9190611557565b6001600160801b03169150600760009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610de557600080fd5b505afa158015610df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1d91906115b2565b610e2890600a61170d565b90505b9094909350915050565b600554600090819060ff610100909104811690851610610eb25760405162461bcd60e51b815260206004820152603260248201527f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e747261636044820152711d081bdc88141a185cd948195e1c1a5c995960721b60648201526084016104b0565b60ff8085166000908152600a6020908152604091829020825160c081018452815481526001820154928101929092526002015463ffffffff808216938301939093526401000000008104831660608301819052600160401b82049093166080830152600160601b9004909216151560a083015242101561100d576000610f3c878360800151611495565b905060008260000151868460200151610f55919061166b565b610f5f91906117d7565b905080610f8857610f7c8989610f768a6001611683565b89610e35565b94509450505050611048565b818110610f9c575092508491506110489050565b82516020840151610fae90889061166b565b610fb891906117d7565b91506000610fca8460800151846114d6565b9050600080610fef8c610fdd858e6117d7565b610fe88d6001611683565b6000610e35565b9092509050610ffe858361166b565b97509550611048945050505050565b80516020820151600091611020916117d7565b90506110418888611032896001611683565b61103c898661166b565b610e35565b9350935050505b94509492505050565b60055460ff6101009091048116908216106110ae5760405162461bcd60e51b815260206004820152601e60248201527f416c6c20746f6b656e732068617665206265656e20657868617573746564000060448201526064016104b0565b60ff81166000908152600a602052604090206002810154640100000000900463ffffffff164210156111a3578054600182015484916110ec916117d7565b11156111115782816000016000828254611106919061166b565b909155506112219050565b805460018201548491611123916117d7565b141561114a576001810154815560028101805460ff60601b1916600160601b179055505050565b8054600182015460009161115d916117d7565b61116790856117d7565b600180840154845560028401805460ff60601b1916600160601b17905590915061119d908290611198908690611683565b611051565b50505050565b805460018201546000916111b6916117d7565b600180840154845560028401805460ff60601b1916600160601b1790559091508190600a906000906111e9908790611683565b60ff168152602001908152602001600020600101600082825461120c919061166b565b9091555061119d905084611198856001611683565b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161128291906115fb565b6000604051808303816000865af19150503d80600081146112bf576040519150601f19603f3d011682016040523d82523d6000602084013e6112c4565b606091505b50915091508180156112ee5750805115806112ee5750808060200190518101906112ee9190611535565b6113505760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b60648201526084016104b0565b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916113bb91906115fb565b6000604051808303816000865af19150503d80600081146113f8576040519150601f19603f3d011682016040523d82523d6000602084013e6113fd565b606091505b50915091508180156114275750805115806114275750808060200190518101906114279190611535565b61148d5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b60648201526084016104b0565b505050505050565b60006114ab63ffffffff83166305f5e1006117b8565b6004546114b890856117b8565b6114c39060646117b8565b6114cd91906116a8565b90505b92915050565b600060045460646114e791906117b8565b6114f763ffffffff8516846117b8565b6114c3906305f5e1006117b8565b60006020828403121561151757600080fd5b81356001600160a01b038116811461152e57600080fd5b9392505050565b60006020828403121561154757600080fd5b8151801515811461152e57600080fd5b60006020828403121561156957600080fd5b81516001600160801b038116811461152e57600080fd5b60006020828403121561159257600080fd5b5035919050565b6000602082840312156115ab57600080fd5b5051919050565b6000602082840312156115c457600080fd5b815161152e81611827565b600080604083850312156115e257600080fd5b82356115ed81611827565b946020939093013593505050565b6000825160005b8181101561161c5760208186018101518583015201611602565b8181111561162b576000828501525b509190910192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561167e5761167e611811565b500190565b600060ff821660ff84168060ff038211156116a0576116a0611811565b019392505050565b6000826116c557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156117055781600019048211156116eb576116eb611811565b808516156116f857918102915b93841c93908002906116cf565b509250929050565b60006114cd60ff841683600082611726575060016114d0565b81611733575060006114d0565b816001811461174957600281146117535761176f565b60019150506114d0565b60ff84111561176457611764611811565b50506001821b6114d0565b5060208310610133831016604e8410600b8410161715611792575081810a6114d0565b61179c83836116ca565b80600019048211156117b0576117b0611811565b029392505050565b60008160001904831182151516156117d2576117d2611811565b500290565b6000828210156117e9576117e9611811565b500390565b600060ff821660ff84168082101561180857611808611811565b90039392505050565b634e487b7160e01b600052601160045260246000fd5b60ff81168114610b2057600080fdfea264697066735822122043382a61f4d168d174f9ec0377d1f8229a892f03697939f3c961dc902bc5856d64736f6c63430008070033

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

000000000000000000000000f68d4d917592f3a62417ace42592f15296cc33a0

-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0xf68D4d917592f3a62417aCE42592F15296cc33A0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f68d4d917592f3a62417ace42592f15296cc33a0


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.