FTM Price: $1.00 (-1.83%)
Gas: 34 GWei

Contract

0x39E4cF6cdb1890116e35B919C2601d23fB37F193
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0 FTM

FTM Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Value
Claim Tokens546358152023-01-29 4:02:45425 days ago1674964965IN
0x39E4cF6c...3fB37F193
0 FTM0.0028321940.54272478
Claim Tokens546357752023-01-29 4:01:50425 days ago1674964910IN
0x39E4cF6c...3fB37F193
0 FTM0.0019041227.25749279
Claim Tokens546357472023-01-29 4:01:09425 days ago1674964869IN
0x39E4cF6c...3fB37F193
0 FTM0.0028339340.56767978
Claim Tokens546357162023-01-29 4:00:34425 days ago1674964834IN
0x39E4cF6c...3fB37F193
0 FTM0.0019622328.08932608
Claim Tokens546356842023-01-29 3:59:55425 days ago1674964795IN
0x39E4cF6c...3fB37F193
0 FTM0.0019622328.08932608
Claim Tokens546355952023-01-29 3:58:05425 days ago1674964685IN
0x39E4cF6c...3fB37F193
0 FTM0.0028339340.56767978
Claim Tokens546353792023-01-29 3:54:11425 days ago1674964451IN
0x39E4cF6c...3fB37F193
0 FTM0.0028339340.56767978
Claim Tokens546353372023-01-29 3:53:35425 days ago1674964415IN
0x39E4cF6c...3fB37F193
0 FTM0.0028339340.56767978
Claim Tokens546353162023-01-29 3:53:07425 days ago1674964387IN
0x39E4cF6c...3fB37F193
0 FTM0.0019660428.143856
Claim Tokens546352332023-01-29 3:51:45425 days ago1674964305IN
0x39E4cF6c...3fB37F193
0 FTM0.0019660428.143856
Claim Tokens546346952023-01-29 3:40:15425 days ago1674963615IN
0x39E4cF6c...3fB37F193
0 FTM0.0028327140.55017685
Claim Tokens546346092023-01-29 3:37:29425 days ago1674963449IN
0x39E4cF6c...3fB37F193
0 FTM0.0028326240.54885177
Claim Tokens546345512023-01-29 3:36:01425 days ago1674963361IN
0x39E4cF6c...3fB37F193
0 FTM0.0028326240.54885177
Claim Tokens546344912023-01-29 3:34:22425 days ago1674963262IN
0x39E4cF6c...3fB37F193
0 FTM0.00215530.84885177
Claim Tokens546344772023-01-29 3:33:57425 days ago1674963237IN
0x39E4cF6c...3fB37F193
0 FTM0.0028326240.54885177
Claim Tokens546344612023-01-29 3:33:23425 days ago1674963203IN
0x39E4cF6c...3fB37F193
0 FTM0.0028329240.55321361
Claim Tokens546344462023-01-29 3:32:57425 days ago1674963177IN
0x39E4cF6c...3fB37F193
0 FTM0.0028364840.60421218
Claim Tokens546344392023-01-29 3:32:30425 days ago1674963150IN
0x39E4cF6c...3fB37F193
0 FTM0.0019145427.4065935
Claim Tokens546344022023-01-29 3:31:26425 days ago1674963086IN
0x39E4cF6c...3fB37F193
0 FTM0.002832540.54713959
Claim Tokens546343852023-01-29 3:30:47425 days ago1674963047IN
0x39E4cF6c...3fB37F193
0 FTM0.001914427.40465326
Claim Tokens546343562023-01-29 3:29:57425 days ago1674962997IN
0x39E4cF6c...3fB37F193
0 FTM0.003017141
Claim Tokens546343042023-01-29 3:28:02425 days ago1674962882IN
0x39E4cF6c...3fB37F193
0 FTM0.0024700535.35879768
Claim Tokens546342852023-01-29 3:27:25425 days ago1674962845IN
0x39E4cF6c...3fB37F193
0 FTM0.002832540.54713959
Claim Tokens546342652023-01-29 3:26:43425 days ago1674962803IN
0x39E4cF6c...3fB37F193
0 FTM0.002832540.54713959
Claim Tokens546341362023-01-29 3:22:47425 days ago1674962567IN
0x39E4cF6c...3fB37F193
0 FTM0.0028322640.54368296
View all transactions

Latest 14 internal transactions

Parent Txn Hash Block From To Value
173075262021-09-19 16:06:33921 days ago1632067593
0x39E4cF6c...3fB37F193
5,663.0002 FTM
173055222021-09-19 15:21:36921 days ago1632064896
0x39E4cF6c...3fB37F193
4,124.01 FTM
173005242021-09-19 13:15:57921 days ago1632057357
0x39E4cF6c...3fB37F193
4,998.09 FTM
172793002021-09-19 3:45:26922 days ago1632023126
0x39E4cF6c...3fB37F193
11,723.99997 FTM
172257232021-09-18 6:45:00923 days ago1631947500
0x39E4cF6c...3fB37F193
3,379 FTM
171950022021-09-17 17:28:48923 days ago1631899728
0x39E4cF6c...3fB37F193
3,874 FTM
171683802021-09-17 1:36:30924 days ago1631842590
0x39E4cF6c...3fB37F193
23,256.6 FTM
170757492021-09-15 6:17:09926 days ago1631686629
0x39E4cF6c...3fB37F193
1,000 FTM
170755312021-09-15 6:10:11926 days ago1631686211
0x39E4cF6c...3fB37F193
25,645.5 FTM
170454152021-09-14 13:54:52926 days ago1631627692
0x39E4cF6c...3fB37F193
21,953.99 FTM
169951062021-09-13 10:37:03928 days ago1631529423
0x39E4cF6c...3fB37F193
34,854 FTM
169763002021-09-13 1:31:55928 days ago1631496715
0x39E4cF6c...3fB37F193
22,286.99997 FTM
169511162021-09-12 16:49:00928 days ago1631465340
0x39E4cF6c...3fB37F193
11,391.1 FTM
169387542021-09-12 11:04:38929 days ago1631444678  Contract Creation0 FTM
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PaprPresale

Compiler Version
v0.7.0+commit.9e61f92b

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : Presale.sol
pragma solidity ^0.7.0;


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

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

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

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

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

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeERC20 {
    using Address for address;

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

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

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

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

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

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

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() internal {
        _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;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


contract PaprPresale is ReentrancyGuard, Ownable {
    
    using SafeMath for uint256;
    using SafeERC20 for IERC20;


    IERC20 public saleToken;
    bool public contractStatus;
    uint256 public hardcap;
    uint256 public startTime;
    uint256 public endTime;
    uint256 public lockTime;
    uint256 public maxParticipantCount;
    uint256 public maxBuyValue;
    uint256 public totalSellAmountToken;
    uint256 public totalSoldAmountToken;
    uint256 public totalSoldAmountBNB;

    struct roundDatas {
        uint256 roundStartDate;
        uint256 roundPercent;
    }
    
    struct investorData {
        uint256 totalBuyingAmountBNB;
        uint256 totalBuyingAmountToken;
        uint claimRound;
        uint256 lastClaimDate;
        uint256 claimedValue;
    }
    
    mapping(address => investorData) public _investorData;
    mapping(uint256 => roundDatas) public _roundDatas;

     receive() external payable{
        buyTokens();
      }
        
    
    address[] public allParticipantAddresses;
   
    constructor(
        IERC20 _saleToken,
        uint256 _startTime,
        bool _contractStatus,
        uint256 _endTime,
        uint256 _lockTime,
        uint256 _totalSellAmountToken,
        uint256 _hardcap
    ) public{
        require(
            _startTime < _endTime,
            "start block must be less than finish block"
        );
        require(
            _endTime > block.number,
            "finish block must be more than current block"
        );
      saleToken = _saleToken;
      contractStatus = _contractStatus;
      startTime = _startTime;
      endTime = _endTime;
      lockTime = _lockTime;
      totalSellAmountToken = _totalSellAmountToken;
      hardcap = _hardcap;
    }
    
     modifier isContractActive() {
        require(contractStatus, "Contract is not active");
        _;
    }
    
   
    
    function changeContractStatus(bool status) external nonReentrant onlyOwner {
        contractStatus = status;
    }
    
    function calculateTokenAmount(uint256 amount) public view returns (uint256) {
       return (totalSellAmountToken.mul(amount)).div(hardcap);
    }
    
    function returnParticipants() public view returns (address[] memory) {
       return allParticipantAddresses;
    }
    
     
    function buyTokens() public payable nonReentrant isContractActive {
        require(block.timestamp >= startTime);
        require(block.timestamp <= endTime);
        investorData storage investor = _investorData[msg.sender];
        require(hardcap <= hardcap.add(msg.value));
        uint256 totalTokenAmount = calculateTokenAmount(msg.value);
        investor.totalBuyingAmountBNB = investor.totalBuyingAmountBNB.add(msg.value);
        investor.totalBuyingAmountToken = investor.totalBuyingAmountToken.add(totalTokenAmount);
        totalSoldAmountToken = totalSoldAmountToken.add(totalTokenAmount);
        totalSoldAmountBNB = totalSoldAmountBNB.add(msg.value);
        
    }

    
    function withdrawBNB() external payable nonReentrant onlyOwner {
         payable(address(msg.sender)).transfer(address(this).balance);
    }
    
    function claimTokens() external nonReentrant {
        require(block.timestamp >= lockTime);
        investorData storage investor = _investorData[msg.sender];
        uint256 investorRoundNumber = investor.claimRound;
        roundDatas storage roundDetail = _roundDatas[investorRoundNumber];
        require(block.timestamp >= roundDetail.roundStartDate);
        require(investor.totalBuyingAmountToken >= investor.claimedValue.add(investor.totalBuyingAmountToken.mul(roundDetail.roundPercent).div(100)));
        require(saleToken.transfer(msg.sender, investor.totalBuyingAmountToken.mul(roundDetail.roundPercent).div(100)));
        investor.claimRound = investor.claimRound.add(1);
        investor.lastClaimDate = block.timestamp;
        investor.claimedValue = investor.claimedValue.add(investor.totalBuyingAmountToken.mul(roundDetail.roundPercent).div(100));
    }
    
    function addNewClaimRound(uint256 _roundNumber, uint256 _roundStartDate, uint256 _claimPercent) external nonReentrant onlyOwner {
    roundDatas storage roundDetail = _roundDatas[_roundNumber];
    roundDetail.roundStartDate = _roundStartDate;
    roundDetail.roundPercent = _claimPercent;
    }

    
    function transferAnyERC20Token(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        require(IERC20(_tokenAddr).transfer(_to, _amount), "Could not transfer out tokens!");
    }
     
    
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_saleToken","type":"address"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"bool","name":"_contractStatus","type":"bool"},{"internalType":"uint256","name":"_endTime","type":"uint256"},{"internalType":"uint256","name":"_lockTime","type":"uint256"},{"internalType":"uint256","name":"_totalSellAmountToken","type":"uint256"},{"internalType":"uint256","name":"_hardcap","type":"uint256"}],"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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_investorData","outputs":[{"internalType":"uint256","name":"totalBuyingAmountBNB","type":"uint256"},{"internalType":"uint256","name":"totalBuyingAmountToken","type":"uint256"},{"internalType":"uint256","name":"claimRound","type":"uint256"},{"internalType":"uint256","name":"lastClaimDate","type":"uint256"},{"internalType":"uint256","name":"claimedValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_roundDatas","outputs":[{"internalType":"uint256","name":"roundStartDate","type":"uint256"},{"internalType":"uint256","name":"roundPercent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_roundNumber","type":"uint256"},{"internalType":"uint256","name":"_roundStartDate","type":"uint256"},{"internalType":"uint256","name":"_claimPercent","type":"uint256"}],"name":"addNewClaimRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allParticipantAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeContractStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hardcap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxParticipantCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnParticipants","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellAmountToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSoldAmountBNB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSoldAmountToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawBNB","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516112ca3803806112ca833981810160405260e081101561003357600080fd5b508051602082015160408301516060840151608085015160a086015160c09096015160016000559495939492939192909190610075610070610146565b61014a565b8386106100b35760405162461bcd60e51b815260040180806020018281038252602a815260200180611274602a913960400191505060405180910390fd5b4384116100f15760405162461bcd60e51b815260040180806020018281038252602c81526020018061129e602c913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b03989098169790971760ff60a01b1916600160a01b951515959095029490941790955560049390935560055560069190915560099190915560035561019c565b3390565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6110c9806101ab6000396000f3fe60806040526004361061012a5760003560e01c80630d6680871461013e5780631d111d1314610165578063276ce5091461016d5780633197cbb6146101b057806348c54b9d146101c55780634b6c36b5146101da5780634c1199f1146102065780635ef448a91461021b5780636b8421ec146102515780636f5e270c14610266578063715018a61461027b57806378e97925146102905780638da5cb5b146102a557806392f5593e146102d6578063a24bcf46146102eb578063b071cbe614610315578063c462a4081461032a578063c6ee20d21461033f578063d0febe4c14610368578063d493b9ac14610370578063e06a5be0146103b3578063e985e367146103dd578063f2f18049146103f2578063f2fde38b14610457578063f38498dc1461048a57610139565b36610139576101376104e8565b005b600080fd5b34801561014a57600080fd5b5061015361062b565b60408051918252519081900360200190f35b610137610631565b34801561017957600080fd5b506101976004803603602081101561019057600080fd5b5035610712565b6040805192835260208301919091528051918290030190f35b3480156101bc57600080fd5b5061015361072b565b3480156101d157600080fd5b50610137610731565b3480156101e657600080fd5b50610137600480360360208110156101fd57600080fd5b503515156108f6565b34801561021257600080fd5b506101536109c6565b34801561022757600080fd5b506101376004803603606081101561023e57600080fd5b50803590602081013590604001356109cc565b34801561025d57600080fd5b50610153610a94565b34801561027257600080fd5b50610153610a9a565b34801561028757600080fd5b50610137610aa0565b34801561029c57600080fd5b50610153610b0e565b3480156102b157600080fd5b506102ba610b14565b604080516001600160a01b039092168252519081900360200190f35b3480156102e257600080fd5b50610153610b23565b3480156102f757600080fd5b506101536004803603602081101561030e57600080fd5b5035610b29565b34801561032157600080fd5b50610153610b4c565b34801561033657600080fd5b50610153610b52565b34801561034b57600080fd5b50610354610b58565b604080519115158252519081900360200190f35b6101376104e8565b34801561037c57600080fd5b506101376004803603606081101561039357600080fd5b506001600160a01b03813581169160208101359091169060400135610b68565b3480156103bf57600080fd5b506102ba600480360360208110156103d657600080fd5b5035610ca3565b3480156103e957600080fd5b506102ba610cca565b3480156103fe57600080fd5b50610407610cd9565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561044357818101518382015260200161042b565b505050509050019250505060405180910390f35b34801561046357600080fd5b506101376004803603602081101561047a57600080fd5b50356001600160a01b0316610d3b565b34801561049657600080fd5b506104bd600480360360208110156104ad57600080fd5b50356001600160a01b0316610dee565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6002600054141561052e576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600081905554600160a01b900460ff1661058a576040805162461bcd60e51b8152602060048201526016602482015275436f6e7472616374206973206e6f742061637469766560501b604482015290519081900360640190fd5b60045442101561059957600080fd5b6005544211156105a857600080fd5b336000908152600c602052604090206003546105c49034610e1d565b60035411156105d257600080fd5b60006105dd34610b29565b82549091506105ec9034610e1d565b825560018201546105fd9082610e1d565b6001830155600a5461060f9082610e1d565b600a55600b5461061f9034610e1d565b600b5550506001600055565b60065481565b60026000541415610677576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600055610684610e7c565b6001600160a01b0316610695610b14565b6001600160a01b0316146106de576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f1935050505015801561070a573d6000803e3d6000fd5b506001600055565b600d602052600090815260409020805460019091015482565b60055481565b60026000541415610777576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b600260005560065442101561078b57600080fd5b336000908152600c602090815260408083206002810154808552600d909352922080544210156107ba57600080fd5b6107ee6107e360646107dd84600101548760010154610e8090919063ffffffff16565b90610ed9565b600485015490610e1d565b836001015410156107fe57600080fd5b600254600182810154908501546001600160a01b039092169163a9059cbb91339161082f916064916107dd91610e80565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516108aa57600080fd5b60028301546108ba906001610e1d565b6002840155426003840155600180820154908401546108e4916107e3916064916107dd9190610e80565b60049093019290925550506001600055565b6002600054141561093c576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600055610949610e7c565b6001600160a01b031661095a610b14565b6001600160a01b0316146109a3576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b60028054911515600160a01b0260ff60a01b199092169190911790556001600055565b60085481565b60026000541415610a12576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600055610a1f610e7c565b6001600160a01b0316610a30610b14565b6001600160a01b031614610a79576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b6000928352600d602052604083209182556001918201559055565b600b5481565b600a5481565b610aa8610e7c565b6001600160a01b0316610ab9610b14565b6001600160a01b031614610b02576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b610b0c6000610f18565b565b60045481565b6001546001600160a01b031690565b60095481565b6000610b466003546107dd84600954610e8090919063ffffffff16565b92915050565b60035481565b60075481565b600254600160a01b900460ff1681565b610b70610e7c565b6001600160a01b0316610b81610b14565b6001600160a01b031614610bca576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b505050506040513d6020811015610c4b57600080fd5b5051610c9e576040805162461bcd60e51b815260206004820152601e60248201527f436f756c64206e6f74207472616e73666572206f757420746f6b656e73210000604482015290519081900360640190fd5b505050565b600e8181548110610cb057fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b031681565b6060600e805480602002602001604051908101604052809291908181526020018280548015610d3157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d13575b5050505050905090565b610d43610e7c565b6001600160a01b0316610d54610b14565b6001600160a01b031614610d9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b6001600160a01b038116610de25760405162461bcd60e51b815260040180806020018281038252602681526020018061102d6026913960400191505060405180910390fd5b610deb81610f18565b50565b600c60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b600082820183811015610e75576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b600082610e8f57506000610b46565b82820282848281610e9c57fe5b0414610e755760405162461bcd60e51b81526004018080602001828103825260218152602001806110536021913960400191505060405180910390fd5b6000610e7583836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250610f6a565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008183610ff65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610fbb578181015183820152602001610fa3565b50505050905090810190601f168015610fe85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161100257fe5b049594505050505056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c004f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220ceb6767024c4c76e376ce1cf8e9141df0c95fc4797dff2e8a491b5289c86564f64736f6c63430007000033737461727420626c6f636b206d757374206265206c657373207468616e2066696e69736820626c6f636b66696e69736820626c6f636b206d757374206265206d6f7265207468616e2063757272656e7420626c6f636b000000000000000000000000eff11197247ac09e0239ec9f83f7de13c186caa600000000000000000000000000000000000000000000000000000000613e240000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000061475e800000000000000000000000000000000000000000000000000000000061475e800000000000000000000000000000000000000000000000a2a15d09519be00000000000000000000000000000000000000000000000003f870857a3e0e3800000

Deployed Bytecode

0x60806040526004361061012a5760003560e01c80630d6680871461013e5780631d111d1314610165578063276ce5091461016d5780633197cbb6146101b057806348c54b9d146101c55780634b6c36b5146101da5780634c1199f1146102065780635ef448a91461021b5780636b8421ec146102515780636f5e270c14610266578063715018a61461027b57806378e97925146102905780638da5cb5b146102a557806392f5593e146102d6578063a24bcf46146102eb578063b071cbe614610315578063c462a4081461032a578063c6ee20d21461033f578063d0febe4c14610368578063d493b9ac14610370578063e06a5be0146103b3578063e985e367146103dd578063f2f18049146103f2578063f2fde38b14610457578063f38498dc1461048a57610139565b36610139576101376104e8565b005b600080fd5b34801561014a57600080fd5b5061015361062b565b60408051918252519081900360200190f35b610137610631565b34801561017957600080fd5b506101976004803603602081101561019057600080fd5b5035610712565b6040805192835260208301919091528051918290030190f35b3480156101bc57600080fd5b5061015361072b565b3480156101d157600080fd5b50610137610731565b3480156101e657600080fd5b50610137600480360360208110156101fd57600080fd5b503515156108f6565b34801561021257600080fd5b506101536109c6565b34801561022757600080fd5b506101376004803603606081101561023e57600080fd5b50803590602081013590604001356109cc565b34801561025d57600080fd5b50610153610a94565b34801561027257600080fd5b50610153610a9a565b34801561028757600080fd5b50610137610aa0565b34801561029c57600080fd5b50610153610b0e565b3480156102b157600080fd5b506102ba610b14565b604080516001600160a01b039092168252519081900360200190f35b3480156102e257600080fd5b50610153610b23565b3480156102f757600080fd5b506101536004803603602081101561030e57600080fd5b5035610b29565b34801561032157600080fd5b50610153610b4c565b34801561033657600080fd5b50610153610b52565b34801561034b57600080fd5b50610354610b58565b604080519115158252519081900360200190f35b6101376104e8565b34801561037c57600080fd5b506101376004803603606081101561039357600080fd5b506001600160a01b03813581169160208101359091169060400135610b68565b3480156103bf57600080fd5b506102ba600480360360208110156103d657600080fd5b5035610ca3565b3480156103e957600080fd5b506102ba610cca565b3480156103fe57600080fd5b50610407610cd9565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561044357818101518382015260200161042b565b505050509050019250505060405180910390f35b34801561046357600080fd5b506101376004803603602081101561047a57600080fd5b50356001600160a01b0316610d3b565b34801561049657600080fd5b506104bd600480360360208110156104ad57600080fd5b50356001600160a01b0316610dee565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6002600054141561052e576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600081905554600160a01b900460ff1661058a576040805162461bcd60e51b8152602060048201526016602482015275436f6e7472616374206973206e6f742061637469766560501b604482015290519081900360640190fd5b60045442101561059957600080fd5b6005544211156105a857600080fd5b336000908152600c602052604090206003546105c49034610e1d565b60035411156105d257600080fd5b60006105dd34610b29565b82549091506105ec9034610e1d565b825560018201546105fd9082610e1d565b6001830155600a5461060f9082610e1d565b600a55600b5461061f9034610e1d565b600b5550506001600055565b60065481565b60026000541415610677576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600055610684610e7c565b6001600160a01b0316610695610b14565b6001600160a01b0316146106de576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f1935050505015801561070a573d6000803e3d6000fd5b506001600055565b600d602052600090815260409020805460019091015482565b60055481565b60026000541415610777576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b600260005560065442101561078b57600080fd5b336000908152600c602090815260408083206002810154808552600d909352922080544210156107ba57600080fd5b6107ee6107e360646107dd84600101548760010154610e8090919063ffffffff16565b90610ed9565b600485015490610e1d565b836001015410156107fe57600080fd5b600254600182810154908501546001600160a01b039092169163a9059cbb91339161082f916064916107dd91610e80565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561087557600080fd5b505af1158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516108aa57600080fd5b60028301546108ba906001610e1d565b6002840155426003840155600180820154908401546108e4916107e3916064916107dd9190610e80565b60049093019290925550506001600055565b6002600054141561093c576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600055610949610e7c565b6001600160a01b031661095a610b14565b6001600160a01b0316146109a3576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b60028054911515600160a01b0260ff60a01b199092169190911790556001600055565b60085481565b60026000541415610a12576040805162461bcd60e51b815260206004820152601f602482015260008051602061100d833981519152604482015290519081900360640190fd5b6002600055610a1f610e7c565b6001600160a01b0316610a30610b14565b6001600160a01b031614610a79576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b6000928352600d602052604083209182556001918201559055565b600b5481565b600a5481565b610aa8610e7c565b6001600160a01b0316610ab9610b14565b6001600160a01b031614610b02576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b610b0c6000610f18565b565b60045481565b6001546001600160a01b031690565b60095481565b6000610b466003546107dd84600954610e8090919063ffffffff16565b92915050565b60035481565b60075481565b600254600160a01b900460ff1681565b610b70610e7c565b6001600160a01b0316610b81610b14565b6001600160a01b031614610bca576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b505050506040513d6020811015610c4b57600080fd5b5051610c9e576040805162461bcd60e51b815260206004820152601e60248201527f436f756c64206e6f74207472616e73666572206f757420746f6b656e73210000604482015290519081900360640190fd5b505050565b600e8181548110610cb057fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b031681565b6060600e805480602002602001604051908101604052809291908181526020018280548015610d3157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d13575b5050505050905090565b610d43610e7c565b6001600160a01b0316610d54610b14565b6001600160a01b031614610d9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611074833981519152604482015290519081900360640190fd5b6001600160a01b038116610de25760405162461bcd60e51b815260040180806020018281038252602681526020018061102d6026913960400191505060405180910390fd5b610deb81610f18565b50565b600c60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b600082820183811015610e75576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b600082610e8f57506000610b46565b82820282848281610e9c57fe5b0414610e755760405162461bcd60e51b81526004018080602001828103825260218152602001806110536021913960400191505060405180910390fd5b6000610e7583836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250610f6a565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008183610ff65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610fbb578181015183820152602001610fa3565b50505050905090810190601f168015610fe85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161100257fe5b049594505050505056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c004f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220ceb6767024c4c76e376ce1cf8e9141df0c95fc4797dff2e8a491b5289c86564f64736f6c63430007000033

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

000000000000000000000000eff11197247ac09e0239ec9f83f7de13c186caa600000000000000000000000000000000000000000000000000000000613e240000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000061475e800000000000000000000000000000000000000000000000000000000061475e800000000000000000000000000000000000000000000000a2a15d09519be00000000000000000000000000000000000000000000000003f870857a3e0e3800000

-----Decoded View---------------
Arg [0] : _saleToken (address): 0xEFF11197247Ac09E0239ec9F83F7De13C186caA6
Arg [1] : _startTime (uint256): 1631462400
Arg [2] : _contractStatus (bool): True
Arg [3] : _endTime (uint256): 1632067200
Arg [4] : _lockTime (uint256): 1632067200
Arg [5] : _totalSellAmountToken (uint256): 3000000000000000000000
Arg [6] : _hardcap (uint256): 300000000000000000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000eff11197247ac09e0239ec9f83f7de13c186caa6
Arg [1] : 00000000000000000000000000000000000000000000000000000000613e2400
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 0000000000000000000000000000000000000000000000000000000061475e80
Arg [4] : 0000000000000000000000000000000000000000000000000000000061475e80
Arg [5] : 0000000000000000000000000000000000000000000000a2a15d09519be00000
Arg [6] : 000000000000000000000000000000000000000000003f870857a3e0e3800000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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.