ETH Price: $1,817.90 (+0.29%)
Gas: 30 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Value
Transfer58749412018-06-29 13:03:031786 days 10 hrs ago1530277383IN
0xD7aA00...Db295477
0 ETH0.000180035
Transfer56527702018-05-21 16:22:161825 days 6 hrs ago1526919736IN
0xD7aA00...Db295477
0 ETH0.0005400915
Transfer55687142018-05-06 22:44:541840 days 24 mins ago1525646694IN
0xD7aA00...Db295477
0 ETH0.000043322
Transfer55674652018-05-06 17:36:551840 days 5 hrs ago1525628215IN
0xD7aA00...Db295477
0 ETH0.000021661
Transfer55653712018-05-06 8:59:441840 days 14 hrs ago1525597184IN
0xD7aA00...Db295477
0 ETH0.000072082.002
Transfer55606922018-05-05 13:24:591841 days 9 hrs ago1525526699IN
0xD7aA00...Db295477
0 ETH0.000043322
Transfer55594222018-05-05 8:01:191841 days 15 hrs ago1525507279IN
0xD7aA00...Db295477
0 ETH0.000089364.125
Transfer55582972018-05-05 3:23:021841 days 19 hrs ago1525490582IN
0xD7aA00...Db295477
0 ETH0.0002166410
Transfer55444462018-05-02 16:47:381844 days 6 hrs ago1525279658IN
0xD7aA00...Db295477
0 ETH0.0008225937.97058764
Transfer55443942018-05-02 16:33:101844 days 6 hrs ago1525278790IN
0xD7aA00...Db295477
0 ETH0.000173318
Transfer55433322018-05-02 11:56:391844 days 11 hrs ago1525262199IN
0xD7aA00...Db295477
0 ETH0.0003676516.97058611
Transfer55336022018-04-30 18:55:241846 days 4 hrs ago1525114524IN
0xD7aA00...Db295477
0 ETH0.000173318
Transfer55335832018-04-30 18:50:261846 days 4 hrs ago1525114226IN
0xD7aA00...Db295477
0 ETH0.000108325
Transfer55303752018-04-30 5:12:101846 days 17 hrs ago1525065130IN
0xD7aA00...Db295477
0 ETH0.000021661
Transfer55295302018-04-30 1:36:011846 days 21 hrs ago1525052161IN
0xD7aA00...Db295477
0 ETH0.000173318
Transfer55295242018-04-30 1:34:431846 days 21 hrs ago1525052083IN
0xD7aA00...Db295477
0 ETH0.000108325
Transfer55269262018-04-29 14:50:011847 days 8 hrs ago1525013401IN
0xD7aA00...Db295477
0 ETH0.0004332820
Transfer55257792018-04-29 10:07:311847 days 13 hrs ago1524996451IN
0xD7aA00...Db295477
0 ETH0.0003600610
Transfer55227052018-04-28 21:35:441848 days 1 hr ago1524951344IN
0xD7aA00...Db295477
0 ETH0.000043322
Transfer55113032018-04-26 21:45:571850 days 1 hr ago1524779157IN
0xD7aA00...Db295477
0 ETH0.000043322
Transfer54934092018-04-23 19:37:211853 days 3 hrs ago1524512241IN
0xD7aA00...Db295477
0 ETH0.0008882241
Transfer54157022018-04-10 14:08:321866 days 9 hrs ago1523369312IN
0xD7aA00...Db295477
0 ETH0.000086412.4
Transfer54148062018-04-10 10:32:111866 days 12 hrs ago1523356331IN
0xD7aA00...Db295477
0 ETH0.0004549421
Transfer54114402018-04-09 21:23:511867 days 1 hr ago1523309031IN
0xD7aA00...Db295477
0 ETH0.0011521932
Transfer54098512018-04-09 15:10:091867 days 7 hrs ago1523286609IN
0xD7aA00...Db295477
0 ETH0.000064993
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Txn Hash Block From To Value
53496642018-03-30 15:40:521877 days 7 hrs ago1522424452
0xD7aA00...Db295477
2.79 ETH
53492562018-03-30 14:00:391877 days 9 hrs ago1522418439
0xD7aA00...Db295477
1.3 ETH
53475252018-03-30 6:58:401877 days 16 hrs ago1522393120
0xD7aA00...Db295477
1.9 ETH
53452592018-03-29 21:48:271878 days 1 hr ago1522360107
0xD7aA00...Db295477
2.19 ETH
53452342018-03-29 21:42:571878 days 1 hr ago1522359777
0xD7aA00...Db295477
2.27 ETH
53451102018-03-29 21:09:071878 days 2 hrs ago1522357747
0xD7aA00...Db295477
2.5 ETH
53448652018-03-29 20:08:311878 days 3 hrs ago1522354111
0xD7aA00...Db295477
1.8 ETH
53445872018-03-29 19:01:071878 days 4 hrs ago1522350067
0xD7aA00...Db295477
0.42 ETH
53441162018-03-29 17:11:151878 days 5 hrs ago1522343475
0xD7aA00...Db295477
3.24 ETH
53437622018-03-29 15:41:311878 days 7 hrs ago1522338091
0xD7aA00...Db295477
1.25 ETH
53431042018-03-29 13:07:201878 days 10 hrs ago1522328840
0xD7aA00...Db295477
0.25 ETH
53428592018-03-29 12:08:261878 days 11 hrs ago1522325306
0xD7aA00...Db295477
0.2 ETH
53032732018-03-22 21:00:561885 days 2 hrs ago1521752456
0xD7aA00...Db295477
0.5 ETH
53031762018-03-22 20:36:571885 days 2 hrs ago1521751017
0xD7aA00...Db295477
1.34 ETH
53021992018-03-22 16:47:591885 days 6 hrs ago1521737279
0xD7aA00...Db295477
1.8 ETH
53019302018-03-22 15:40:171885 days 7 hrs ago1521733217
0xD7aA00...Db295477
0.21 ETH
53018722018-03-22 15:23:501885 days 7 hrs ago1521732230
0xD7aA00...Db295477
3.3353 ETH
53017972018-03-22 15:05:261885 days 8 hrs ago1521731126
0xD7aA00...Db295477
2.199 ETH
53013512018-03-22 13:22:521885 days 9 hrs ago1521724972
0xD7aA00...Db295477
6 ETH
53011982018-03-22 12:45:401885 days 10 hrs ago1521722740
0xD7aA00...Db295477
0.1 ETH
53011402018-03-22 12:32:571885 days 10 hrs ago1521721977
0xD7aA00...Db295477
0.45 ETH
53010972018-03-22 12:22:341885 days 10 hrs ago1521721354
0xD7aA00...Db295477
1 ETH
53009592018-03-22 11:52:291885 days 11 hrs ago1521719549
0xD7aA00...Db295477
1.5 ETH
53008452018-03-22 11:24:281885 days 11 hrs ago1521717868
0xD7aA00...Db295477
1 ETH
53006902018-03-22 10:46:071885 days 12 hrs ago1521715567
0xD7aA00...Db295477
3.9 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RC

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-14
*/

pragma solidity ^0.4.19;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  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;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


/**
 * @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.
   */
  function Ownable() internal {
    owner = msg.sender;
  }

  /**
   * @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) onlyOwner public {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}

contract tokenInterface {
	function balanceOf(address _owner) public constant returns (uint256 balance);
	function transfer(address _to, uint256 _value) public returns (bool);
}

contract rateInterface {
    function readRate(string _currency) public view returns (uint256 oneEtherValue);
}

contract ICOEngineInterface {

    // false if the ico is not started, true if the ico is started and running, true if the ico is completed
    function started() public view returns(bool);

    // false if the ico is not started, false if the ico is started and running, true if the ico is completed
    function ended() public view returns(bool);

    // time stamp of the starting time of the ico, must return 0 if it depends on the block number
    function startTime() public view returns(uint);

    // time stamp of the ending time of the ico, must retrun 0 if it depends on the block number
    function endTime() public view returns(uint);

    // Optional function, can be implemented in place of startTime
    // Returns the starting block number of the ico, must return 0 if it depends on the time stamp
    // function startBlock() public view returns(uint);

    // Optional function, can be implemented in place of endTime
    // Returns theending block number of the ico, must retrun 0 if it depends on the time stamp
    // function endBlock() public view returns(uint);

    // returns the total number of the tokens available for the sale, must not change when the ico is started
    function totalTokens() public view returns(uint);

    // returns the number of the tokens available for the ico. At the moment that the ico starts it must be equal to totalTokens(),
    // then it will decrease. It is used to calculate the percentage of sold tokens as remainingTokens() / totalTokens()
    function remainingTokens() public view returns(uint);

    // return the price as number of tokens released for each ether
    function price() public view returns(uint);
}

contract KYCBase {
    using SafeMath for uint256;

    mapping (address => bool) public isKycSigner;
    mapping (uint64 => uint256) public alreadyPayed;

    event KycVerified(address indexed signer, address buyerAddress, uint64 buyerId, uint maxAmount);

    function KYCBase(address [] kycSigners) internal {
        for (uint i = 0; i < kycSigners.length; i++) {
            isKycSigner[kycSigners[i]] = true;
        }
    }

    // Must be implemented in descending contract to assign tokens to the buyers. Called after the KYC verification is passed
    function releaseTokensTo(address buyer) internal returns(bool);

    // This method can be overridden to enable some sender to buy token for a different address
    function senderAllowedFor(address buyer)
        internal view returns(bool)
    {
        return buyer == msg.sender;
    }

    function buyTokensFor(address buyerAddress, uint64 buyerId, uint maxAmount, uint8 v, bytes32 r, bytes32 s)
        public payable returns (bool)
    {
        require(senderAllowedFor(buyerAddress));
        return buyImplementation(buyerAddress, buyerId, maxAmount, v, r, s);
    }

    function buyTokens(uint64 buyerId, uint maxAmount, uint8 v, bytes32 r, bytes32 s)
        public payable returns (bool)
    {
        return buyImplementation(msg.sender, buyerId, maxAmount, v, r, s);
    }

    function buyImplementation(address buyerAddress, uint64 buyerId, uint maxAmount, uint8 v, bytes32 r, bytes32 s)
        private returns (bool)
    {
        // check the signature
        bytes32 hash = sha256("Eidoo icoengine authorization", this, buyerAddress, buyerId, maxAmount);
        address signer = ecrecover(hash, v, r, s);
        if (!isKycSigner[signer]) {
            revert();
        } else {
            uint256 totalPayed = alreadyPayed[buyerId].add(msg.value);
            require(totalPayed <= maxAmount);
            alreadyPayed[buyerId] = totalPayed;
            emit KycVerified(signer, buyerAddress, buyerId, maxAmount);
            return releaseTokensTo(buyerAddress);
        }
    }
}

contract RC is ICOEngineInterface, KYCBase {
    using SafeMath for uint256;
    TokenSale tokenSaleContract;
    uint256 public startTime;
    uint256 public endTime;
    
    uint256 public soldTokens;
    uint256 public remainingTokens;
    
    uint256 public oneTokenInUsdWei;
	
	mapping(address => uint256) public balanceUser; // address => token amount
	uint256[] public tokenThreshold; // array of token threshold reached in wei of token
    uint256[] public bonusThreshold; // array of bonus of each tokenThreshold reached - 20% = 20

    function RC(address _tokenSaleContract, uint256 _oneTokenInUsdWei, uint256 _remainingTokens,  uint256 _startTime , uint256 _endTime, address [] kycSigner, uint256[] _tokenThreshold, uint256[] _bonusThreshold ) public KYCBase(kycSigner) {
        require ( _tokenSaleContract != 0 );
        require ( _oneTokenInUsdWei != 0 );
        require( _remainingTokens != 0 );
        require ( _tokenThreshold.length != 0 );
        require ( _tokenThreshold.length == _bonusThreshold.length );
        bonusThreshold = _bonusThreshold;
        tokenThreshold = _tokenThreshold;
        
        
        tokenSaleContract = TokenSale(_tokenSaleContract);
        
        tokenSaleContract.addMeByRC();
        
        soldTokens = 0;
        remainingTokens = _remainingTokens;
        oneTokenInUsdWei = _oneTokenInUsdWei;
        
        setTimeRC( _startTime, _endTime );
    }
    
    function setTimeRC(uint256 _startTime, uint256 _endTime ) internal {
        if( _startTime == 0 ) {
            startTime = tokenSaleContract.startTime();
        } else {
            startTime = _startTime;
        }
        if( _endTime == 0 ) {
            endTime = tokenSaleContract.endTime();
        } else {
            endTime = _endTime;
        }
    }
    
    modifier onlyTokenSaleOwner() {
        require(msg.sender == tokenSaleContract.owner() );
        _;
    }
    
    function setTime(uint256 _newStart, uint256 _newEnd) public onlyTokenSaleOwner {
        if ( _newStart != 0 ) startTime = _newStart;
        if ( _newEnd != 0 ) endTime = _newEnd;
    }
    
    event BuyRC(address indexed buyer, bytes trackID, uint256 value, uint256 soldToken, uint256 valueTokenInUsdWei );
    
    function releaseTokensTo(address buyer) internal returns(bool) {
        require( now > startTime );
        require( now < endTime );
        //require( msg.value >= 1*10**18); //1 Ether
        require( remainingTokens > 0 );
        
        uint256 tokenAmount = tokenSaleContract.buyFromRC.value(msg.value)(buyer, oneTokenInUsdWei, remainingTokens);
        
		balanceUser[msg.sender] = balanceUser[msg.sender].add(tokenAmount);		
        remainingTokens = remainingTokens.sub(tokenAmount);
        soldTokens = soldTokens.add(tokenAmount);
        
        emit BuyRC( msg.sender, msg.data, msg.value, tokenAmount, oneTokenInUsdWei );
        return true;
    }
    
    function started() public view returns(bool) {
        return now > startTime || remainingTokens == 0;
    }
    
    function ended() public view returns(bool) {
        return now > endTime || remainingTokens == 0;
    }
    
    function startTime() public view returns(uint) {
        return startTime;
    }
    
    function endTime() public view returns(uint) {
        return endTime;
    }
    
    function totalTokens() public view returns(uint) {
        return remainingTokens.add(soldTokens);
    }
    
    function remainingTokens() public view returns(uint) {
        return remainingTokens;
    }
    
    function price() public view returns(uint) {
        uint256 oneEther = 10**18;
        return oneEther.mul(10**18).div( tokenSaleContract.tokenValueInEther(oneTokenInUsdWei) );
    }
	
	function () public {
        require( now > endTime );
        require( balanceUser[msg.sender] > 0 );
        uint256 bonusApplied = 0;
        for (uint i = 0; i < tokenThreshold.length; i++) {
            if ( soldTokens > tokenThreshold[i] ) {
                bonusApplied = bonusThreshold[i];
			}
		}    
		require( bonusApplied > 0 );
		
		uint256 addTokenAmount = balanceUser[msg.sender].mul( bonusApplied ).div(10**2);
		balanceUser[msg.sender] = 0; 
		
		tokenSaleContract.claim(msg.sender, addTokenAmount);
	}
}

contract TokenSale is Ownable {
    using SafeMath for uint256;
    tokenInterface public tokenContract;
    rateInterface public rateContract;
    
    address public wallet;
    address public advisor;
    uint256 public advisorFee; // 1 = 0,1%
    
	uint256 public constant decimals = 18;
    
    uint256 public endTime;  // seconds from 1970-01-01T00:00:00Z
    uint256 public startTime;  // seconds from 1970-01-01T00:00:00Z

    mapping(address => bool) public rc;


    function TokenSale(address _tokenAddress, address _rateAddress, uint256 _startTime, uint256 _endTime) public {
        tokenContract = tokenInterface(_tokenAddress);
        rateContract = rateInterface(_rateAddress);
        setTime(_startTime, _endTime); 
        wallet = msg.sender;
        advisor = msg.sender;
        advisorFee = 0 * 10**3;
    }
    
    function tokenValueInEther(uint256 _oneTokenInUsdWei) public view returns(uint256 tknValue) {
        uint256 oneEtherInUsd = rateContract.readRate("usd");
        tknValue = _oneTokenInUsdWei.mul(10 ** uint256(decimals)).div(oneEtherInUsd);
        return tknValue;
    } 
    
    modifier isBuyable() {
        require( now > startTime ); // check if started
        require( now < endTime ); // check if ended
        require( msg.value > 0 );
		
		uint256 remainingTokens = tokenContract.balanceOf(this);
        require( remainingTokens > 0 ); // Check if there are any remaining tokens 
        _;
    }
    
    event Buy(address buyer, uint256 value, address indexed ambassador);
    
    modifier onlyRC() {
        require( rc[msg.sender] ); //check if is an authorized rcContract
        _;
    }
    
    function buyFromRC(address _buyer, uint256 _rcTokenValue, uint256 _remainingTokens) onlyRC isBuyable public payable returns(uint256) {
        uint256 oneToken = 10 ** uint256(decimals);
        uint256 tokenValue = tokenValueInEther(_rcTokenValue);
        uint256 tokenAmount = msg.value.mul(oneToken).div(tokenValue);
        address _ambassador = msg.sender;
        
        
        uint256 remainingTokens = tokenContract.balanceOf(this);
        if ( _remainingTokens < remainingTokens ) {
            remainingTokens = _remainingTokens;
        }
        
        if ( remainingTokens < tokenAmount ) {
            uint256 refund = (tokenAmount - remainingTokens).mul(tokenValue).div(oneToken);
            tokenAmount = remainingTokens;
            forward(msg.value-refund);
			remainingTokens = 0; // set remaining token to 0
             _buyer.transfer(refund);
        } else {
			remainingTokens = remainingTokens.sub(tokenAmount); // update remaining token without bonus
            forward(msg.value);
        }
        
        tokenContract.transfer(_buyer, tokenAmount);
        emit Buy(_buyer, tokenAmount, _ambassador);
		
        return tokenAmount; 
    }
    
    function forward(uint256 _amount) internal {
        uint256 advisorAmount = _amount.mul(advisorFee).div(10**3);
        uint256 walletAmount = _amount - advisorAmount;
        advisor.transfer(advisorAmount);
        wallet.transfer(walletAmount);
    }

    event NewRC(address contr);
    
    function addMeByRC() public {
        require(tx.origin == owner);
        
        rc[ msg.sender ]  = true;
        
        emit NewRC(msg.sender);
    }
    
    function setTime(uint256 _newStart, uint256 _newEnd) public onlyOwner {
        if ( _newStart != 0 ) startTime = _newStart;
        if ( _newEnd != 0 ) endTime = _newEnd;
    }

    function withdraw(address to, uint256 value) public onlyOwner {
        to.transfer(value);
    }
    
    function withdrawTokens(address to, uint256 value) public onlyOwner returns (bool) {
        return tokenContract.transfer(to, value);
    }
    
    function setTokenContract(address _tokenContract) public onlyOwner {
        tokenContract = tokenInterface(_tokenContract);
    }

    function setWalletAddress(address _wallet) public onlyOwner {
        wallet = _wallet;
    }
    
    function setAdvisorAddress(address _advisor) public onlyOwner {
            advisor = _advisor;
    }
    
    function setAdvisorFee(uint256 _advisorFee) public onlyOwner {
            advisorFee = _advisorFee;
    }
    
    function setRateContract(address _rateAddress) public onlyOwner {
        rateContract = rateInterface(_rateAddress);
    }
	
	function claim(address _buyer, uint256 _amount) onlyRC public returns(bool) {
        return tokenContract.transfer(_buyer, _amount);
    }

    function () public payable {
        revert();
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isKycSigner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ended","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"started","outputs":[{"name":"","type":"bool"}],"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":"soldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint64"}],"name":"alreadyPayed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newStart","type":"uint256"},{"name":"_newEnd","type":"uint256"}],"name":"setTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyerAddress","type":"address"},{"name":"buyerId","type":"uint64"},{"name":"maxAmount","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buyTokensFor","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"bonusThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remainingTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"oneTokenInUsdWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyerId","type":"uint64"},{"name":"maxAmount","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buyTokens","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_tokenSaleContract","type":"address"},{"name":"_oneTokenInUsdWei","type":"uint256"},{"name":"_remainingTokens","type":"uint256"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"kycSigner","type":"address[]"},{"name":"_tokenThreshold","type":"uint256[]"},{"name":"_bonusThreshold","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"trackID","type":"bytes"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"soldToken","type":"uint256"},{"indexed":false,"name":"valueTokenInUsdWei","type":"uint256"}],"name":"BuyRC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"signer","type":"address"},{"indexed":false,"name":"buyerAddress","type":"address"},{"indexed":false,"name":"buyerId","type":"uint64"},{"indexed":false,"name":"maxAmount","type":"uint256"}],"name":"KycVerified","type":"event"}]

606060405234156200001057600080fd5b60405162000efd38038062000efd83398101604052808051919060200180519190602001805191906020018051919060200180519190602001805182019190602001805182019190602001805190910190508260005b8151811015620000bd5760016000808484815181106200008257fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff191691151591909117905560010162000066565b5050600160a060020a0388161515620000d557600080fd5b861515620000e257600080fd5b851515620000ef57600080fd5b81511515620000fd57600080fd5b80518251146200010c57600080fd5b600a8180516200012192916020019062000301565b5060098280516200013792916020019062000301565b5060028054600160a060020a031916600160a060020a038a81169190911791829055166366b52b936040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515620001a757600080fd5b5af11515620001b557600080fd5b505060006005555060068690556007879055620001e1858564010000000062000a7c620001ef82021704565b505050505050505062000371565b8115156200027057600254600160a060020a03166378e979256040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200025057600080fd5b5af115156200025e57600080fd5b50505060405180516003555062000276565b60038290555b801515620002f757600254600160a060020a0316633197cbb66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620002d757600080fd5b5af11515620002e557600080fd5b505050604051805160045550620002fd565b60048190555b5050565b8280548282559060005260206000209081019282156200033f579160200282015b828111156200033f57825182559160200191906001019062000322565b506200034d92915062000351565b5090565b6200036e91905b808211156200034d576000815560010162000358565b90565b610b7c80620003816000396000f3006060604052600436106100d75763ffffffff60e060020a6000350416630570d568811461024f57806312fa6feb146102825780631f2698ab146102955780633197cbb6146102a85780635ed9ebfc146102cd57806378e97925146102e05780637e1c0c09146102f35780639a359d8e14610306578063a0355eca14610326578063a035b1fe14610341578063a6f8fd1314610354578063ae4578351461036a578063bb9dea041461039a578063bf583903146103b0578063c0a99a83146103c3578063dee4b246146103d6578063f5eb8890146103fa575b34156100e257600080fd5b6000806000600454421115156100f757600080fd5b600160a060020a0333166000908152600860205260408120541161011a57600080fd5b60009250600091505b60095482101561017857600980548390811061013b57fe5b906000526020600020900154600554111561016d57600a80548390811061015e57fe5b90600052602060002090015492505b600190910190610123565b6000831161018557600080fd5b600160a060020a0333166000908152600860205260409020546101c1906064906101b5908663ffffffff61041916565b9063ffffffff61044416565b33600160a060020a038181166000908152600860205260408082209190915560025493945092169163aad3ec96919084905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561023357600080fd5b5af1151561024057600080fd5b50505060405180515050505050005b341561025a57600080fd5b61026e600160a060020a036004351661045b565b604051901515815260200160405180910390f35b341561028d57600080fd5b61026e610470565b34156102a057600080fd5b61026e610487565b34156102b357600080fd5b6102bb61049c565b60405190815260200160405180910390f35b34156102d857600080fd5b6102bb6104a2565b34156102eb57600080fd5b6102bb6104a8565b34156102fe57600080fd5b6102bb6104ae565b341561031157600080fd5b6102bb67ffffffffffffffff600435166104c7565b341561033157600080fd5b61033f6004356024356104d9565b005b341561034c57600080fd5b6102bb61056a565b341561035f57600080fd5b6102bb6004356105fc565b61026e600160a060020a036004351667ffffffffffffffff6024351660443560ff6064351660843560a43561061b565b34156103a557600080fd5b6102bb60043561064a565b34156103bb57600080fd5b6102bb610658565b34156103ce57600080fd5b6102bb61065e565b61026e67ffffffffffffffff6004351660243560ff60443516606435608435610664565b341561040557600080fd5b6102bb600160a060020a036004351661067e565b6000828202831580610435575082848281151561043257fe5b04145b151561043d57fe5b9392505050565b600080828481151561045257fe5b04949350505050565b60006020819052908152604090205460ff1681565b60006004544211806104825750600654155b905090565b60006003544211806104825750506006541590565b60045490565b60055481565b60035490565b600061048260055460065461069090919063ffffffff16565b60016020526000908152604090205481565b600254600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561051857600080fd5b5af1151561052557600080fd5b50505060405180519050600160a060020a031633600160a060020a031614151561054e57600080fd5b811561055a5760038290555b80156105665760048190555b5050565b600254600754600091670de0b6b3a7640000916105f691600160a060020a031690637b4139859060405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156105c757600080fd5b5af115156105d457600080fd5b505050604051805190506101b583670de0b6b3a764000063ffffffff61041916565b91505090565b600980548290811061060a57fe5b600091825260209091200154905081565b60006106268761069f565b151561063157600080fd5b61063f8787878787876106b1565b979650505050505050565b600a80548290811061060a57fe5b60065490565b60075481565b60006106743387878787876106b1565b9695505050505050565b60086020526000908152604090205481565b60008282018381101561043d57fe5b33600160a060020a0390811691161490565b6000806000806002308b8b8b6040517f4569646f6f2069636f656e67696e6520617574686f72697a6174696f6e0000008152600160a060020a039485166c01000000000000000000000000908102601d83015293909416909202603184015267ffffffffffffffff167801000000000000000000000000000000000000000000000000026045830152604d820152606d016020604051808303816000865af1151561075b57600080fd5b50506040518051905092506001838888886040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156107be57600080fd5b505060206040510351600160a060020a03811660009081526020819052604090205490925060ff1615156107f157600080fd5b67ffffffffffffffff891660009081526001602052604090205461081b903463ffffffff61069016565b90508781111561082a57600080fd5b67ffffffffffffffff891660009081526001602052604090819020829055600160a060020a038316907f74e336db80b339721548db3209451cf01bd48e4a996e1bcea7f1a2abf8b06070908c908c908c9051600160a060020a03909316835267ffffffffffffffff90911660208301526040808301919091526060909101905180910390a26108b88a6108c6565b9a9950505050505050505050565b600080600354421115156108d957600080fd5b60045442106108e757600080fd5b600654600090116108f757600080fd5b600254600754600654600160a060020a0390921691634769ed8f91349187919060405160e060020a63ffffffff8716028152600160a060020a039093166004840152602483019190915260448201526064016020604051808303818588803b151561096157600080fd5b5af1151561096e57600080fd5b505050506040518051600160a060020a0333166000908152600860205260409020549092506109a491508263ffffffff61069016565b600160a060020a0333166000908152600860205260409020556006546109d0908263ffffffff610a6a16565b6006556005546109e6908263ffffffff61069016565b60058190555033600160a060020a03167f99d83b77a8a0fbdd924ad497f587bec4b963b71e8925e31a2baed1fbce2a16526000363485600754604051602081018490526040810183905260608101829052608080825281018590528060a081018787808284378201915050965050505050505060405180910390a250600192915050565b600082821115610a7657fe5b50900390565b811515610ae057600254600160a060020a03166378e979256040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ac257600080fd5b5af11515610acf57600080fd5b505050604051805160035550610ae6565b60038290555b801515610b4a57600254600160a060020a0316633197cbb66040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b2c57600080fd5b5af11515610b3957600080fd5b505050604051805160045550610566565b600455505600a165627a7a72305820ed914c75619db4942b316ee24002aa76f4d1db9f1391fd26be8d7b54b6746ac00029000000000000000000000000c1cf194c1449713bf811a93f4e1a6211c1713e340000000000000000000000000000000000000000000000000429d069189e000000000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000dd5ecefcaa0cb5d75f7b72dc9d2ce446d6d005200000000000000000000000004e315e5de2abbf7b745d9628ee60e4355c0fab8600000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000011a582513bbe781555550000000000000000000000000000000000000000000160ee2e58aae161aaaaaa00000000000000000000000000000000000000000002c1dc5cb155c2c355555500000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000028

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

000000000000000000000000c1cf194c1449713bf811a93f4e1a6211c1713e340000000000000000000000000000000000000000000000000429d069189e000000000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000dd5ecefcaa0cb5d75f7b72dc9d2ce446d6d005200000000000000000000000004e315e5de2abbf7b745d9628ee60e4355c0fab8600000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000011a582513bbe781555550000000000000000000000000000000000000000000160ee2e58aae161aaaaaa00000000000000000000000000000000000000000002c1dc5cb155c2c355555500000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000028

-----Decoded View---------------
Arg [0] : _tokenSaleContract (address): 0xc1cF194C1449713Bf811a93F4E1A6211C1713E34
Arg [1] : _oneTokenInUsdWei (uint256): 300000000000000000
Arg [2] : _remainingTokens (uint256): 6000000000000000000000000
Arg [3] : _startTime (uint256): 0
Arg [4] : _endTime (uint256): 0
Arg [5] : kycSigner (address[]): 0xDd5EcEFCaA0Cb5D75F7b72dC9D2CE446D6d00520,0x4E315e5De2abbf7b745d9628ee60E4355C0fab86
Arg [6] : _tokenThreshold (uint256[]): 83333333333333333333333,1666666666666666666666666,3333333333333333333333333
Arg [7] : _bonusThreshold (uint256[]): 20,30,40

-----Encoded View---------------
19 Constructor Arguments found :
Arg [0] : 000000000000000000000000c1cf194c1449713bf811a93f4e1a6211c1713e34
Arg [1] : 0000000000000000000000000000000000000000000000000429d069189e0000
Arg [2] : 00000000000000000000000000000000000000000004f68ca6d8cd91c6000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [7] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [9] : 000000000000000000000000dd5ecefcaa0cb5d75f7b72dc9d2ce446d6d00520
Arg [10] : 0000000000000000000000004e315e5de2abbf7b745d9628ee60e4355c0fab86
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [12] : 0000000000000000000000000000000000000000000011a582513bbe78155555
Arg [13] : 0000000000000000000000000000000000000000000160ee2e58aae161aaaaaa
Arg [14] : 00000000000000000000000000000000000000000002c1dc5cb155c2c3555555
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [17] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000028


Swarm Source

bzzr://ed914c75619db4942b316ee24002aa76f4d1db9f1391fd26be8d7b54b6746ac0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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