ETH Price: $3,304.12 (+1.60%)
Gas: 5.37 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy NFT139751032022-01-10 2:24:151109 days ago1641781455IN
0x6EddF501...f3AA48de4
0.05 ETH0.005105680.66370744
Buy NFT139751032022-01-10 2:24:151109 days ago1641781455IN
0x6EddF501...f3AA48de4
0.05 ETH0.00772798122.09476703
Buy NFT139751032022-01-10 2:24:151109 days ago1641781455IN
0x6EddF501...f3AA48de4
0.05 ETH0.0051441581.27270501
Buy NFT139738452022-01-09 21:46:521110 days ago1641764812IN
0x6EddF501...f3AA48de4
0.05 ETH0.00982806155.27398695
Buy NFT139738452022-01-09 21:46:521110 days ago1641764812IN
0x6EddF501...f3AA48de4
0.05 ETH0.00982806155.27398695
Buy NFT139227532022-01-02 0:18:171118 days ago1641082697IN
0x6EddF501...f3AA48de4
0.05 ETH0.01229466152.92822926
Buy NFT139227532022-01-02 0:18:171118 days ago1641082697IN
0x6EddF501...f3AA48de4
0.05 ETH0.01115552138.75895742
Buy NFT139227532022-01-02 0:18:171118 days ago1641082697IN
0x6EddF501...f3AA48de4
0.05 ETH0.01193245148.42289711
Buy NFT139227532022-01-02 0:18:171118 days ago1641082697IN
0x6EddF501...f3AA48de4
0.05 ETH0.00899065111.83106423
Buy NFT137461312021-12-05 12:38:371145 days ago1638707917IN
0x6EddF501...f3AA48de4
0.05 ETH0.0056710389.59694699
Buy NFT137461312021-12-05 12:38:371145 days ago1638707917IN
0x6EddF501...f3AA48de4
0.05 ETH0.0058948993.13358285
Buy NFT137461312021-12-05 12:38:371145 days ago1638707917IN
0x6EddF501...f3AA48de4
0.05 ETH0.00645175101.93146228
Finalization136915432021-11-26 19:07:271154 days ago1637953647IN
0x6EddF501...f3AA48de4
0 ETH0.00391878127.52713553
Buy NFT136906832021-11-26 15:53:421154 days ago1637942022IN
0x6EddF501...f3AA48de4
0.05 ETH0.0226671104.99718614
Buy NFT136863572021-11-25 23:24:151155 days ago1637882655IN
0x6EddF501...f3AA48de4
0.05 ETH0.0163465681.09582942
Buy NFT136860902021-11-25 22:22:241155 days ago1637878944IN
0x6EddF501...f3AA48de4
0.05 ETH0.0196312197.39106214
Buy NFT136855952021-11-25 20:32:461155 days ago1637872366IN
0x6EddF501...f3AA48de4
0.05 ETH0.02651419121.24487437
Buy NFT136834792021-11-25 12:31:411155 days ago1637843501IN
0x6EddF501...f3AA48de4
0.05 ETH0.0231463114.82268345
Buy NFT136834072021-11-25 12:15:271155 days ago1637842527IN
0x6EddF501...f3AA48de4
0.1 ETH0.0261693582.07366461
Buy NFT136827952021-11-25 9:59:081155 days ago1637834348IN
0x6EddF501...f3AA48de4
0.05 ETH0.0190589194.5462551
Buy NFT136824992021-11-25 8:45:451155 days ago1637829945IN
0x6EddF501...f3AA48de4
0.55 ETH0.15442722112.37012363
Buy NFT136819732021-11-25 6:40:291155 days ago1637822429IN
0x6EddF501...f3AA48de4
0.05 ETH0.0197049296.55347961
Buy NFT136819012021-11-25 6:25:531155 days ago1637821553IN
0x6EddF501...f3AA48de4
0.05 ETH0.01431292456
Buy NFT136816172021-11-25 5:14:521155 days ago1637817292IN
0x6EddF501...f3AA48de4
0.05 ETH0.0202182100.29719238
Buy NFT136811692021-11-25 3:33:241155 days ago1637811204IN
0x6EddF501...f3AA48de4
0.05 ETH0.0252609117.01203444
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
136906832021-11-26 15:53:421154 days ago1637942022
0x6EddF501...f3AA48de4
0.05 ETH
136863572021-11-25 23:24:151155 days ago1637882655
0x6EddF501...f3AA48de4
0.05 ETH
136860902021-11-25 22:22:241155 days ago1637878944
0x6EddF501...f3AA48de4
0.05 ETH
136855952021-11-25 20:32:461155 days ago1637872366
0x6EddF501...f3AA48de4
0.05 ETH
136834792021-11-25 12:31:411155 days ago1637843501
0x6EddF501...f3AA48de4
0.05 ETH
136834072021-11-25 12:15:271155 days ago1637842527
0x6EddF501...f3AA48de4
0.1 ETH
136827952021-11-25 9:59:081155 days ago1637834348
0x6EddF501...f3AA48de4
0.05 ETH
136824992021-11-25 8:45:451155 days ago1637829945
0x6EddF501...f3AA48de4
0.55 ETH
136819732021-11-25 6:40:291155 days ago1637822429
0x6EddF501...f3AA48de4
0.05 ETH
136816172021-11-25 5:14:521155 days ago1637817292
0x6EddF501...f3AA48de4
0.05 ETH
136811692021-11-25 3:33:241155 days ago1637811204
0x6EddF501...f3AA48de4
0.05 ETH
136811382021-11-25 3:25:581155 days ago1637810758
0x6EddF501...f3AA48de4
0.05 ETH
136806372021-11-25 1:33:201155 days ago1637804000
0x6EddF501...f3AA48de4
0.05 ETH
136805892021-11-25 1:22:111155 days ago1637803331
0x6EddF501...f3AA48de4
0.05 ETH
136794022021-11-24 20:46:421156 days ago1637786802
0x6EddF501...f3AA48de4
0.05 ETH
136742112021-11-24 1:04:411156 days ago1637715881
0x6EddF501...f3AA48de4
0.05 ETH
136733502021-11-23 22:02:401157 days ago1637704960
0x6EddF501...f3AA48de4
0.1 ETH
136727832021-11-23 19:51:231157 days ago1637697083
0x6EddF501...f3AA48de4
0.05 ETH
136712222021-11-23 13:49:311157 days ago1637675371
0x6EddF501...f3AA48de4
0.05 ETH
136694232021-11-23 7:09:091157 days ago1637651349
0x6EddF501...f3AA48de4
0.05 ETH
136660862021-11-22 18:33:221158 days ago1637606002
0x6EddF501...f3AA48de4
1 ETH
136649902021-11-22 14:21:361158 days ago1637590896
0x6EddF501...f3AA48de4
0.05 ETH
136626302021-11-22 5:24:031158 days ago1637558643
0x6EddF501...f3AA48de4
0.1 ETH
136622342021-11-22 3:54:461158 days ago1637553286
0x6EddF501...f3AA48de4
0.1 ETH
136587042021-11-21 14:28:511159 days ago1637504931
0x6EddF501...f3AA48de4
0.25 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BabyDinosNFTICO

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-20
*/

// File: contracts/utils/SafeMath.sol
// SPDX-License-Identifier: MIT


pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            if (b > a) return (false, 0);
            return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            if (b == 0) return (false, 0);
            return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            if (b == 0) return (false, 0);
            return (true, a % b);
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * 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);
            return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards 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).
     *
     * 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);
            return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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;
    }
}

// File: contracts/IBabyDinosNFTToken.sol


pragma experimental ABIEncoderV2;

pragma solidity ^0.8.0;

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IBabyDinosNFTToken {
    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);
 
    function transferOwnership(address newOwner) external;

    function renounceMinter() external;

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    function mint(address recipient, uint256 mintAmount) external returns (bool);
}

// File: @openzeppelin/contracts/utils/Context.sol



pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol



pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: @openzeppelin/contracts/security/ReentrancyGuard.sol



pragma solidity ^0.8.0;

/**
 * @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;
    }
}

// File: contracts/crowdsale/Crowdsale.sol

pragma solidity ^0.8.0;





/**
 * @title Crowdsale
 * @dev Crowdsale is a base contract for managing a token crowdsale,
 * allowing investors to purchase tokens with ether. This contract implements
 * such functionality in its most fundamental form and can be extended to provide additional
 * functionality and/or custom behavior.
 * The external interface represents the basic interface for purchasing tokens, and conforms
 * the base architecture for crowdsales. It is *not* intended to be modified / overridden.
 * The internal interface conforms the extensible and modifiable surface of crowdsales. Override
 * the methods to add functionality. Consider using 'super' where appropriate to concatenate
 * behavior.
 */
contract Crowdsale is Context, ReentrancyGuard  {
    using SafeMath for uint256;

    // The token being sold
    IBabyDinosNFTToken private _token;

    // Amount of wei raised
    uint256 private _weiRaised;

    // Address where funds are collected
    address payable private _wallet;

    // Private Sale price is 0.05ETH
    uint256 internal _rate = 50000000000000000;

    /**
     * Event for token purchase logging
     * @param purchaser who paid for the tokens
     * @param beneficiary who got the tokens
     */
    event TokensPurchased(address indexed purchaser, address indexed beneficiary, uint256 mintAmount);

    /**
     * @param __wallet Address where collected funds will be forwarded to
     * @param __token Address of the token being sold
     */
    constructor (address payable __wallet, IBabyDinosNFTToken __token) public {
        require(__wallet != address(0), "Crowdsale: wallet is the zero address");
        require(address(__token) != address(0), "Crowdsale: token is the zero address");

        _wallet = __wallet;
        _token = __token;
    }

    /**
     * @return the token being sold.
     */
    function token() public view virtual returns (IBabyDinosNFTToken) {
        return _token;
    }

    /**
     * @return the address where funds are collected.
     */
    function wallet() public view virtual returns (address payable) {
        return _wallet;
    }

    /**
     * @return the number of token units a buyer gets per wei.
     */
    function rate() public view virtual returns (uint256) {
        return _rate;
    }

    /**
     * @return the amount of wei raised.
     */
    function weiRaised() public view virtual returns (uint256) {
        return _weiRaised;
    }

    /**
     * @dev low level token purchase ***DO NOT OVERRIDE***
     * This function has a non-reentrancy guard, so it shouldn't be called by
     * another `nonReentrant` function.
     * @param beneficiary Recipient of the token purchase
    **/
    function buyNFT(address beneficiary, uint256 mintAmount) public nonReentrant payable {
        uint256 weiAmount = msg.value;
        _preValidatePurchase(beneficiary, mintAmount, weiAmount);

        // update state ETH Amount
        _weiRaised = _weiRaised.add(weiAmount);

        _processPurchase(beneficiary, mintAmount);
        emit TokensPurchased(_msgSender(), beneficiary, mintAmount);

        _updatePurchasingState(beneficiary, weiAmount);

        _forwardFunds(beneficiary, weiAmount);
        _postValidatePurchase(beneficiary, weiAmount);
    }

    /**
     * @dev Override for extensions that require an internal state to check for validity (current user contributions,
     * etc.)
     * @param beneficiary Address receiving the tokens
     * @param mintAmount total no of tokens to be minted
     * @param weiAmount no of ETH sent
     */
    function _preValidatePurchase(address beneficiary, uint256 mintAmount, uint256 weiAmount) internal virtual {
        // solhint-disable-previous-line no-empty-blocks
    }

    /**
     * @dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send
     * tokens.
     * @param beneficiary Address receiving the tokens
     * @param mintAmount Total mint tokens
     */
    function _processPurchase(address beneficiary, uint256 mintAmount) internal virtual {
        _deliverTokens(beneficiary, mintAmount);
    }

    /**
     * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends
     * its tokens.
     * @param beneficiary Address performing the token purchase
     * @param mintAmount Total mint tokens
     */
    function _deliverTokens(address beneficiary, uint256 mintAmount) internal {
         
         /*********** COMMENTED REQUIRE BECAUSE IT WAS RETURNING BOOLEAN AND WE WERE LISTENING FROM THE INTERFACE THAT IT WILL RETURN BOOLEAN BUT IT REVERTS OUR TRANSACTION**************** */
         // Potentially dangerous assumption about the type of the token.
        require(
            token().mint(beneficiary, mintAmount)
            , "Crowdsale: transfer failed"
        );
    }

    /**
     * @dev Override for extensions that require an internal state to check for validity (current user contributions,
     * etc.)
     * @param beneficiary Address receiving the tokens
     * @param weiAmount Value in wei involved in the purchase
     */
    function _updatePurchasingState(address beneficiary, uint256 weiAmount) internal virtual {
        // solhint-disable-previous-line no-empty-blocks
    }

    /**
     * @dev Determines how ETH is stored/forwarded on purchases.
     */
    function _forwardFunds(address /*beneficiary*/, uint256 /*weiAmount*/) internal virtual {
        _wallet.transfer(msg.value);
    }

    /**
     * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid
     * conditions are not met.
     * @param beneficiary Address performing the token purchase
     * @param weiAmount Value in wei involved in the purchase
     */
    function _postValidatePurchase(address beneficiary, uint256 weiAmount) internal view virtual {
        // solhint-disable-previous-line no-empty-blocks
    }
}

// File: contracts/crowdsale/validation/TimedCrowdsale.sol

pragma solidity ^0.8.0;



/**
 * @title TimedCrowdsale
 * @dev Crowdsale accepting contributions only within a time frame.
 */
abstract contract TimedCrowdsale is Crowdsale {
    using SafeMath for uint256;

    uint256 internal _openingTime;
    uint256 private _closingTime;

    /**
     * Event for crowdsale extending
     * @param newClosingTime new closing time
     * @param prevClosingTime old closing time
     */
    event TimedCrowdsaleExtended(uint256 prevClosingTime, uint256 newClosingTime);

    /**
     * @dev Reverts if not in crowdsale time range.
     */
    modifier onlyWhileOpen {
        require(isOpen(), "TimedCrowdsale: not open");
        _;
    }

    /**
     * @dev Constructor, takes crowdsale opening and closing times.
     * @param __openingTime Crowdsale opening time
     * @param __closingTime Crowdsale closing time
     */
    constructor (uint256 __openingTime, uint256 __closingTime) {
        // solhint-disable-next-line not-rely-on-time
        require(__openingTime >= block.timestamp, "TimedCrowdsale: opening time is before current time");
        // solhint-disable-next-line max-line-length
        require(__closingTime > __openingTime, "TimedCrowdsale: opening time is not before closing time");

        _openingTime = __openingTime;
        _closingTime = __closingTime;
    }

    /**
     * @return the crowdsale opening time.
     */
    function openingTime() public view virtual returns (uint256) {
        return _openingTime;
    }

    /**
     * @return the crowdsale closing time.
     */
    function closingTime() public view virtual returns (uint256) {
        return _closingTime;
    }
   
    /**
     * @return true if the crowdsale is open, false otherwise.
     */
    function isOpen() public view virtual returns (bool) {
        // solhint-disable-next-line not-rely-on-time
        return block.timestamp >= _openingTime && block.timestamp <= _closingTime;
    }
    /**
     * @dev Checks whether the period in which the crowdsale is open has already elapsed.
     * @return Whether crowdsale period has elapsed
     */
    function hasClosed() public view virtual returns (bool) {
        // solhint-disable-next-line not-rely-on-time
        return block.timestamp > _closingTime;
    }

    /**
     * @dev Extend crowdsale.
     * @param newClosingTime Crowdsale closing time
     */
    function _extendTime(uint256 newClosingTime) internal virtual {
        require(!hasClosed(), "TimedCrowdsale: already closed");
        // solhint-disable-next-line max-line-length
        require(newClosingTime > _closingTime, "TimedCrowdsale: new closing time is before current closing time");

        emit TimedCrowdsaleExtended(_closingTime, newClosingTime);
        _closingTime = newClosingTime;
    }
}

// File: contracts/crowdsale/validation/CappedCrowdsale.sol

pragma solidity ^0.8.0;



/**
 * @title CappedCrowdsale
 * @dev Crowdsale with a limit for total contributions.
 */
abstract contract CappedCrowdsale is Crowdsale {
    using SafeMath for uint256;

    uint256 internal _cap;
    uint256 internal _minted;

    /**
     * @dev Constructor, takes maximum amount of wei accepted in the crowdsale.
     * @param cap Max amount of wei to be contributed
     */
    constructor (uint256 cap) {
        require(cap > 0, "CappedCrowdsale: cap is 0");
        _cap = cap;
    }

    /**
     * @return the cap of the crowdsale.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

    /**
     * @return the minted of the crowdsale.
     */
    function minted() public view returns (uint256) {
        return _minted;
    }

    /**
     * @dev Checks whether the cap has been reached.
     * @return Whether the cap was reached
     */
    function capReached() public view returns (bool) {
        return _minted >= _cap;
    }

    function incrementMinted(uint256 amountOfTokens) internal virtual {
        _minted +=  amountOfTokens;
    }

    function currentMinted() public view returns (uint256) {
        return _minted;
    }
}

// File: contracts/BabyDinosNFTICO.sol

pragma solidity ^0.8.0;

contract BabyDinosNFTICO is
    Crowdsale,
    CappedCrowdsale,
    TimedCrowdsale,
    Ownable
    {
    using SafeMath for uint256;

    /* Track investor contributions */
    uint256 public investorHardCap = 50; // 10 NFT
    mapping(address => uint256) public contributions;

    constructor(
        address payable _wallet,
        IBabyDinosNFTToken _token,
        uint256 _cap,
        uint256 _openingTime,
        uint256 _closingTime
    )
        public
        Crowdsale(_wallet, _token)
        CappedCrowdsale(_cap)
        TimedCrowdsale(_openingTime, _closingTime)
    {}

    /**
     * @dev Returns the amount contributed so far by a sepecific user.
     * @param _beneficiary Address of contributor
     * @return User contribution so far
     */
    function getUserContribution(address _beneficiary)
        public
        view
        returns (uint256)
    {
        return contributions[_beneficiary];
    }

    /**
     * @dev Extend parent behavior requiring purchase to respect investor min/max funding cap.
     * @param _beneficiary Token purchaser
     */
    function _preValidatePurchase(
        address _beneficiary,
        uint256 mintAmount,
        uint256 weiAmount
    ) internal virtual override onlyWhileOpen {

        // Check how many NFT are minted
        incrementMinted(mintAmount);
        require(currentMinted() <= _cap, "BabyDinosNFTICO: cap exceeded");
        require(
            weiAmount.div(mintAmount) == rate(),
            "BabyDinosNFTICO: Invalid ETH Amount"
        );

        // Validate inputs
        require(weiAmount != 0, "BabyDinosNFTICO: ETH sent 0");
        require(
            _beneficiary != address(0),
            "BabyDinosNFTICO: beneficiary zero address"
        );
        

        // Check max minting limit
        uint256 _existingContribution = contributions[_beneficiary];
        uint256 _newContribution = _existingContribution.add(mintAmount);
        require(
            _newContribution <= investorHardCap,
            "BabyDinosNFTICO: No of Mint MaxCap"
        );
        contributions[_beneficiary] = _newContribution;
    }

    function extendTime(uint256 closingTime) public virtual onlyOwner {
        _extendTime(closingTime);
    }

    /**
     * @dev If goal is Reached then change to change to ICO Stage
     * etc.)
     * @param _beneficiary Address receiving the tokens
     * @param _weiAmount Value in wei involved in the purchase
     */
    function _updatePurchasingState(address _beneficiary, uint256 _weiAmount)
        internal
        virtual
        override
    {    
        super._updatePurchasingState(_beneficiary, _weiAmount);
    }

    /**
     * @dev enables token transfers, called when owner calls finalize()
     */
    function finalization() public onlyOwner {
        token().renounceMinter();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"},{"internalType":"contract IBabyDinosNFTToken","name":"_token","type":"address"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_openingTime","type":"uint256"},{"internalType":"uint256","name":"_closingTime","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"prevClosingTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newClosingTime","type":"uint256"}],"name":"TimedCrowdsaleExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"purchaser","type":"address"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"TokensPurchased","type":"event"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"buyNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"capReached","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"closingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contributions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"closingTime","type":"uint256"}],"name":"extendTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"getUserContribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasClosed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"investorHardCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openingTime","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":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IBabyDinosNFTToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weiRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405266b1a2bc2ec500006004556032600a553480156200002157600080fd5b5060405162002271380380620022718339818101604052810190620000479190620003b0565b81818487876001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620000c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000be9062000583565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200013a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000131906200053f565b60405180910390fd5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000811162000204576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001fb9062000561565b60405180910390fd5b80600581905550504282101562000252576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024990620004fb565b60405180910390fd5b81811162000297576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028e906200051d565b60405180910390fd5b816007819055508060088190555050506000620002b96200036360201b60201c565b905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050505050620007d4565b600033905090565b6000815190506200037c8162000786565b92915050565b6000815190506200039381620007a0565b92915050565b600081519050620003aa81620007ba565b92915050565b600080600080600060a08688031215620003cf57620003ce6200061c565b5b6000620003df888289016200036b565b9550506020620003f28882890162000382565b9450506040620004058882890162000399565b9350506060620004188882890162000399565b92505060806200042b8882890162000399565b9150509295509295909350565b600062000447603383620005a5565b9150620004548262000621565b604082019050919050565b60006200046e603783620005a5565b91506200047b8262000670565b604082019050919050565b600062000495602483620005a5565b9150620004a282620006bf565b604082019050919050565b6000620004bc601983620005a5565b9150620004c9826200070e565b602082019050919050565b6000620004e3602583620005a5565b9150620004f08262000737565b604082019050919050565b60006020820190508181036000830152620005168162000438565b9050919050565b6000602082019050818103600083015262000538816200045f565b9050919050565b600060208201905081810360008301526200055a8162000486565b9050919050565b600060208201905081810360008301526200057c81620004ad565b9050919050565b600060208201905081810360008301526200059e81620004d4565b9050919050565b600082825260208201905092915050565b6000620005c382620005f2565b9050919050565b6000620005d782620005f2565b9050919050565b6000620005eb82620005b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b7f54696d656443726f776473616c653a206f70656e696e672074696d652069732060008201527f6265666f72652063757272656e742074696d6500000000000000000000000000602082015250565b7f54696d656443726f776473616c653a206f70656e696e672074696d652069732060008201527f6e6f74206265666f726520636c6f73696e672074696d65000000000000000000602082015250565b7f43726f776473616c653a20746f6b656e20697320746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f43617070656443726f776473616c653a20636170206973203000000000000000600082015250565b7f43726f776473616c653a2077616c6c657420697320746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6200079181620005ca565b81146200079d57600080fd5b50565b620007ab81620005de565b8114620007b757600080fd5b50565b620007c58162000612565b8114620007d157600080fd5b50565b611a8d80620007e46000396000f3fe60806040526004361061012a5760003560e01c8063715018a6116100ab578063b7a8807c1161006f578063b7a8807c1461038d578063b83855af146103b8578063bb8b2b47146103e3578063ed5db87414610420578063f2fde38b1461044b578063fc0c546a146104745761012a565b8063715018a6146102ef57806378abfbeb146103065780638da5cb5b1461031d578063a27aebbc14610348578063a82ba76f146103715761012a565b806347535d7b116100f257806347535d7b146102185780634b6753bc146102435780634f02c4201461026e5780634f93594514610299578063521eb273146102c45761012a565b80631515bc2b1461012f5780632c4e722e1461015a578063355274ea146101855780634042b66f146101b057806342e94c90146101db575b600080fd5b34801561013b57600080fd5b5061014461049f565b60405161015191906113e3565b60405180910390f35b34801561016657600080fd5b5061016f6104ab565b60405161017c9190611599565b60405180910390f35b34801561019157600080fd5b5061019a6104b5565b6040516101a79190611599565b60405180910390f35b3480156101bc57600080fd5b506101c56104bf565b6040516101d29190611599565b60405180910390f35b3480156101e757600080fd5b5061020260048036038101906101fd91906110ce565b6104c9565b60405161020f9190611599565b60405180910390f35b34801561022457600080fd5b5061022d6104e1565b60405161023a91906113e3565b60405180910390f35b34801561024f57600080fd5b506102586104fc565b6040516102659190611599565b60405180910390f35b34801561027a57600080fd5b50610283610506565b6040516102909190611599565b60405180910390f35b3480156102a557600080fd5b506102ae610510565b6040516102bb91906113e3565b60405180910390f35b3480156102d057600080fd5b506102d961051f565b6040516102e6919061139f565b60405180910390f35b3480156102fb57600080fd5b50610304610549565b005b34801561031257600080fd5b5061031b610686565b005b34801561032957600080fd5b5061033261076b565b60405161033f9190611384565b60405180910390f35b34801561035457600080fd5b5061036f600480360381019061036a9190611168565b610795565b005b61038b600480360381019061038691906110fb565b61081d565b005b34801561039957600080fd5b506103a2610937565b6040516103af9190611599565b60405180910390f35b3480156103c457600080fd5b506103cd610941565b6040516103da9190611599565b60405180910390f35b3480156103ef57600080fd5b5061040a600480360381019061040591906110ce565b61094b565b6040516104179190611599565b60405180910390f35b34801561042c57600080fd5b50610435610994565b6040516104429190611599565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d91906110ce565b61099a565b005b34801561048057600080fd5b50610489610b46565b60405161049691906113fe565b60405180910390f35b60006008544211905090565b6000600454905090565b6000600554905090565b6000600254905090565b600b6020528060005260406000206000915090505481565b600060075442101580156104f757506008544211155b905090565b6000600854905090565b6000600654905090565b60006005546006541015905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610551610b70565b73ffffffffffffffffffffffffffffffffffffffff1661056f61076b565b73ffffffffffffffffffffffffffffffffffffffff16146105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc906114d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61068e610b70565b73ffffffffffffffffffffffffffffffffffffffff166106ac61076b565b73ffffffffffffffffffffffffffffffffffffffff1614610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f9906114d9565b60405180910390fd5b61070a610b46565b73ffffffffffffffffffffffffffffffffffffffff1663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561075157600080fd5b505af1158015610765573d6000803e3d6000fd5b50505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61079d610b70565b73ffffffffffffffffffffffffffffffffffffffff166107bb61076b565b73ffffffffffffffffffffffffffffffffffffffff1614610811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610808906114d9565b60405180910390fd5b61081a81610b78565b50565b60026000541415610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90611579565b60405180910390fd5b6002600081905550600034905061087b838383610c49565b61089081600254610edf90919063ffffffff16565b6002819055506108a08383610ef5565b8273ffffffffffffffffffffffffffffffffffffffff166108bf610b70565b73ffffffffffffffffffffffffffffffffffffffff167ff9b4eb3e43eebbf559e9b96ceff1c786a7edab2938c7f5f80678197c2e0edba5846040516109049190611599565b60405180910390a36109168382610f03565b6109208382610f11565b61092a8382610f7e565b5060016000819055505050565b6000600754905090565b6000600654905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b6109a2610b70565b73ffffffffffffffffffffffffffffffffffffffff166109c061076b565b73ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906114d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90611419565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b610b8061049f565b15610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790611499565b60405180910390fd5b6008548111610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb906114b9565b60405180910390fd5b7f46711e222f558a07afd26e5e71b48ecb0a8b2cdcd40faeb1323e05e2c76a2f3260085482604051610c379291906115b4565b60405180910390a18060088190555050565b610c516104e1565b610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8790611439565b60405180910390fd5b610c9982610f82565b600554610ca4610941565b1115610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90611519565b60405180910390fd5b610ced6104ab565b610d008383610f9e90919063ffffffff16565b14610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790611539565b60405180910390fd5b6000811415610d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7b906114f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90611479565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610e4d8483610edf90919063ffffffff16565b9050600a54811115610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90611559565b60405180910390fd5b80600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b60008183610eed91906115ee565b905092915050565b610eff8282610fb4565b5050565b610f0d828261108b565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f79573d6000803e3d6000fd5b505050565b5050565b8060066000828254610f9491906115ee565b9250508190555050565b60008183610fac9190611644565b905092915050565b610fbc610b46565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610ff69291906113ba565b602060405180830381600087803b15801561101057600080fd5b505af1158015611024573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611048919061113b565b611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90611459565b60405180910390fd5b5050565b5050565b60008135905061109e81611a12565b92915050565b6000815190506110b381611a29565b92915050565b6000813590506110c881611a40565b92915050565b6000602082840312156110e4576110e3611763565b5b60006110f28482850161108f565b91505092915050565b6000806040838503121561111257611111611763565b5b60006111208582860161108f565b9250506020611131858286016110b9565b9150509250929050565b60006020828403121561115157611150611763565b5b600061115f848285016110a4565b91505092915050565b60006020828403121561117e5761117d611763565b5b600061118c848285016110b9565b91505092915050565b61119e81611687565b82525050565b6111ad81611675565b82525050565b6111bc81611699565b82525050565b6111cb816116cf565b82525050565b60006111de6026836115dd565b91506111e982611768565b604082019050919050565b60006112016018836115dd565b915061120c826117b7565b602082019050919050565b6000611224601a836115dd565b915061122f826117e0565b602082019050919050565b60006112476029836115dd565b915061125282611809565b604082019050919050565b600061126a601e836115dd565b915061127582611858565b602082019050919050565b600061128d603f836115dd565b915061129882611881565b604082019050919050565b60006112b06020836115dd565b91506112bb826118d0565b602082019050919050565b60006112d3601b836115dd565b91506112de826118f9565b602082019050919050565b60006112f6601d836115dd565b915061130182611922565b602082019050919050565b60006113196023836115dd565b91506113248261194b565b604082019050919050565b600061133c6022836115dd565b91506113478261199a565b604082019050919050565b600061135f601f836115dd565b915061136a826119e9565b602082019050919050565b61137e816116c5565b82525050565b600060208201905061139960008301846111a4565b92915050565b60006020820190506113b46000830184611195565b92915050565b60006040820190506113cf60008301856111a4565b6113dc6020830184611375565b9392505050565b60006020820190506113f860008301846111b3565b92915050565b600060208201905061141360008301846111c2565b92915050565b60006020820190508181036000830152611432816111d1565b9050919050565b60006020820190508181036000830152611452816111f4565b9050919050565b6000602082019050818103600083015261147281611217565b9050919050565b600060208201905081810360008301526114928161123a565b9050919050565b600060208201905081810360008301526114b28161125d565b9050919050565b600060208201905081810360008301526114d281611280565b9050919050565b600060208201905081810360008301526114f2816112a3565b9050919050565b60006020820190508181036000830152611512816112c6565b9050919050565b60006020820190508181036000830152611532816112e9565b9050919050565b600060208201905081810360008301526115528161130c565b9050919050565b600060208201905081810360008301526115728161132f565b9050919050565b6000602082019050818103600083015261159281611352565b9050919050565b60006020820190506115ae6000830184611375565b92915050565b60006040820190506115c96000830185611375565b6115d66020830184611375565b9392505050565b600082825260208201905092915050565b60006115f9826116c5565b9150611604836116c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561163957611638611705565b5b828201905092915050565b600061164f826116c5565b915061165a836116c5565b92508261166a57611669611734565b5b828204905092915050565b6000611680826116a5565b9050919050565b6000611692826116a5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006116da826116e1565b9050919050565b60006116ec826116f3565b9050919050565b60006116fe826116a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f54696d656443726f776473616c653a206e6f74206f70656e0000000000000000600082015250565b7f43726f776473616c653a207472616e73666572206661696c6564000000000000600082015250565b7f4261627944696e6f734e465449434f3a2062656e6566696369617279207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b7f54696d656443726f776473616c653a20616c726561647920636c6f7365640000600082015250565b7f54696d656443726f776473616c653a206e657720636c6f73696e672074696d6560008201527f206973206265666f72652063757272656e7420636c6f73696e672074696d6500602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4261627944696e6f734e465449434f3a204554482073656e7420300000000000600082015250565b7f4261627944696e6f734e465449434f3a20636170206578636565646564000000600082015250565b7f4261627944696e6f734e465449434f3a20496e76616c69642045544820416d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b7f4261627944696e6f734e465449434f3a204e6f206f66204d696e74204d61784360008201527f6170000000000000000000000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611a1b81611675565b8114611a2657600080fd5b50565b611a3281611699565b8114611a3d57600080fd5b50565b611a49816116c5565b8114611a5457600080fd5b5056fea2646970667358221220294ab6490345fdf7a300eb3f77138ad47e0399a604191f44adb444af6d97293b64736f6c63430008070033000000000000000000000000f9daccc7331d6d91627244ac303acaf71c39b06a000000000000000000000000df93e81f3231afaea101861ea3f6ca109fb075aa0000000000000000000000000000000000000000000000000000000000002b13000000000000000000000000000000000000000000000000000000006176f0a00000000000000000000000000000000000000000000000000000000074dd3af0

Deployed Bytecode

0x60806040526004361061012a5760003560e01c8063715018a6116100ab578063b7a8807c1161006f578063b7a8807c1461038d578063b83855af146103b8578063bb8b2b47146103e3578063ed5db87414610420578063f2fde38b1461044b578063fc0c546a146104745761012a565b8063715018a6146102ef57806378abfbeb146103065780638da5cb5b1461031d578063a27aebbc14610348578063a82ba76f146103715761012a565b806347535d7b116100f257806347535d7b146102185780634b6753bc146102435780634f02c4201461026e5780634f93594514610299578063521eb273146102c45761012a565b80631515bc2b1461012f5780632c4e722e1461015a578063355274ea146101855780634042b66f146101b057806342e94c90146101db575b600080fd5b34801561013b57600080fd5b5061014461049f565b60405161015191906113e3565b60405180910390f35b34801561016657600080fd5b5061016f6104ab565b60405161017c9190611599565b60405180910390f35b34801561019157600080fd5b5061019a6104b5565b6040516101a79190611599565b60405180910390f35b3480156101bc57600080fd5b506101c56104bf565b6040516101d29190611599565b60405180910390f35b3480156101e757600080fd5b5061020260048036038101906101fd91906110ce565b6104c9565b60405161020f9190611599565b60405180910390f35b34801561022457600080fd5b5061022d6104e1565b60405161023a91906113e3565b60405180910390f35b34801561024f57600080fd5b506102586104fc565b6040516102659190611599565b60405180910390f35b34801561027a57600080fd5b50610283610506565b6040516102909190611599565b60405180910390f35b3480156102a557600080fd5b506102ae610510565b6040516102bb91906113e3565b60405180910390f35b3480156102d057600080fd5b506102d961051f565b6040516102e6919061139f565b60405180910390f35b3480156102fb57600080fd5b50610304610549565b005b34801561031257600080fd5b5061031b610686565b005b34801561032957600080fd5b5061033261076b565b60405161033f9190611384565b60405180910390f35b34801561035457600080fd5b5061036f600480360381019061036a9190611168565b610795565b005b61038b600480360381019061038691906110fb565b61081d565b005b34801561039957600080fd5b506103a2610937565b6040516103af9190611599565b60405180910390f35b3480156103c457600080fd5b506103cd610941565b6040516103da9190611599565b60405180910390f35b3480156103ef57600080fd5b5061040a600480360381019061040591906110ce565b61094b565b6040516104179190611599565b60405180910390f35b34801561042c57600080fd5b50610435610994565b6040516104429190611599565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d91906110ce565b61099a565b005b34801561048057600080fd5b50610489610b46565b60405161049691906113fe565b60405180910390f35b60006008544211905090565b6000600454905090565b6000600554905090565b6000600254905090565b600b6020528060005260406000206000915090505481565b600060075442101580156104f757506008544211155b905090565b6000600854905090565b6000600654905090565b60006005546006541015905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610551610b70565b73ffffffffffffffffffffffffffffffffffffffff1661056f61076b565b73ffffffffffffffffffffffffffffffffffffffff16146105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc906114d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61068e610b70565b73ffffffffffffffffffffffffffffffffffffffff166106ac61076b565b73ffffffffffffffffffffffffffffffffffffffff1614610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f9906114d9565b60405180910390fd5b61070a610b46565b73ffffffffffffffffffffffffffffffffffffffff1663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561075157600080fd5b505af1158015610765573d6000803e3d6000fd5b50505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61079d610b70565b73ffffffffffffffffffffffffffffffffffffffff166107bb61076b565b73ffffffffffffffffffffffffffffffffffffffff1614610811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610808906114d9565b60405180910390fd5b61081a81610b78565b50565b60026000541415610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a90611579565b60405180910390fd5b6002600081905550600034905061087b838383610c49565b61089081600254610edf90919063ffffffff16565b6002819055506108a08383610ef5565b8273ffffffffffffffffffffffffffffffffffffffff166108bf610b70565b73ffffffffffffffffffffffffffffffffffffffff167ff9b4eb3e43eebbf559e9b96ceff1c786a7edab2938c7f5f80678197c2e0edba5846040516109049190611599565b60405180910390a36109168382610f03565b6109208382610f11565b61092a8382610f7e565b5060016000819055505050565b6000600754905090565b6000600654905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b6109a2610b70565b73ffffffffffffffffffffffffffffffffffffffff166109c061076b565b73ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906114d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90611419565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b610b8061049f565b15610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790611499565b60405180910390fd5b6008548111610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb906114b9565b60405180910390fd5b7f46711e222f558a07afd26e5e71b48ecb0a8b2cdcd40faeb1323e05e2c76a2f3260085482604051610c379291906115b4565b60405180910390a18060088190555050565b610c516104e1565b610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8790611439565b60405180910390fd5b610c9982610f82565b600554610ca4610941565b1115610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90611519565b60405180910390fd5b610ced6104ab565b610d008383610f9e90919063ffffffff16565b14610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790611539565b60405180910390fd5b6000811415610d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7b906114f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90611479565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000610e4d8483610edf90919063ffffffff16565b9050600a54811115610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90611559565b60405180910390fd5b80600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b60008183610eed91906115ee565b905092915050565b610eff8282610fb4565b5050565b610f0d828261108b565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f79573d6000803e3d6000fd5b505050565b5050565b8060066000828254610f9491906115ee565b9250508190555050565b60008183610fac9190611644565b905092915050565b610fbc610b46565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610ff69291906113ba565b602060405180830381600087803b15801561101057600080fd5b505af1158015611024573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611048919061113b565b611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90611459565b60405180910390fd5b5050565b5050565b60008135905061109e81611a12565b92915050565b6000815190506110b381611a29565b92915050565b6000813590506110c881611a40565b92915050565b6000602082840312156110e4576110e3611763565b5b60006110f28482850161108f565b91505092915050565b6000806040838503121561111257611111611763565b5b60006111208582860161108f565b9250506020611131858286016110b9565b9150509250929050565b60006020828403121561115157611150611763565b5b600061115f848285016110a4565b91505092915050565b60006020828403121561117e5761117d611763565b5b600061118c848285016110b9565b91505092915050565b61119e81611687565b82525050565b6111ad81611675565b82525050565b6111bc81611699565b82525050565b6111cb816116cf565b82525050565b60006111de6026836115dd565b91506111e982611768565b604082019050919050565b60006112016018836115dd565b915061120c826117b7565b602082019050919050565b6000611224601a836115dd565b915061122f826117e0565b602082019050919050565b60006112476029836115dd565b915061125282611809565b604082019050919050565b600061126a601e836115dd565b915061127582611858565b602082019050919050565b600061128d603f836115dd565b915061129882611881565b604082019050919050565b60006112b06020836115dd565b91506112bb826118d0565b602082019050919050565b60006112d3601b836115dd565b91506112de826118f9565b602082019050919050565b60006112f6601d836115dd565b915061130182611922565b602082019050919050565b60006113196023836115dd565b91506113248261194b565b604082019050919050565b600061133c6022836115dd565b91506113478261199a565b604082019050919050565b600061135f601f836115dd565b915061136a826119e9565b602082019050919050565b61137e816116c5565b82525050565b600060208201905061139960008301846111a4565b92915050565b60006020820190506113b46000830184611195565b92915050565b60006040820190506113cf60008301856111a4565b6113dc6020830184611375565b9392505050565b60006020820190506113f860008301846111b3565b92915050565b600060208201905061141360008301846111c2565b92915050565b60006020820190508181036000830152611432816111d1565b9050919050565b60006020820190508181036000830152611452816111f4565b9050919050565b6000602082019050818103600083015261147281611217565b9050919050565b600060208201905081810360008301526114928161123a565b9050919050565b600060208201905081810360008301526114b28161125d565b9050919050565b600060208201905081810360008301526114d281611280565b9050919050565b600060208201905081810360008301526114f2816112a3565b9050919050565b60006020820190508181036000830152611512816112c6565b9050919050565b60006020820190508181036000830152611532816112e9565b9050919050565b600060208201905081810360008301526115528161130c565b9050919050565b600060208201905081810360008301526115728161132f565b9050919050565b6000602082019050818103600083015261159281611352565b9050919050565b60006020820190506115ae6000830184611375565b92915050565b60006040820190506115c96000830185611375565b6115d66020830184611375565b9392505050565b600082825260208201905092915050565b60006115f9826116c5565b9150611604836116c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561163957611638611705565b5b828201905092915050565b600061164f826116c5565b915061165a836116c5565b92508261166a57611669611734565b5b828204905092915050565b6000611680826116a5565b9050919050565b6000611692826116a5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006116da826116e1565b9050919050565b60006116ec826116f3565b9050919050565b60006116fe826116a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f54696d656443726f776473616c653a206e6f74206f70656e0000000000000000600082015250565b7f43726f776473616c653a207472616e73666572206661696c6564000000000000600082015250565b7f4261627944696e6f734e465449434f3a2062656e6566696369617279207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b7f54696d656443726f776473616c653a20616c726561647920636c6f7365640000600082015250565b7f54696d656443726f776473616c653a206e657720636c6f73696e672074696d6560008201527f206973206265666f72652063757272656e7420636c6f73696e672074696d6500602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4261627944696e6f734e465449434f3a204554482073656e7420300000000000600082015250565b7f4261627944696e6f734e465449434f3a20636170206578636565646564000000600082015250565b7f4261627944696e6f734e465449434f3a20496e76616c69642045544820416d6f60008201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b7f4261627944696e6f734e465449434f3a204e6f206f66204d696e74204d61784360008201527f6170000000000000000000000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611a1b81611675565b8114611a2657600080fd5b50565b611a3281611699565b8114611a3d57600080fd5b50565b611a49816116c5565b8114611a5457600080fd5b5056fea2646970667358221220294ab6490345fdf7a300eb3f77138ad47e0399a604191f44adb444af6d97293b64736f6c63430008070033

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

000000000000000000000000f9daccc7331d6d91627244ac303acaf71c39b06a000000000000000000000000df93e81f3231afaea101861ea3f6ca109fb075aa0000000000000000000000000000000000000000000000000000000000002b13000000000000000000000000000000000000000000000000000000006176f0a00000000000000000000000000000000000000000000000000000000074dd3af0

-----Decoded View---------------
Arg [0] : _wallet (address): 0xF9daccc7331d6D91627244aC303ACAF71c39B06A
Arg [1] : _token (address): 0xDf93E81F3231AfAEA101861ea3F6Ca109fB075Aa
Arg [2] : _cap (uint256): 11027
Arg [3] : _openingTime (uint256): 1635184800
Arg [4] : _closingTime (uint256): 1960655600

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000f9daccc7331d6d91627244ac303acaf71c39b06a
Arg [1] : 000000000000000000000000df93e81f3231afaea101861ea3f6ca109fb075aa
Arg [2] : 0000000000000000000000000000000000000000000000000000000000002b13
Arg [3] : 000000000000000000000000000000000000000000000000000000006176f0a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000074dd3af0


Deployed Bytecode Sourcemap

24136:2939:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22033:167;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15935:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23404:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16088:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24375:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21665:200;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21473:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23550:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23755:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15748:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10352:148;;;;;;;;;;;;;:::i;:::-;;26988:84;;;;;;;;;;;;;:::i;:::-;;9701:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26343:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16448:576;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21304:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23972:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24938:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24323:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10655:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15569:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22033:167;22083:4;22180:12;;22162:15;:30;22155:37;;22033:167;:::o;15935:85::-;15980:7;16007:5;;16000:12;;15935:85;:::o;23404:75::-;23440:7;23467:4;;23460:11;;23404:75;:::o;16088:95::-;16138:7;16165:10;;16158:17;;16088:95;:::o;24375:48::-;;;;;;;;;;;;;;;;;:::o;21665:200::-;21712:4;21810:12;;21791:15;:31;;:66;;;;;21845:12;;21826:15;:31;;21791:66;21784:73;;21665:200;:::o;21473:99::-;21525:7;21552:12;;21545:19;;21473:99;:::o;23550:81::-;23589:7;23616;;23609:14;;23550:81;:::o;23755:90::-;23798:4;23833;;23822:7;;:15;;23815:22;;23755:90;:::o;15748:97::-;15795:15;15830:7;;;;;;;;;;;15823:14;;15748:97;:::o;10352:148::-;9932:12;:10;:12::i;:::-;9921:23;;:7;:5;:7::i;:::-;:23;;;9913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10459:1:::1;10422:40;;10443:6;;;;;;;;;;;10422:40;;;;;;;;;;;;10490:1;10473:6;;:19;;;;;;;;;;;;;;;;;;10352:148::o:0;26988:84::-;9932:12;:10;:12::i;:::-;9921:23;;:7;:5;:7::i;:::-;:23;;;9913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27040:7:::1;:5;:7::i;:::-;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26988:84::o:0;9701:87::-;9747:7;9774:6;;;;;;;;;;;9767:13;;9701:87;:::o;26343:109::-;9932:12;:10;:12::i;:::-;9921:23;;:7;:5;:7::i;:::-;:23;;;9913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26420:24:::1;26432:11;26420;:24::i;:::-;26343:109:::0;:::o;16448:576::-;12653:1;13250:7;;:19;;13242:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12653:1;13383:7;:18;;;;16544:17:::1;16564:9;16544:29;;16584:56;16605:11;16618:10;16630:9;16584:20;:56::i;:::-;16702:25;16717:9;16702:10;;:14;;:25;;;;:::i;:::-;16689:10;:38;;;;16740:41;16757:11;16770:10;16740:16;:41::i;:::-;16827:11;16797:54;;16813:12;:10;:12::i;:::-;16797:54;;;16840:10;16797:54;;;;;;:::i;:::-;;;;;;;;16864:46;16887:11;16900:9;16864:22;:46::i;:::-;16923:37;16937:11;16950:9;16923:13;:37::i;:::-;16971:45;16993:11;17006:9;16971:21;:45::i;:::-;16533:491;12609:1:::0;13562:7;:22;;;;16448:576;;:::o;21304:99::-;21356:7;21383:12;;21376:19;;21304:99;:::o;23972:88::-;24018:7;24045;;24038:14;;23972:88;:::o;24938:166::-;25037:7;25069:13;:27;25083:12;25069:27;;;;;;;;;;;;;;;;25062:34;;24938:166;;;:::o;24323:35::-;;;;:::o;10655:244::-;9932:12;:10;:12::i;:::-;9921:23;;:7;:5;:7::i;:::-;:23;;;9913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10764:1:::1;10744:22;;:8;:22;;;;10736:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10854:8;10825:38;;10846:6;;;;;;;;;;;10825:38;;;;;;;;;;;;10883:8;10874:6;;:17;;;;;;;;;;;;;;;;;;10655:244:::0;:::o;15569:98::-;15615:18;15653:6;;;;;;;;;;;15646:13;;15569:98;:::o;8259:::-;8312:7;8339:10;8332:17;;8259:98;:::o;22310:416::-;22392:11;:9;:11::i;:::-;22391:12;22383:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;22528:12;;22511:14;:29;22503:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;22626:52;22649:12;;22663:14;22626:52;;;;;;;:::i;:::-;;;;;;;;22704:14;22689:12;:29;;;;22310:416;:::o;25270:1065::-;20507:8;:6;:8::i;:::-;20499:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;25490:27:::1;25506:10;25490:15;:27::i;:::-;25555:4;;25536:15;:13;:15::i;:::-;:23;;25528:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;25655:6;:4;:6::i;:::-;25626:25;25640:10;25626:9;:13;;:25;;;;:::i;:::-;:35;25604:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;25786:1;25773:9;:14;;25765:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25876:1;25852:26;;:12;:26;;;;25830:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;26006:29;26038:13;:27;26052:12;26038:27;;;;;;;;;;;;;;;;26006:59;;26076:24;26103:37;26129:10;26103:21;:25;;:37;;;;:::i;:::-;26076:64;;26193:15;;26173:16;:35;;26151:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;26311:16;26281:13;:27;26295:12;26281:27;;;;;;;;;;;;;;;:46;;;;25435:900;;25270:1065:::0;;;:::o;2644:98::-;2702:7;2733:1;2729;:5;;;;:::i;:::-;2722:12;;2644:98;;;;:::o;17768:142::-;17863:39;17878:11;17891:10;17863:14;:39::i;:::-;17768:142;;:::o;26680:209::-;26827:54;26856:12;26870:10;26827:28;:54::i;:::-;26680:209;;:::o;19195:134::-;19294:7;;;;;;;;;;;:16;;:27;19311:9;19294:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19195:134;;:::o;19632:159::-;;;:::o;23853:111::-;23942:14;23930:7;;:26;;;;;;;:::i;:::-;;;;;;;;23853:111;:::o;3781:98::-;3839:7;3870:1;3866;:5;;;;:::i;:::-;3859:12;;3781:98;;;;:::o;18184:486::-;18570:7;:5;:7::i;:::-;:12;;;18583:11;18596:10;18570:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18548:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;18184:486;;:::o;18948:155::-;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;152:137;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;295:139;;;;:::o;440:329::-;499:6;548:2;536:9;527:7;523:23;519:32;516:119;;;554:79;;:::i;:::-;516:119;674:1;699:53;744:7;735:6;724:9;720:22;699:53;:::i;:::-;689:63;;645:117;440:329;;;;:::o;775:474::-;843:6;851;900:2;888:9;879:7;875:23;871:32;868:119;;;906:79;;:::i;:::-;868:119;1026:1;1051:53;1096:7;1087:6;1076:9;1072:22;1051:53;:::i;:::-;1041:63;;997:117;1153:2;1179:53;1224:7;1215:6;1204:9;1200:22;1179:53;:::i;:::-;1169:63;;1124:118;775:474;;;;;:::o;1255:345::-;1322:6;1371:2;1359:9;1350:7;1346:23;1342:32;1339:119;;;1377:79;;:::i;:::-;1339:119;1497:1;1522:61;1575:7;1566:6;1555:9;1551:22;1522:61;:::i;:::-;1512:71;;1468:125;1255:345;;;;:::o;1606:329::-;1665:6;1714:2;1702:9;1693:7;1689:23;1685:32;1682:119;;;1720:79;;:::i;:::-;1682:119;1840:1;1865:53;1910:7;1901:6;1890:9;1886:22;1865:53;:::i;:::-;1855:63;;1811:117;1606:329;;;;:::o;1941:142::-;2044:32;2070:5;2044:32;:::i;:::-;2039:3;2032:45;1941:142;;:::o;2089:118::-;2176:24;2194:5;2176:24;:::i;:::-;2171:3;2164:37;2089:118;;:::o;2213:109::-;2294:21;2309:5;2294:21;:::i;:::-;2289:3;2282:34;2213:109;;:::o;2328:183::-;2441:63;2498:5;2441:63;:::i;:::-;2436:3;2429:76;2328:183;;:::o;2517:366::-;2659:3;2680:67;2744:2;2739:3;2680:67;:::i;:::-;2673:74;;2756:93;2845:3;2756:93;:::i;:::-;2874:2;2869:3;2865:12;2858:19;;2517:366;;;:::o;2889:::-;3031:3;3052:67;3116:2;3111:3;3052:67;:::i;:::-;3045:74;;3128:93;3217:3;3128:93;:::i;:::-;3246:2;3241:3;3237:12;3230:19;;2889:366;;;:::o;3261:::-;3403:3;3424:67;3488:2;3483:3;3424:67;:::i;:::-;3417:74;;3500:93;3589:3;3500:93;:::i;:::-;3618:2;3613:3;3609:12;3602:19;;3261:366;;;:::o;3633:::-;3775:3;3796:67;3860:2;3855:3;3796:67;:::i;:::-;3789:74;;3872:93;3961:3;3872:93;:::i;:::-;3990:2;3985:3;3981:12;3974:19;;3633:366;;;:::o;4005:::-;4147:3;4168:67;4232:2;4227:3;4168:67;:::i;:::-;4161:74;;4244:93;4333:3;4244:93;:::i;:::-;4362:2;4357:3;4353:12;4346:19;;4005:366;;;:::o;4377:::-;4519:3;4540:67;4604:2;4599:3;4540:67;:::i;:::-;4533:74;;4616:93;4705:3;4616:93;:::i;:::-;4734:2;4729:3;4725:12;4718:19;;4377:366;;;:::o;4749:::-;4891:3;4912:67;4976:2;4971:3;4912:67;:::i;:::-;4905:74;;4988:93;5077:3;4988:93;:::i;:::-;5106:2;5101:3;5097:12;5090:19;;4749:366;;;:::o;5121:::-;5263:3;5284:67;5348:2;5343:3;5284:67;:::i;:::-;5277:74;;5360:93;5449:3;5360:93;:::i;:::-;5478:2;5473:3;5469:12;5462:19;;5121:366;;;:::o;5493:::-;5635:3;5656:67;5720:2;5715:3;5656:67;:::i;:::-;5649:74;;5732:93;5821:3;5732:93;:::i;:::-;5850:2;5845:3;5841:12;5834:19;;5493:366;;;:::o;5865:::-;6007:3;6028:67;6092:2;6087:3;6028:67;:::i;:::-;6021:74;;6104:93;6193:3;6104:93;:::i;:::-;6222:2;6217:3;6213:12;6206:19;;5865:366;;;:::o;6237:::-;6379:3;6400:67;6464:2;6459:3;6400:67;:::i;:::-;6393:74;;6476:93;6565:3;6476:93;:::i;:::-;6594:2;6589:3;6585:12;6578:19;;6237:366;;;:::o;6609:::-;6751:3;6772:67;6836:2;6831:3;6772:67;:::i;:::-;6765:74;;6848:93;6937:3;6848:93;:::i;:::-;6966:2;6961:3;6957:12;6950:19;;6609:366;;;:::o;6981:118::-;7068:24;7086:5;7068:24;:::i;:::-;7063:3;7056:37;6981:118;;:::o;7105:222::-;7198:4;7236:2;7225:9;7221:18;7213:26;;7249:71;7317:1;7306:9;7302:17;7293:6;7249:71;:::i;:::-;7105:222;;;;:::o;7333:254::-;7442:4;7480:2;7469:9;7465:18;7457:26;;7493:87;7577:1;7566:9;7562:17;7553:6;7493:87;:::i;:::-;7333:254;;;;:::o;7593:332::-;7714:4;7752:2;7741:9;7737:18;7729:26;;7765:71;7833:1;7822:9;7818:17;7809:6;7765:71;:::i;:::-;7846:72;7914:2;7903:9;7899:18;7890:6;7846:72;:::i;:::-;7593:332;;;;;:::o;7931:210::-;8018:4;8056:2;8045:9;8041:18;8033:26;;8069:65;8131:1;8120:9;8116:17;8107:6;8069:65;:::i;:::-;7931:210;;;;:::o;8147:274::-;8266:4;8304:2;8293:9;8289:18;8281:26;;8317:97;8411:1;8400:9;8396:17;8387:6;8317:97;:::i;:::-;8147:274;;;;:::o;8427:419::-;8593:4;8631:2;8620:9;8616:18;8608:26;;8680:9;8674:4;8670:20;8666:1;8655:9;8651:17;8644:47;8708:131;8834:4;8708:131;:::i;:::-;8700:139;;8427:419;;;:::o;8852:::-;9018:4;9056:2;9045:9;9041:18;9033:26;;9105:9;9099:4;9095:20;9091:1;9080:9;9076:17;9069:47;9133:131;9259:4;9133:131;:::i;:::-;9125:139;;8852:419;;;:::o;9277:::-;9443:4;9481:2;9470:9;9466:18;9458:26;;9530:9;9524:4;9520:20;9516:1;9505:9;9501:17;9494:47;9558:131;9684:4;9558:131;:::i;:::-;9550:139;;9277:419;;;:::o;9702:::-;9868:4;9906:2;9895:9;9891:18;9883:26;;9955:9;9949:4;9945:20;9941:1;9930:9;9926:17;9919:47;9983:131;10109:4;9983:131;:::i;:::-;9975:139;;9702:419;;;:::o;10127:::-;10293:4;10331:2;10320:9;10316:18;10308:26;;10380:9;10374:4;10370:20;10366:1;10355:9;10351:17;10344:47;10408:131;10534:4;10408:131;:::i;:::-;10400:139;;10127:419;;;:::o;10552:::-;10718:4;10756:2;10745:9;10741:18;10733:26;;10805:9;10799:4;10795:20;10791:1;10780:9;10776:17;10769:47;10833:131;10959:4;10833:131;:::i;:::-;10825:139;;10552:419;;;:::o;10977:::-;11143:4;11181:2;11170:9;11166:18;11158:26;;11230:9;11224:4;11220:20;11216:1;11205:9;11201:17;11194:47;11258:131;11384:4;11258:131;:::i;:::-;11250:139;;10977:419;;;:::o;11402:::-;11568:4;11606:2;11595:9;11591:18;11583:26;;11655:9;11649:4;11645:20;11641:1;11630:9;11626:17;11619:47;11683:131;11809:4;11683:131;:::i;:::-;11675:139;;11402:419;;;:::o;11827:::-;11993:4;12031:2;12020:9;12016:18;12008:26;;12080:9;12074:4;12070:20;12066:1;12055:9;12051:17;12044:47;12108:131;12234:4;12108:131;:::i;:::-;12100:139;;11827:419;;;:::o;12252:::-;12418:4;12456:2;12445:9;12441:18;12433:26;;12505:9;12499:4;12495:20;12491:1;12480:9;12476:17;12469:47;12533:131;12659:4;12533:131;:::i;:::-;12525:139;;12252:419;;;:::o;12677:::-;12843:4;12881:2;12870:9;12866:18;12858:26;;12930:9;12924:4;12920:20;12916:1;12905:9;12901:17;12894:47;12958:131;13084:4;12958:131;:::i;:::-;12950:139;;12677:419;;;:::o;13102:::-;13268:4;13306:2;13295:9;13291:18;13283:26;;13355:9;13349:4;13345:20;13341:1;13330:9;13326:17;13319:47;13383:131;13509:4;13383:131;:::i;:::-;13375:139;;13102:419;;;:::o;13527:222::-;13620:4;13658:2;13647:9;13643:18;13635:26;;13671:71;13739:1;13728:9;13724:17;13715:6;13671:71;:::i;:::-;13527:222;;;;:::o;13755:332::-;13876:4;13914:2;13903:9;13899:18;13891:26;;13927:71;13995:1;13984:9;13980:17;13971:6;13927:71;:::i;:::-;14008:72;14076:2;14065:9;14061:18;14052:6;14008:72;:::i;:::-;13755:332;;;;;:::o;14174:169::-;14258:11;14292:6;14287:3;14280:19;14332:4;14327:3;14323:14;14308:29;;14174:169;;;;:::o;14349:305::-;14389:3;14408:20;14426:1;14408:20;:::i;:::-;14403:25;;14442:20;14460:1;14442:20;:::i;:::-;14437:25;;14596:1;14528:66;14524:74;14521:1;14518:81;14515:107;;;14602:18;;:::i;:::-;14515:107;14646:1;14643;14639:9;14632:16;;14349:305;;;;:::o;14660:185::-;14700:1;14717:20;14735:1;14717:20;:::i;:::-;14712:25;;14751:20;14769:1;14751:20;:::i;:::-;14746:25;;14790:1;14780:35;;14795:18;;:::i;:::-;14780:35;14837:1;14834;14830:9;14825:14;;14660:185;;;;:::o;14851:96::-;14888:7;14917:24;14935:5;14917:24;:::i;:::-;14906:35;;14851:96;;;:::o;14953:104::-;14998:7;15027:24;15045:5;15027:24;:::i;:::-;15016:35;;14953:104;;;:::o;15063:90::-;15097:7;15140:5;15133:13;15126:21;15115:32;;15063:90;;;:::o;15159:126::-;15196:7;15236:42;15229:5;15225:54;15214:65;;15159:126;;;:::o;15291:77::-;15328:7;15357:5;15346:16;;15291:77;;;:::o;15374:152::-;15450:9;15483:37;15514:5;15483:37;:::i;:::-;15470:50;;15374:152;;;:::o;15532:126::-;15582:9;15615:37;15646:5;15615:37;:::i;:::-;15602:50;;15532:126;;;:::o;15664:113::-;15714:9;15747:24;15765:5;15747:24;:::i;:::-;15734:37;;15664:113;;;:::o;15783:180::-;15831:77;15828:1;15821:88;15928:4;15925:1;15918:15;15952:4;15949:1;15942:15;15969:180;16017:77;16014:1;16007:88;16114:4;16111:1;16104:15;16138:4;16135:1;16128:15;16278:117;16387:1;16384;16377:12;16401:225;16541:34;16537:1;16529:6;16525:14;16518:58;16610:8;16605:2;16597:6;16593:15;16586:33;16401:225;:::o;16632:174::-;16772:26;16768:1;16760:6;16756:14;16749:50;16632:174;:::o;16812:176::-;16952:28;16948:1;16940:6;16936:14;16929:52;16812:176;:::o;16994:228::-;17134:34;17130:1;17122:6;17118:14;17111:58;17203:11;17198:2;17190:6;17186:15;17179:36;16994:228;:::o;17228:180::-;17368:32;17364:1;17356:6;17352:14;17345:56;17228:180;:::o;17414:250::-;17554:34;17550:1;17542:6;17538:14;17531:58;17623:33;17618:2;17610:6;17606:15;17599:58;17414:250;:::o;17670:182::-;17810:34;17806:1;17798:6;17794:14;17787:58;17670:182;:::o;17858:177::-;17998:29;17994:1;17986:6;17982:14;17975:53;17858:177;:::o;18041:179::-;18181:31;18177:1;18169:6;18165:14;18158:55;18041:179;:::o;18226:222::-;18366:34;18362:1;18354:6;18350:14;18343:58;18435:5;18430:2;18422:6;18418:15;18411:30;18226:222;:::o;18454:221::-;18594:34;18590:1;18582:6;18578:14;18571:58;18663:4;18658:2;18650:6;18646:15;18639:29;18454:221;:::o;18681:181::-;18821:33;18817:1;18809:6;18805:14;18798:57;18681:181;:::o;18868:122::-;18941:24;18959:5;18941:24;:::i;:::-;18934:5;18931:35;18921:63;;18980:1;18977;18970:12;18921:63;18868:122;:::o;18996:116::-;19066:21;19081:5;19066:21;:::i;:::-;19059:5;19056:32;19046:60;;19102:1;19099;19092:12;19046:60;18996:116;:::o;19118:122::-;19191:24;19209:5;19191:24;:::i;:::-;19184:5;19181:35;19171:63;;19230:1;19227;19220:12;19171:63;19118:122;:::o

Swarm Source

ipfs://294ab6490345fdf7a300eb3f77138ad47e0399a604191f44adb444af6d97293b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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