ETH Price: $2,259.38 (-2.45%)

Contract

0xA98f63F770Cc8b29dBf5feB50B6F78172B1B033D
 

Overview

ETH Balance

0.006897777600000027 ETH

Eth Value

$15.58 (@ $2,259.38/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim68633422018-12-10 22:13:282654 days ago1544480008IN
0xA98f63F7...72B1B033D
0 ETH0.000084554
Reject Mint68632602018-12-10 21:55:422654 days ago1544478942IN
0xA98f63F7...72B1B033D
0 ETH0.0004755620
Reject Mint68632572018-12-10 21:55:112654 days ago1544478911IN
0xA98f63F7...72B1B033D
0 ETH0.0004755620
Reject Mint68632552018-12-10 21:54:352654 days ago1544478875IN
0xA98f63F7...72B1B033D
0 ETH0.0004755620
Reject Mint68632512018-12-10 21:54:042654 days ago1544478844IN
0xA98f63F7...72B1B033D
0 ETH0.0006255620
Approve Mint68632472018-12-10 21:53:342654 days ago1544478814IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632442018-12-10 21:52:512654 days ago1544478771IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632432018-12-10 21:52:412654 days ago1544478761IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Buy Tokens68632392018-12-10 21:52:022654 days ago1544478722IN
0xA98f63F7...72B1B033D
1 wei0.0004785
Approve Mint68632392018-12-10 21:52:022654 days ago1544478722IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Buy Tokens68632362018-12-10 21:51:182654 days ago1544478678IN
0xA98f63F7...72B1B033D
1 wei0.0014340115
Approve Mint68632362018-12-10 21:51:182654 days ago1544478678IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632332018-12-10 21:50:522654 days ago1544478652IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632292018-12-10 21:49:562654 days ago1544478596IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632282018-12-10 21:49:512654 days ago1544478591IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632252018-12-10 21:49:352654 days ago1544478575IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632232018-12-10 21:48:272654 days ago1544478507IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Buy Tokens68632202018-12-10 21:47:272654 days ago1544478447IN
0xA98f63F7...72B1B033D
1 wei0.00076488
Approve Mint68632202018-12-10 21:47:272654 days ago1544478447IN
0xA98f63F7...72B1B033D
0 ETH0.0007472820
Approve Mint68632182018-12-10 21:46:582654 days ago1544478418IN
0xA98f63F7...72B1B033D
0 ETH0.0008972820
Buy Tokens68632092018-12-10 21:45:002654 days ago1544478300IN
0xA98f63F7...72B1B033D
1 wei0.0014340115
Buy Tokens68632082018-12-10 21:44:572654 days ago1544478297IN
0xA98f63F7...72B1B033D
1 wei0.0057360660
Buy Tokens68632072018-12-10 21:44:222654 days ago1544478262IN
0xA98f63F7...72B1B033D
1 wei0.0014340115
Buy Tokens68632072018-12-10 21:44:222654 days ago1544478262IN
0xA98f63F7...72B1B033D
1 wei0.0065964669
Buy Tokens68632052018-12-10 21:44:102654 days ago1544478250IN
0xA98f63F7...72B1B033D
1 wei0.00076488
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-68633422018-12-10 22:13:282654 days ago1544480008
0xA98f63F7...72B1B033D
4 wei
-68632472018-12-10 21:53:342654 days ago1544478814
0xA98f63F7...72B1B033D
1 wei
-68632442018-12-10 21:52:512654 days ago1544478771
0xA98f63F7...72B1B033D
1 wei
-68632432018-12-10 21:52:412654 days ago1544478761
0xA98f63F7...72B1B033D
1 wei
-68632392018-12-10 21:52:022654 days ago1544478722
0xA98f63F7...72B1B033D
1 wei
-68632362018-12-10 21:51:182654 days ago1544478678
0xA98f63F7...72B1B033D
5 wei
-68632332018-12-10 21:50:522654 days ago1544478652
0xA98f63F7...72B1B033D
1 wei
-68632292018-12-10 21:49:562654 days ago1544478596
0xA98f63F7...72B1B033D
5 wei
-68632282018-12-10 21:49:512654 days ago1544478591
0xA98f63F7...72B1B033D
5 wei
-68632252018-12-10 21:49:352654 days ago1544478575
0xA98f63F7...72B1B033D
5 wei
-68632232018-12-10 21:48:272654 days ago1544478507
0xA98f63F7...72B1B033D
1 wei
-68632202018-12-10 21:47:272654 days ago1544478447
0xA98f63F7...72B1B033D
5 wei
-68632182018-12-10 21:46:582654 days ago1544478418
0xA98f63F7...72B1B033D
1 wei
-68629792018-12-10 20:56:222654 days ago1544475382
0xA98f63F7...72B1B033D
1 wei
-68629772018-12-10 20:55:552654 days ago1544475355
0xA98f63F7...72B1B033D
1 wei
-68629722018-12-10 20:55:212654 days ago1544475321
0xA98f63F7...72B1B033D
1 wei
-68629702018-12-10 20:54:582654 days ago1544475298
0xA98f63F7...72B1B033D
1 wei
-68629662018-12-10 20:54:292654 days ago1544475269
0xA98f63F7...72B1B033D
1 wei
-68629642018-12-10 20:53:572654 days ago1544475237
0xA98f63F7...72B1B033D
1 wei
-68629622018-12-10 20:53:342654 days ago1544475214
0xA98f63F7...72B1B033D
1 wei
-68629392018-12-10 20:46:202654 days ago1544474780
0xA98f63F7...72B1B033D
1 wei
-68629352018-12-10 20:45:202654 days ago1544474720
0xA98f63F7...72B1B033D
1 wei
-68510192018-12-08 21:58:252656 days ago1544306305
0xA98f63F7...72B1B033D
1 wei
-68510162018-12-08 21:57:172656 days ago1544306237
0xA98f63F7...72B1B033D
1 wei
-68510142018-12-08 21:56:082656 days ago1544306168
0xA98f63F7...72B1B033D
1 wei
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x452594c0...4E1E33c2E
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
CompliantCrowdsaleHardcap

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-29
*/

pragma solidity 0.4.24;


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;

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

    /**
    * @dev The Ownable constructor sets the original `owner` of the contract to the sender
    * account.
    */
    constructor(address _owner) public {
        owner = _owner;
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

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

}



/**
 * @title Validator
 * @dev The Validator contract has a validator address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Validator {
    address public validator;

    event NewValidatorSet(address indexed previousOwner, address indexed newValidator);

    /**
    * @dev The Validator constructor sets the original `validator` of the contract to the sender
    * account.
    */
    constructor() public {
        validator = msg.sender;
    }

    /**
    * @dev Throws if called by any account other than the validator.
    */
    modifier onlyValidator() {
        require(msg.sender == validator);
        _;
    }

    /**
    * @dev Allows the current validator to transfer control of the contract to a newValidator.
    * @param newValidator The address to become next validator.
    */
    function setNewValidator(address newValidator) public onlyValidator {
        require(newValidator != address(0));
        emit NewValidatorSet(validator, newValidator);
        validator = newValidator;
    }
}










/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}



contract TokenInterface {
    function mint(address _to, uint256 _amount) public returns (bool);
    function finishMinting() public returns (bool);
    function transferOwnership(address newOwner) public;
}


/**
 * @title Crowdsale
 * @dev Crowdsale is a base contract for managing a token crowdsale.
 * Crowdsales have a start and end timestamps, where investors can make
 * token purchases and the crowdsale will assign them tokens based
 * on a token per ETH rate. Funds collected are forwarded to a wallet
 * as they arrive. The contract requires a MintableToken that will be
 * minted as contributions arrive, note that the crowdsale contract
 * must be owner of the token in order to be able to mint it.
 */
contract Crowdsale {
    using SafeMath for uint256;

    // The token being sold
    address public token;

    // start and end timestamps where investments are allowed (both inclusive)
    uint256 public startTime;
    uint256 public endTime;

    // address where funds are collected
    address public wallet;

    // how many token units a buyer gets per ether
    uint256 public rate;

    // amount of raised money in wei
    uint256 public weiRaised;

    // maximum amount of wei that can be raised
    uint256 public hardCap;

    /**
    * event for token purchase logging
    * @param purchaser who paid for the tokens
    * @param beneficiary who got the tokens
    * @param value weis paid for purchase
    * @param amount amount of tokens purchased
    */
    event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);

    constructor(uint256 _startTime, uint256 _endTime, uint256 _hardCap, uint256 _rate, address _wallet, address _token) public {
        require(_startTime >= now);
        require(_endTime >= _startTime);
        require(_rate > 0);
        require(_wallet != address(0));
        require(_token != address(0));

        startTime = _startTime;
        endTime = _endTime;
        hardCap = _hardCap;
        rate = _rate;
        wallet = _wallet;
        token = _token;
    }

    // fallback function can be used to buy tokens
    function () external payable {
        buyTokens(msg.sender);
    }

    // low level token purchase function
    function buyTokens(address beneficiary) public payable {
        require(beneficiary != address(0));
        require(validPurchase());

        uint256 weiAmount = msg.value;

        // calculate token amount to be created
        uint256 tokens = getTokenAmount(weiAmount);

        // update state
        weiRaised = weiRaised.add(weiAmount);

        TokenInterface(token).mint(beneficiary, tokens);
        emit TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

        forwardFunds();
    }

    // @return true if crowdsale event has ended
    function hasEnded() public view returns (bool) {
        return now > endTime;
    }

    // Override this method to have a way to add business logic to your crowdsale when buying
    function getTokenAmount(uint256 weiAmount) internal view returns(uint256) {
        return weiAmount.mul(rate);
    }

    // send ether to the fund collection wallet
    // override to create custom fund forwarding mechanisms
    function forwardFunds() internal {
        wallet.transfer(msg.value);
    }

    // @return true if the transaction can buy tokens
    function validPurchase() internal view returns (bool) {
        require(weiRaised.add(msg.value) <= hardCap);
        bool withinPeriod = now >= startTime && now <= endTime;
        bool nonZeroPurchase = msg.value != 0;
        return withinPeriod && nonZeroPurchase;
    }

}



/**
 * @title FinalizableCrowdsale
 * @dev Extension of Crowdsale where an owner can do extra work
 * after finishing.
 */
contract FinalizableCrowdsale is Crowdsale, Ownable {
    using SafeMath for uint256;

    bool public isFinalized = false;

    event Finalized();
 
    constructor(address _owner) public Ownable(_owner) {}

    /**
    * @dev Must be called after crowdsale ends, to do some extra finalization
    * work. Calls the contract's finalization function.
    */
    function finalize() onlyOwner public {
        require(!isFinalized);
        require(hasEnded());

        finalization();
        emit Finalized();

        isFinalized = true;
    }

    /**
    * @dev Can be overridden to add finalization logic. The overriding function
    * should call super.finalization() to ensure the chain of finalization is
    * executed entirely.
    */
    function finalization() internal {}
}







contract Whitelist is Ownable {
    mapping(address => bool) internal investorMap;

    /**
    * event for investor approval logging
    * @param investor approved investor
    */
    event Approved(address indexed investor);

    /**
    * event for investor disapproval logging
    * @param investor disapproved investor
    */
    event Disapproved(address indexed investor);

    constructor(address _owner) 
        public 
        Ownable(_owner) 
    {
        
    }

    /** @param _investor the address of investor to be checked
      * @return true if investor is approved
      */
    function isInvestorApproved(address _investor) external view returns (bool) {
        require(_investor != address(0));
        return investorMap[_investor];
    }

    /** @dev approve an investor
      * @param toApprove investor to be approved
      */
    function approveInvestor(address toApprove) external onlyOwner {
        investorMap[toApprove] = true;
        emit Approved(toApprove);
    }

    /** @dev approve investors in bulk
      * @param toApprove array of investors to be approved
      */
    function approveInvestorsInBulk(address[] toApprove) external onlyOwner {
        for (uint i = 0; i < toApprove.length; i++) {
            investorMap[toApprove[i]] = true;
            emit Approved(toApprove[i]);
        }
    }

    /** @dev disapprove an investor
      * @param toDisapprove investor to be disapproved
      */
    function disapproveInvestor(address toDisapprove) external onlyOwner {
        delete investorMap[toDisapprove];
        emit Disapproved(toDisapprove);
    }

    /** @dev disapprove investors in bulk
      * @param toDisapprove array of investors to be disapproved
      */
    function disapproveInvestorsInBulk(address[] toDisapprove) external onlyOwner {
        for (uint i = 0; i < toDisapprove.length; i++) {
            delete investorMap[toDisapprove[i]];
            emit Disapproved(toDisapprove[i]);
        }
    }
}



/** @title Compliant Crowdsale */
contract CompliantCrowdsaleHardcap is Validator, FinalizableCrowdsale {
    Whitelist public whiteListingContract;

    struct MintStruct {
        address to;
        uint256 tokens;
        uint256 weiAmount;
    }

    mapping (uint => MintStruct) public pendingMints;
    uint256 public currentMintNonce;
    mapping (address => uint) public rejectedMintBalance;

    modifier checkIsInvestorApproved(address _account) {
        require(whiteListingContract.isInvestorApproved(_account));
        _;
    }

    modifier checkIsAddressValid(address _account) {
        require(_account != address(0));
        _;
    }

    /**
    * event for rejected mint logging
    * @param to address for which buy tokens got rejected
    * @param value number of tokens
    * @param amount number of ethers invested
    * @param nonce request recorded at this particular nonce
    * @param reason reason for rejection
    */
    event MintRejected(
        address indexed to,
        uint256 value,
        uint256 amount,
        uint256 indexed nonce,
        uint256 reason
    );

    /**
    * event for buy tokens request logging
    * @param beneficiary address for which buy tokens is requested
    * @param tokens number of tokens
    * @param weiAmount number of ethers invested
    * @param nonce request recorded at this particular nonce
    */
    event ContributionRegistered(
        address beneficiary,
        uint256 tokens,
        uint256 weiAmount,
        uint256 nonce
    );

    /**
    * event for rate update logging
    * @param rate new rate
    */
    event RateUpdated(uint256 rate);

    /**
    * event for whitelist contract update logging
    * @param _whiteListingContract address of the new whitelist contract
    */
    event WhiteListingContractSet(address indexed _whiteListingContract);

    /**
    * event for claimed ether logging
    * @param account user claiming the ether
    * @param amount ether claimed
    */
    event Claimed(address indexed account, uint256 amount);

    /** @dev Constructor
      * @param whitelistAddress Ethereum address of the whitelist contract
      * @param _startTime crowdsale start time
      * @param _endTime crowdsale end time
      * @param _hardcap maximum ether(in weis) this crowdsale can raise
      * @param _rate number of tokens to be sold per ether
      * @param _wallet Ethereum address of the wallet
      * @param _token Ethereum address of the token contract
      * @param _owner Ethereum address of the owner
      */
    constructor(
        address whitelistAddress,
        uint256 _startTime,
        uint256 _endTime,
        uint256 _hardcap,
        uint256 _rate,
        address _wallet,
        address _token,
        address _owner
    )
        public
        FinalizableCrowdsale(_owner)
        Crowdsale(_startTime, _endTime, _hardcap, _rate, _wallet, _token)
    {
        setWhitelistContract(whitelistAddress);
    }

    /** @dev Updates whitelist contract address
      * @param whitelistAddress address of the new whitelist contract 
      */
    function setWhitelistContract(address whitelistAddress)
        public 
        onlyValidator 
        checkIsAddressValid(whitelistAddress)
    {
        whiteListingContract = Whitelist(whitelistAddress);
        emit WhiteListingContractSet(whiteListingContract);
    }

    /** @dev buy tokens request
      * @param beneficiary the address to which the tokens have to be minted
      */
    function buyTokens(address beneficiary)
        public 
        payable
        checkIsInvestorApproved(beneficiary)
    {
        require(validPurchase());

        uint256 weiAmount = msg.value;

        // calculate token amount to be created
        uint256 tokens = weiAmount.mul(rate);

        pendingMints[currentMintNonce] = MintStruct(beneficiary, tokens, weiAmount);
        emit ContributionRegistered(beneficiary, tokens, weiAmount, currentMintNonce);

        currentMintNonce++;
    }

    /** @dev Updates token rate 
    * @param _rate New token rate 
    */ 
    function updateRate(uint256 _rate) public onlyOwner { 
        require(_rate > 0);
        rate = _rate;
        emit RateUpdated(rate);
    }

    /** @dev approve buy tokens request
      * @param nonce request recorded at this particular nonce
      */
    function approveMint(uint256 nonce)
        external 
        onlyValidator
    {
        require(_approveMint(nonce));
    }

    /** @dev reject buy tokens request
      * @param nonce request recorded at this particular nonce
      * @param reason reason for rejection
      */
    function rejectMint(uint256 nonce, uint256 reason)
        external 
        onlyValidator
    {
        _rejectMint(nonce, reason);
    }

    /** @dev approve buy tokens requests in bulk
      * @param nonces request recorded at these nonces
      */
    function bulkApproveMints(uint256[] nonces)
        external 
        onlyValidator
    {
        for (uint i = 0; i < nonces.length; i++) {
            require(_approveMint(nonces[i]));
        }        
    }
    
    /** @dev reject buy tokens requests
      * @param nonces request recorded at these nonces
      * @param reasons reasons for rejection
      */
    function bulkRejectMints(uint256[] nonces, uint256[] reasons)
        external 
        onlyValidator
    {
        require(nonces.length == reasons.length);
        for (uint i = 0; i < nonces.length; i++) {
            _rejectMint(nonces[i], reasons[i]);
        }
    }

    /** @dev approve buy tokens request called internally in the approveMint and bulkApproveMints functions
      * @param nonce request recorded at this particular nonce
      */
    function _approveMint(uint256 nonce)
        private
        checkIsInvestorApproved(pendingMints[nonce].to)
        returns (bool)
    {
        // update state
        weiRaised = weiRaised.add(pendingMints[nonce].weiAmount);

        //No need to use mint-approval on token side, since the minting is already approved in the crowdsale side
        TokenInterface(token).mint(pendingMints[nonce].to, pendingMints[nonce].tokens);
        
        emit TokenPurchase(
            msg.sender,
            pendingMints[nonce].to,
            pendingMints[nonce].weiAmount,
            pendingMints[nonce].tokens
        );

        forwardFunds(pendingMints[nonce].weiAmount);
        delete pendingMints[nonce];

        return true;
    }

    /** @dev reject buy tokens request called internally in the rejectMint and bulkRejectMints functions
      * @param nonce request recorded at this particular nonce
      * @param reason reason for rejection
      */
    function _rejectMint(uint256 nonce, uint256 reason)
        private
        checkIsAddressValid(pendingMints[nonce].to)
    {
        rejectedMintBalance[pendingMints[nonce].to] = rejectedMintBalance[pendingMints[nonce].to].add(pendingMints[nonce].weiAmount);
        
        emit MintRejected(
            pendingMints[nonce].to,
            pendingMints[nonce].tokens,
            pendingMints[nonce].weiAmount,
            nonce,
            reason
        );
        
        delete pendingMints[nonce];
    }

    /** @dev claim back ether if buy tokens request is rejected */
    function claim() external {
        require(rejectedMintBalance[msg.sender] > 0);
        uint256 value = rejectedMintBalance[msg.sender];
        rejectedMintBalance[msg.sender] = 0;

        msg.sender.transfer(value);

        emit Claimed(msg.sender, value);
    }

    function finalization() internal {
        TokenInterface(token).finishMinting();
        transferTokenOwnership(owner);
        super.finalization();
    }

    /** @dev Updates token contract address
      * @param newToken New token contract address
      */
    function setTokenContract(address newToken)
        external 
        onlyOwner
        checkIsAddressValid(newToken)
    {
        token = newToken;
    }

    /** @dev transfers ownership of the token contract
      * @param newOwner New owner of the token contract
      */
    function transferTokenOwnership(address newOwner)
        public 
        onlyOwner
        checkIsAddressValid(newOwner)
    {
        TokenInterface(token).transferOwnership(newOwner);
    }

    function forwardFunds(uint256 amount) internal {
        wallet.transfer(amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"whitelistAddress","type":"address"}],"name":"setWhitelistContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newValidator","type":"address"}],"name":"setNewValidator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"nonces","type":"uint256[]"},{"name":"reasons","type":"uint256[]"}],"name":"bulkRejectMints","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferTokenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"validator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonces","type":"uint256[]"}],"name":"bulkApproveMints","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"pendingMints","outputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"},{"name":"weiAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"updateRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentMintNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"}],"name":"approveMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whiteListingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newToken","type":"address"}],"name":"setTokenContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rejectedMintBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"reason","type":"uint256"}],"name":"rejectMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"whitelistAddress","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_hardcap","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_token","type":"address"},{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":false,"name":"reason","type":"uint256"}],"name":"MintRejected","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"ContributionRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"rate","type":"uint256"}],"name":"RateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_whiteListingContract","type":"address"}],"name":"WhiteListingContractSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newValidator","type":"address"}],"name":"NewValidatorSet","type":"event"}]

0x60806040526008805460a060020a60ff021916905534801561002057600080fd5b506040516101008061131883398101604090815281516020830151918301516060840151608085015160a086015160c087015160e09097015160008054600160a060020a03191633179055949693949293919290919080808888888888884286101561008b57600080fd5b8585101561009857600080fd5b600083116100a557600080fd5b600160a060020a03821615156100ba57600080fd5b600160a060020a03811615156100cf57600080fd5b60029590955560039390935560079190915560055560048054600160a060020a0319908116600160a060020a0393841617909155600180548216938316939093179092556008805490921692169190911790555061013588640100000000610142810204565b50505050505050506101c0565b600054600160a060020a0316331461015957600080fd5b80600160a060020a038116151561016f57600080fd5b60098054600160a060020a031916600160a060020a0384811691909117918290556040519116907f770a556255467946acb4da5df8ae3bd252346205b8191641a036b89f441f975d90600090a25050565b611149806101cf6000396000f3006080604052600436106101695763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312f2614081146101745780631456979f146101955780631d7c194e146101b657806321e6b53d146101e25780632c4e722e146102035780633197cbb61461022a5780633a5381b51461023f5780633b59cb24146102705780634042b66f146102905780634bb278f3146102a55780634e71d92d146102ba578063521eb273146102cf57806363900ca6146102e457806369ea17711461032457806378e979251461033c57806379b2614d146103515780638aa6e6de146103665780638d4e40831461037e5780638da5cb5b146103a7578063b0e1f553146103bc578063bbcd5bbe146103d1578063c1e47662146103f2578063cf4186cb14610413578063ec8ac4d81461042e578063ecb70fb714610442578063f2fde38b14610457578063fb86a40414610478578063fc0c546a1461048d575b610172336104a2565b005b34801561018057600080fd5b50610172600160a060020a0360043516610629565b3480156101a157600080fd5b50610172600160a060020a03600435166106a7565b3480156101c257600080fd5b50610172602460048035828101929082013591813591820191013561072e565b3480156101ee57600080fd5b50610172600160a060020a036004351661079d565b34801561020f57600080fd5b5061021861084d565b60408051918252519081900360200190f35b34801561023657600080fd5b50610218610853565b34801561024b57600080fd5b50610254610859565b60408051600160a060020a039092168252519081900360200190f35b34801561027c57600080fd5b506101726004803560248101910135610868565b34801561029c57600080fd5b506102186108bf565b3480156102b157600080fd5b506101726108c5565b3480156102c657600080fd5b5061017261097f565b3480156102db57600080fd5b50610254610a16565b3480156102f057600080fd5b506102fc600435610a25565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b34801561033057600080fd5b50610172600435610a50565b34801561034857600080fd5b50610218610aaf565b34801561035d57600080fd5b50610218610ab5565b34801561037257600080fd5b50610172600435610abb565b34801561038a57600080fd5b50610393610ae9565b604080519115158252519081900360200190f35b3480156103b357600080fd5b50610254610b0a565b3480156103c857600080fd5b50610254610b19565b3480156103dd57600080fd5b50610172600160a060020a0360043516610b28565b3480156103fe57600080fd5b50610218600160a060020a0360043516610b78565b34801561041f57600080fd5b50610172600435602435610b8a565b610172600160a060020a03600435166104a2565b34801561044e57600080fd5b50610393610baf565b34801561046357600080fd5b50610172600160a060020a0360043516610bb7565b34801561048457600080fd5b50610218610c3f565b34801561049957600080fd5b50610254610c45565b600954604080517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291516000938493869391169163a59af3409160248082019260209290919082900301818887803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d602081101561053957600080fd5b5051151561054657600080fd5b61054e610c54565b151561055957600080fd5b60055434935061057090849063ffffffff610ca716565b6040805160608181018352600160a060020a0380891680845260208085018781528587018b8152600b80546000908152600a8552899020975188549616600160a060020a03199096169590951787559051600187015551600290950194909455905484519182529281018590528084018890529081019190915290519193507febd5a5df4567e1ac2664b9104c4482e110c7b0392ba6afca036e8462f7d89cd3919081900360800190a15050600b805460010190555050565b600054600160a060020a0316331461064057600080fd5b80600160a060020a038116151561065657600080fd5b60098054600160a060020a031916600160a060020a0384811691909117918290556040519116907f770a556255467946acb4da5df8ae3bd252346205b8191641a036b89f441f975d90600090a25050565b600054600160a060020a031633146106be57600080fd5b600160a060020a03811615156106d357600080fd5b60008054604051600160a060020a03808516939216917fb845aa14512b0a33bc681ec85e8670ad87301081c1a11343e30d5851ca5d206b91a360008054600160a060020a031916600160a060020a0392909216919091179055565b60008054600160a060020a0316331461074657600080fd5b83821461075257600080fd5b5060005b838110156107965761078e85858381811061076d57fe5b90506020020135848484818110151561078257fe5b90506020020135610cdd565b600101610756565b5050505050565b600854600160a060020a031633146107b457600080fd5b80600160a060020a03811615156107ca57600080fd5b600154604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561083157600080fd5b505af1158015610845573d6000803e3d6000fd5b505050505050565b60055481565b60035481565b600054600160a060020a031681565b60008054600160a060020a0316331461088057600080fd5b5060005b818110156108ba576108a783838381811061089b57fe5b90506020020135610dec565b15156108b257600080fd5b600101610884565b505050565b60065481565b600854600160a060020a031633146108dc57600080fd5b60085474010000000000000000000000000000000000000000900460ff161561090457600080fd5b61090c610baf565b151561091757600080fd5b61091f611021565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16008805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b336000908152600c6020526040812054811061099a57600080fd5b50336000818152600c6020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156109dc573d6000803e3d6000fd5b5060408051828152905133917fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a919081900360200190a250565b600454600160a060020a031681565b600a60205260009081526040902080546001820154600290920154600160a060020a03909116919083565b600854600160a060020a03163314610a6757600080fd5b60008111610a7457600080fd5b60058190556040805182815290517fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b9181900360200190a150565b60025481565b600b5481565b600054600160a060020a03163314610ad257600080fd5b610adb81610dec565b1515610ae657600080fd5b50565b60085474010000000000000000000000000000000000000000900460ff1681565b600854600160a060020a031681565b600954600160a060020a031681565b600854600160a060020a03163314610b3f57600080fd5b80600160a060020a0381161515610b5557600080fd5b5060018054600160a060020a031916600160a060020a0392909216919091179055565b600c6020526000908152604090205481565b600054600160a060020a03163314610ba157600080fd5b610bab8282610cdd565b5050565b600354421190565b600854600160a060020a03163314610bce57600080fd5b600160a060020a0381161515610be357600080fd5b600854604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360088054600160a060020a031916600160a060020a0392909216919091179055565b60075481565b600154600160a060020a031681565b6000806000600754610c71346006546110d490919063ffffffff16565b1115610c7c57600080fd5b6002544210158015610c9057506003544211155b915050341515818015610ca05750805b9250505090565b600080831515610cba5760009150610cd6565b50828202828482811515610cca57fe5b0414610cd257fe5b8091505b5092915050565b6000828152600a6020526040902054600160a060020a0316801515610d0157600080fd5b6000838152600a6020908152604080832060028101549054600160a060020a03168452600c90925290912054610d3c9163ffffffff6110d416565b6000848152600a602081815260408084208054600160a060020a039081168652600c84528286209690965593889052918152825460018401546002909401548351948552918401919091528282018690529051869391909116917f416bf61e626db4475cb9910facca78486402afc994ecc9138c7605dc688fae1a919081900360600190a350506000908152600a602052604081208054600160a060020a03191681556001810182905560020155565b6000818152600a602090815260408083205460095482517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820181905293519394919092169263a59af34092602480820193929182900301818887803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050506040513d6020811015610e8e57600080fd5b50511515610e9b57600080fd5b6000838152600a6020526040902060020154600654610ebf9163ffffffff6110d416565b600655600180546000858152600a60209081526040808320805495015481517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a0396871660048201526024810191909152905194909316936340c10f1993604480820194918390030190829087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b505050506040513d6020811015610f6d57600080fd5b50506000838152600a6020908152604091829020805460028201546001909201548451928352928201929092528251600160a060020a039092169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad189281900390910190a36000838152600a6020526040902060020154610fef906110e3565b50506000908152600a602052604081208054600160a060020a0319168155600180820183905560029091019190915590565b600160009054906101000a9004600160a060020a0316600160a060020a0316637d64bcb46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561108d57600080fd5b505af11580156110a1573d6000803e3d6000fd5b505050506040513d60208110156110b757600080fd5b50506008546110ce90600160a060020a031661079d565b6110d25b565b600082820183811015610cd257fe5b600454604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015610bab573d6000803e3d6000fd00a165627a7a72305820900cc2c458a2c92833d7e9db46966542b26adbbd7183cb4211849d9e61adb4af0029000000000000000000000000e849977f05b004fb920cb1e4a64a47e7bcb4aee9000000000000000000000000000000000000000000000000000000005c08580a000000000000000000000000000000000000000000000000000000005de98b8a0000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000522061b8dea1e4852a0cdc9ffeffe72ea82b313400000000000000000000000048e6eb2cf5e49dafee315f489a368978ad14a310000000000000000000000000522061b8dea1e4852a0cdc9ffeffe72ea82b3134

Deployed Bytecode

0x6080604052600436106101695763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312f2614081146101745780631456979f146101955780631d7c194e146101b657806321e6b53d146101e25780632c4e722e146102035780633197cbb61461022a5780633a5381b51461023f5780633b59cb24146102705780634042b66f146102905780634bb278f3146102a55780634e71d92d146102ba578063521eb273146102cf57806363900ca6146102e457806369ea17711461032457806378e979251461033c57806379b2614d146103515780638aa6e6de146103665780638d4e40831461037e5780638da5cb5b146103a7578063b0e1f553146103bc578063bbcd5bbe146103d1578063c1e47662146103f2578063cf4186cb14610413578063ec8ac4d81461042e578063ecb70fb714610442578063f2fde38b14610457578063fb86a40414610478578063fc0c546a1461048d575b610172336104a2565b005b34801561018057600080fd5b50610172600160a060020a0360043516610629565b3480156101a157600080fd5b50610172600160a060020a03600435166106a7565b3480156101c257600080fd5b50610172602460048035828101929082013591813591820191013561072e565b3480156101ee57600080fd5b50610172600160a060020a036004351661079d565b34801561020f57600080fd5b5061021861084d565b60408051918252519081900360200190f35b34801561023657600080fd5b50610218610853565b34801561024b57600080fd5b50610254610859565b60408051600160a060020a039092168252519081900360200190f35b34801561027c57600080fd5b506101726004803560248101910135610868565b34801561029c57600080fd5b506102186108bf565b3480156102b157600080fd5b506101726108c5565b3480156102c657600080fd5b5061017261097f565b3480156102db57600080fd5b50610254610a16565b3480156102f057600080fd5b506102fc600435610a25565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b34801561033057600080fd5b50610172600435610a50565b34801561034857600080fd5b50610218610aaf565b34801561035d57600080fd5b50610218610ab5565b34801561037257600080fd5b50610172600435610abb565b34801561038a57600080fd5b50610393610ae9565b604080519115158252519081900360200190f35b3480156103b357600080fd5b50610254610b0a565b3480156103c857600080fd5b50610254610b19565b3480156103dd57600080fd5b50610172600160a060020a0360043516610b28565b3480156103fe57600080fd5b50610218600160a060020a0360043516610b78565b34801561041f57600080fd5b50610172600435602435610b8a565b610172600160a060020a03600435166104a2565b34801561044e57600080fd5b50610393610baf565b34801561046357600080fd5b50610172600160a060020a0360043516610bb7565b34801561048457600080fd5b50610218610c3f565b34801561049957600080fd5b50610254610c45565b600954604080517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291516000938493869391169163a59af3409160248082019260209290919082900301818887803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d602081101561053957600080fd5b5051151561054657600080fd5b61054e610c54565b151561055957600080fd5b60055434935061057090849063ffffffff610ca716565b6040805160608181018352600160a060020a0380891680845260208085018781528587018b8152600b80546000908152600a8552899020975188549616600160a060020a03199096169590951787559051600187015551600290950194909455905484519182529281018590528084018890529081019190915290519193507febd5a5df4567e1ac2664b9104c4482e110c7b0392ba6afca036e8462f7d89cd3919081900360800190a15050600b805460010190555050565b600054600160a060020a0316331461064057600080fd5b80600160a060020a038116151561065657600080fd5b60098054600160a060020a031916600160a060020a0384811691909117918290556040519116907f770a556255467946acb4da5df8ae3bd252346205b8191641a036b89f441f975d90600090a25050565b600054600160a060020a031633146106be57600080fd5b600160a060020a03811615156106d357600080fd5b60008054604051600160a060020a03808516939216917fb845aa14512b0a33bc681ec85e8670ad87301081c1a11343e30d5851ca5d206b91a360008054600160a060020a031916600160a060020a0392909216919091179055565b60008054600160a060020a0316331461074657600080fd5b83821461075257600080fd5b5060005b838110156107965761078e85858381811061076d57fe5b90506020020135848484818110151561078257fe5b90506020020135610cdd565b600101610756565b5050505050565b600854600160a060020a031633146107b457600080fd5b80600160a060020a03811615156107ca57600080fd5b600154604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15801561083157600080fd5b505af1158015610845573d6000803e3d6000fd5b505050505050565b60055481565b60035481565b600054600160a060020a031681565b60008054600160a060020a0316331461088057600080fd5b5060005b818110156108ba576108a783838381811061089b57fe5b90506020020135610dec565b15156108b257600080fd5b600101610884565b505050565b60065481565b600854600160a060020a031633146108dc57600080fd5b60085474010000000000000000000000000000000000000000900460ff161561090457600080fd5b61090c610baf565b151561091757600080fd5b61091f611021565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a16008805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b336000908152600c6020526040812054811061099a57600080fd5b50336000818152600c6020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156109dc573d6000803e3d6000fd5b5060408051828152905133917fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a919081900360200190a250565b600454600160a060020a031681565b600a60205260009081526040902080546001820154600290920154600160a060020a03909116919083565b600854600160a060020a03163314610a6757600080fd5b60008111610a7457600080fd5b60058190556040805182815290517fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b9181900360200190a150565b60025481565b600b5481565b600054600160a060020a03163314610ad257600080fd5b610adb81610dec565b1515610ae657600080fd5b50565b60085474010000000000000000000000000000000000000000900460ff1681565b600854600160a060020a031681565b600954600160a060020a031681565b600854600160a060020a03163314610b3f57600080fd5b80600160a060020a0381161515610b5557600080fd5b5060018054600160a060020a031916600160a060020a0392909216919091179055565b600c6020526000908152604090205481565b600054600160a060020a03163314610ba157600080fd5b610bab8282610cdd565b5050565b600354421190565b600854600160a060020a03163314610bce57600080fd5b600160a060020a0381161515610be357600080fd5b600854604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360088054600160a060020a031916600160a060020a0392909216919091179055565b60075481565b600154600160a060020a031681565b6000806000600754610c71346006546110d490919063ffffffff16565b1115610c7c57600080fd5b6002544210158015610c9057506003544211155b915050341515818015610ca05750805b9250505090565b600080831515610cba5760009150610cd6565b50828202828482811515610cca57fe5b0414610cd257fe5b8091505b5092915050565b6000828152600a6020526040902054600160a060020a0316801515610d0157600080fd5b6000838152600a6020908152604080832060028101549054600160a060020a03168452600c90925290912054610d3c9163ffffffff6110d416565b6000848152600a602081815260408084208054600160a060020a039081168652600c84528286209690965593889052918152825460018401546002909401548351948552918401919091528282018690529051869391909116917f416bf61e626db4475cb9910facca78486402afc994ecc9138c7605dc688fae1a919081900360600190a350506000908152600a602052604081208054600160a060020a03191681556001810182905560020155565b6000818152600a602090815260408083205460095482517fa59af340000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820181905293519394919092169263a59af34092602480820193929182900301818887803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050506040513d6020811015610e8e57600080fd5b50511515610e9b57600080fd5b6000838152600a6020526040902060020154600654610ebf9163ffffffff6110d416565b600655600180546000858152600a60209081526040808320805495015481517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a0396871660048201526024810191909152905194909316936340c10f1993604480820194918390030190829087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b505050506040513d6020811015610f6d57600080fd5b50506000838152600a6020908152604091829020805460028201546001909201548451928352928201929092528251600160a060020a039092169233927f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad189281900390910190a36000838152600a6020526040902060020154610fef906110e3565b50506000908152600a602052604081208054600160a060020a0319168155600180820183905560029091019190915590565b600160009054906101000a9004600160a060020a0316600160a060020a0316637d64bcb46040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561108d57600080fd5b505af11580156110a1573d6000803e3d6000fd5b505050506040513d60208110156110b757600080fd5b50506008546110ce90600160a060020a031661079d565b6110d25b565b600082820183811015610cd257fe5b600454604051600160a060020a039091169082156108fc029083906000818181858888f19350505050158015610bab573d6000803e3d6000fd00a165627a7a72305820900cc2c458a2c92833d7e9db46966542b26adbbd7183cb4211849d9e61adb4af0029

Swarm Source

bzzr://900cc2c458a2c92833d7e9db46966542b26adbbd7183cb4211849d9e61adb4af

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

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