Contract 0x4a3b35487a56cfb9df80716054f793aa4c3bc1f2

 

TxHash Block Age From To Value [TxFee]
0xe7c193904030bcf88a14cbcaa4ab189f95200a9e5d8b50a3d3c6bfac6a550ef66473618135 days 16 hrs ago0xb353cf41a0caa38d6597a7a1337debf0b09dd8ae IN  0x4a3b35487a56cfb9df80716054f793aa4c3bc1f20 Ether0.000304686
0xfd76b2095edb17c5df894d98d65fdc8b4fd456f10e5b94a479cb22ecc8b638825374068323 days 1 hr ago0xb353cf41a0caa38d6597a7a1337debf0b09dd8ae IN  0x4a3b35487a56cfb9df80716054f793aa4c3bc1f20.01 Ether0.000280671
0x7edbb06404f374e4c045a5b0004555b851f8bf05d68dbd4d32c0281a7df86e285374043323 days 1 hr ago0xb353cf41a0caa38d6597a7a1337debf0b09dd8ae IN  Contract Creation0 Ether0.005286615
[ Download CSV Export 

Latest 1 Internal Transaction Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xe7c193904030bcf88a14cbcaa4ab189f95200a9e5d8b50a3d3c6bfac6a550ef66473618135 days 16 hrs ago0x4a3b35487a56cfb9df80716054f793aa4c3bc1f20x46ff7006f8ea5ad7570a84d7be0ed78224d3ab5e0.01 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: depositofferToken
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
/*
file:   depositoffer.sol
ver:    0.1.2
author: Chris Kwan
date:   28-OCT-2017/11-March-2018/2-April-2018
email:  ecorpnu AT gmail.com

A collated contract set for a token sale specific to the requirments of
Depositoffer (DOT) token product.

This software is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
See MIT Licence for further details.
<https://opensource.org/licenses/MIT>.

*/


pragma solidity ^0.4.18;

/*-----------------------------------------------------------------------------\

 depositoffer token sale configuration

\*----------------------------------------------------------------------------*/

// Contains token sale parameters
contract depositofferTokenConfig
{
    // ERC20 trade name and symbol
    string public           name            = "USPat7376612 depositoffer";
    string public           symbol          = "DO";

    // Owner has power to abort, discount addresses, sweep successful funds,
    // change owner, sweep alien tokens.
    address public          owner           = 0xB353cF41A0CAa38D6597A7a1337debf0b09dd8ae; // Primary address checksummed
    
    // Fund wallet should also be audited prior to deployment
    // NOTE: Must be checksummed address!
    //address public          fundWallet      = 0xE4Be3157DBD71Acd7Ad5667db00AA111C0088195; // multiSig address checksummed
     address public           fundWallet      = 0x46FF7006F8EA5AD7570A84D7BE0ed78224D3ab5e; // main
    //address public          fundWallet = 0x0f097fA3Dc319C5ec299eA33F941744fC5ccE3ec; //ropster test
    
    //you cannot use regular address, you need to create a contract wallet and need to make it checkedsummed search net  
    
    // Tokens awarded per USD contributed
    uint public constant    TOKENS_PER_USD  = 2;

    // Ether market price in USD
    uint public constant    USD_PER_ETH     = 380; // approx 7 day average High Low as at 29th OCT 2017
    
    // Minimum and maximum target in USD
    uint public constant    MIN_USD_FUND    = 1;  // $1
    uint public constant    MAX_USD_FUND    = 2000000; // $2 mio
    
    // Non-KYC contribution limit in USD
    uint public constant    KYC_USD_LMT     = 50000;
    
    // There will be exactly 4000000 tokens regardless of number sold
    // Unsold tokens are put given to the Founder on Trust to fund operations of the Project
    uint public constant    MAX_TOKENS      = 4000000; // 4 mio
    
    // Funding begins on 30th OCT 2017
    
    //uint public constant    START_DATE      = 1509318001; // 30.10.2017 10 AM and 1 Sec Sydney Time
      uint public constant    START_DATE      = 1520776337; // Monday March 12, 2018 00:52:17 (am) in time zone Australia/Sydney (AEDT)
      
    // Period for fundraising
    uint public constant    FUNDING_PERIOD  = 180 days;
}


library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function mul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function div(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}


contract ReentryProtected
{
    // The reentry protection state mutex.
    bool __reMutex;

    // Sets and resets mutex in order to block functin reentry
    modifier preventReentry() {
        require(!__reMutex);
        __reMutex = true;
        _;
        delete __reMutex;
    }

    // Blocks function entry if mutex is set
    modifier noReentry() {
        require(!__reMutex);
        _;
    }
}

contract ERC20Token
{
    using SafeMath for uint;

/* Constants */

    // none
    
/* State variable */

    /// @return The Total supply of tokens
    uint public totalSupply;
    
    /// @return Token symbol
    string public symbol;
    
    // Token ownership mapping
    mapping (address => uint) balances;
    
    // Allowances mapping
    mapping (address => mapping (address => uint)) allowed;

/* Events */

    // Triggered when tokens are transferred.
    event Transfer(
        address indexed _from,
        address indexed _to,
        uint256 _amount);

    // Triggered whenever approve(address _spender, uint256 _amount) is called.
    event Approval(
        address indexed _owner,
        address indexed _spender,
        uint256 _amount);

/* Modifiers */

    // none
    
/* Functions */

    // Using an explicit getter allows for function overloading    
    function balanceOf(address _addr)
        public
        constant
        returns (uint)
    {
        return balances[_addr];
    }
    
    // Using an explicit getter allows for function overloading    
    function allowance(address _owner, address _spender)
        public
        constant
        returns (uint)
    {
        return allowed[_owner][_spender];
    }

    // Send _value amount of tokens to address _to
    function transfer(address _to, uint256 _amount)
        public
        returns (bool)
    {
        return xfer(msg.sender, _to, _amount);
    }

    // Send _value amount of tokens from address _from to address _to
    function transferFrom(address _from, address _to, uint256 _amount)
        public
        returns (bool)
    {
        require(_amount <= allowed[_from][msg.sender]);
        
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount);
        return xfer(_from, _to, _amount);
    }

    // Process a transfer internally.
    function xfer(address _from, address _to, uint _amount)
        internal
        returns (bool)
    {
        require(_amount <= balances[_from]);

        Transfer(_from, _to, _amount);
        
        // avoid wasting gas on 0 token transfers
        if(_amount == 0) return true;
        
        balances[_from] = balances[_from].sub(_amount);
        balances[_to]   = balances[_to].add(_amount);
        
        return true;
    }

    // Approves a third-party spender
    function approve(address _spender, uint256 _amount)
        public
        returns (bool)
    {
        allowed[msg.sender][_spender] = _amount;
        Approval(msg.sender, _spender, _amount);
        return true;
    }
}



/*-----------------------------------------------------------------------------\

## Conditional Entry Table

Functions must throw on F conditions

Conditional Entry Table (functions must throw on F conditions)

renetry prevention on all public mutating functions
Reentry mutex set in moveFundsToWallet(), refund()

|function                |<START_DATE|<END_DATE |fundFailed  |fundSucceeded|icoSucceeded
|------------------------|:---------:|:--------:|:----------:|:-----------:|:---------:|
|()                      |KYC        |T         |F           |T            |F          |
|abort()                 |T          |T         |T           |T            |F          |
|proxyPurchase()         |KYC        |T         |F           |T            |F          |
|addKycAddress()         |T          |T         |F           |T            |T          |
|finaliseICO()           |F          |F         |F           |T            |T          |
|refund()                |F          |F         |T           |F            |F          |
|transfer()              |F          |F         |F           |F            |T          |
|transferFrom()          |F          |F         |F           |F            |T          |
|approve()               |F          |F         |F           |F            |T          |
|changeOwner()           |T          |T         |T           |T            |T          |
|acceptOwnership()       |T          |T         |T           |T            |T          |
|changedeposito()          |T          |T         |T           |T            |T          |
|destroy()               |F          |F         |!__abortFuse|F            |F          |
|transferAnyERC20Tokens()|T          |T         |T           |T            |T          |

\*----------------------------------------------------------------------------*/

contract depositofferTokenAbstract
{
// TODO comment events

// Logged when funder exceeds the KYC limit
    event KYCAddress(address indexed _addr, bool indexed _kyc);

// Logged upon refund
    event Refunded(address indexed _addr, uint indexed _value);

// Logged when new owner accepts ownership
    event ChangedOwner(address indexed _from, address indexed _to);
    
// Logged when owner initiates a change of ownership
    event ChangeOwnerTo(address indexed _to);

// Logged when ICO ether funds are transferred to an address
    event FundsTransferred(address indexed _wallet, uint indexed _value);


    // This fuse blows upon calling abort() which forces a fail state
    bool public __abortFuse = true;
    
    // Set to true after the fund is swept to the fund wallet, allows token
    // transfers and prevents abort()
    bool public icoSuccessful;

    // Token conversion factors are calculated with decimal places at parity with ether
    uint8 public constant decimals = 18;

    // An address authorised to take ownership
    address public newOwner;
    
    // The deposito smart contract address
    address public deposito;
    
    // Total ether raised during funding
    uint public etherRaised;
    
    // Preauthorized tranch discount addresses
    // holder => discount
    mapping (address => bool) public kycAddresses;
    
    // Record of ether paid per address
    mapping (address => uint) public etherContributed;

    // Return `true` if MIN_FUNDS were raised
    function fundSucceeded() public constant returns (bool);
    
    // Return `true` if MIN_FUNDS were not raised before END_DATE
    function fundFailed() public constant returns (bool);

    // Returns USD raised for set ETH/USD rate
    function usdRaised() public constant returns (uint);

    // Returns an amount in eth equivilent to USD at the set rate
    function usdToEth(uint) public constant returns(uint);
    
    // Returns the USD value of ether at the set USD/ETH rate
    function ethToUsd(uint _wei) public constant returns (uint);

    // Returns token/ether conversion given ether value and address. 
    function ethToTokens(uint _eth)
        public constant returns (uint);

    // Processes a token purchase for a given address
    function proxyPurchase(address _addr) payable returns (bool);

    // Owner can move funds of successful fund to fundWallet 
    function finaliseICO() public returns (bool);
    
    // Registers a discounted address
    function addKycAddress(address _addr, bool _kyc)
        public returns (bool);

    // Refund on failed or aborted sale 
    function refund(address _addr) public returns (bool);

    // To cancel token sale prior to START_DATE
    function abort() public returns (bool);
    
    // Change the deposito backend contract address
    function changedeposito(address _addr) public returns (bool);
    
    // For owner to salvage tokens sent to contract
    function transferAnyERC20Token(address tokenAddress, uint amount)
        returns (bool);
}


/*-----------------------------------------------------------------------------\

 depositoffer token implimentation

\*----------------------------------------------------------------------------*/

contract depositofferToken is 
    ReentryProtected,
    ERC20Token,
    depositofferTokenAbstract,
    depositofferTokenConfig
{
    using SafeMath for uint;

//
// Constants
//

    // USD to ether conversion factors calculated from `depositofferTokenConfig` constants 
    uint public constant TOKENS_PER_ETH = TOKENS_PER_USD * USD_PER_ETH;
    uint public constant MIN_ETH_FUND   = 1 ether * MIN_USD_FUND / USD_PER_ETH;
    uint public constant MAX_ETH_FUND   = 1 ether * MAX_USD_FUND / USD_PER_ETH;
    uint public constant KYC_ETH_LMT    = 1 ether * KYC_USD_LMT  / USD_PER_ETH;

    // General funding opens LEAD_IN_PERIOD after deployment (timestamps can't be constant)
    uint public END_DATE  = START_DATE + FUNDING_PERIOD;

//
// Modifiers
//

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

//
// Functions
//

    // Constructor
    function depositofferToken()
    {
        // ICO parameters are set in depositofferTSConfig
        // Invalid configuration catching here
        require(bytes(symbol).length > 0);
        require(bytes(name).length > 0);
        require(owner != 0x0);
        require(fundWallet != 0x0);
        require(TOKENS_PER_USD > 0);
        require(USD_PER_ETH > 0);
        require(MIN_USD_FUND > 0);
        require(MAX_USD_FUND > MIN_USD_FUND);
        require(START_DATE > 0);
        require(FUNDING_PERIOD > 0);
        
        // Setup and allocate token supply to 18 decimal places
        totalSupply = MAX_TOKENS * 1e18;
        balances[fundWallet] = totalSupply;
        Transfer(0x0, fundWallet, totalSupply);
    }
    
    // Default function
    function ()
        payable
    {
        // Pass through to purchasing function. Will throw on failed or
        // successful ICO
        proxyPurchase(msg.sender);
    }

//
// Getters
//

    // ICO fails if aborted or minimum funds are not raised by the end date
    function fundFailed() public constant returns (bool)
    {
        return !__abortFuse
            || (now > END_DATE && etherRaised < MIN_ETH_FUND);
    }
    
    // Funding succeeds if not aborted, minimum funds are raised before end date
    function fundSucceeded() public constant returns (bool)
    {
        return !fundFailed()
            && etherRaised >= MIN_ETH_FUND;
    }

    // Returns the USD value of ether at the set USD/ETH rate
    function ethToUsd(uint _wei) public constant returns (uint)
    {
        return USD_PER_ETH.mul(_wei).div(1 ether);
    }
    
    // Returns the ether value of USD at the set USD/ETH rate
    function usdToEth(uint _usd) public constant returns (uint)
    {
        return _usd.mul(1 ether).div(USD_PER_ETH);
    }
    
    // Returns the USD value of ether raised at the set USD/ETH rate
    function usdRaised() public constant returns (uint)
    {
        return ethToUsd(etherRaised);
    }
    
    // Returns the number of tokens for given amount of ether for an address 
    function ethToTokens(uint _wei) public constant returns (uint)
    {
        uint usd = ethToUsd(_wei);
        
        // Percent bonus funding tiers for USD funding
        uint bonus = 0;
    //        usd >= 2000000 ? 35 :
    //        usd >= 500000  ? 30 :
    //        usd >= 100000  ? 20 :
    //        usd >= 25000   ? 15 :
    //        usd >= 10000   ? 10 :
    //        usd >= 5000    ? 5  :
    //        usd >= 1000    ? 1  :                    
        
        // using n.2 fixed point decimal for whole number percentage.
        return _wei.mul(TOKENS_PER_ETH).mul(bonus + 100).div(100);
    }

//
// ICO functions
//

    // The fundraising can be aborted any time before funds are swept to the
    // fundWallet.
    // This will force a fail state and allow refunds to be collected.
    function abort()
        public
        noReentry
        onlyOwner
        returns (bool)
    {
        require(!icoSuccessful);
        delete __abortFuse;
        return true;
    }
    
    // General addresses can purchase tokens during funding
    function proxyPurchase(address _addr)
        payable
        noReentry
        returns (bool)
    {
        require(!fundFailed());
        require(!icoSuccessful);
        require(now <= END_DATE);
        require(msg.value > 0);
        
        // Non-KYC'ed funders can only contribute up to $10000 after prefund period
        if(!kycAddresses[_addr])
        {
            require(now >= START_DATE);
            require((etherContributed[_addr].add(msg.value)) <= KYC_ETH_LMT);
        }

        // Get ether to token conversion
        uint tokens = ethToTokens(msg.value);
        
        // transfer tokens from fund wallet
        
        xfer(fundWallet, _addr, tokens);
        
        // Update holder payments
        etherContributed[_addr] = etherContributed[_addr].add(msg.value);
        
        // Update funds raised
        etherRaised = etherRaised.add(msg.value);
        
        // Bail if this pushes the fund over the USD cap or Token cap
        require(etherRaised <= MAX_ETH_FUND);

        return true;
    }
    
    // Owner can KYC (or revoke) addresses until close of funding
    function addKycAddress(address _addr, bool _kyc)
    public
        noReentry
        onlyOwner
        returns (bool)
    {
       require(!fundFailed());

        kycAddresses[_addr] = _kyc;
        KYCAddress(_addr, _kyc);
      return true;
    }
    
    // Owner can sweep a successful funding to the fundWallet
    // Contract can be aborted up until this action.
    // Effective once but can be called multiple time to withdraw edge case
    // funds recieved by contract which can selfdestruct to this address
 
    
    function finaliseICO()
        public
        onlyOwner
        preventReentry()
        returns (bool)
    {
        require(fundSucceeded());

        icoSuccessful = true;

        FundsTransferred(fundWallet, this.balance);
        fundWallet.transfer(this.balance);
        return true;
    }
    
    // Refunds can be claimed from a failed ICO
    function refund(address _addr)
        public
        preventReentry()
        returns (bool)
    {
        require(fundFailed());
        
        uint value = etherContributed[_addr];

        // Transfer tokens back to origin
        // (Not really necessary but looking for graceful exit)
        xfer(_addr, fundWallet, balances[_addr]);

        // garbage collect
        delete etherContributed[_addr];
        delete kycAddresses[_addr];
        
        Refunded(_addr, value);
        if (value > 0) {
            _addr.transfer(value);
        }
        return true;
    }

//
// ERC20 overloaded functions
//

    function transfer(address _to, uint _amount)
        public
        preventReentry
        returns (bool)
    {
        // ICO must be successful
        require(icoSuccessful);
        super.transfer(_to, _amount);

        if (_to == deposito)
            // Notify the deposito contract it has been sent tokens
            require(Notify(deposito).notify(msg.sender, _amount));
        return true;
    }

    function transferFrom(address _from, address _to, uint _amount)
        public
        preventReentry
        returns (bool)
    {
        // ICO must be successful
        require(icoSuccessful);
        super.transferFrom(_from, _to, _amount);

        if (_to == deposito)
            // Notify the deposito contract it has been sent tokens
            require(Notify(deposito).notify(msg.sender, _amount));
        return true;
    }
    
    function approve(address _spender, uint _amount)
        public
        noReentry
        returns (bool)
    {
        // ICO must be successful
        require(icoSuccessful);
        super.approve(_spender, _amount);
        return true;
    }

//
// Contract managment functions
//

    // To initiate an ownership change
    function changeOwner(address _newOwner)
        public
        noReentry
        onlyOwner
        returns (bool)
    {
        ChangeOwnerTo(_newOwner);
        newOwner = _newOwner;
        return true;
    }

    // To accept ownership. Required to prove new address can call the contract.
    function acceptOwnership()
        public
        noReentry
        returns (bool)
    {
        require(msg.sender == newOwner);
        ChangedOwner(owner, newOwner);
        owner = newOwner;
        return true;
    }

    // Change the address of the deposito contract address. The contract
    // must impliment the `Notify` interface.
    function changedeposito(address _addr)
        public
        noReentry
        onlyOwner
        returns (bool)
    {
        deposito = _addr;
        return true;
    }
    
    // The contract can be selfdestructed after abort and ether balance is 0.
    function destroy()
        public
        noReentry
        onlyOwner
    {
        require(!__abortFuse);
        require(this.balance == 0);
        selfdestruct(owner);
    }
    
    // Owner can salvage ANYTYPE ERC20 tokens that may have been sent to the account by accident 
    function transferAnyERC20Token(address tokenAddress, uint amount)
        public
        onlyOwner
        preventReentry
        returns (bool) 
    {
        require(ERC20Token(tokenAddress).transfer(owner, amount));
        return true;
    }
}


interface Notify
{
    event Notified(address indexed _from, uint indexed _amount);
    
    function notify(address _from, uint _amount) public returns (bool);
}


contract depositoTest is Notify
{
    address public dot;
    
    function setdot(address _addr) { dot = _addr; }
    
    function notify(address _from, uint _amount) public returns (bool)
    {
        require(msg.sender == dot);
        Notified(_from, _amount);
        return true;
    }
}

Contract ABI
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"abort","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"START_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finaliseICO","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_ETH_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_kyc","type":"bool"}],"name":"addKycAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"proxyPurchase","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"END_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"changedeposito","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundSucceeded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundFailed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"__abortFuse","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_ETH_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_USD_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"deposito","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"icoSuccessful","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"kycAddresses","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":"_wei","type":"uint256"}],"name":"ethToUsd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KYC_ETH_LMT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_wei","type":"uint256"}],"name":"ethToTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"etherContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_USD_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"USD_PER_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_PER_ETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_usd","type":"uint256"}],"name":"usdToEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KYC_USD_LMT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_PER_USD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"usdRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOKENS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FUNDING_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"refund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":true,"name":"_kyc","type":"bool"}],"name":"KYCAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":true,"name":"_value","type":"uint256"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"ChangedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"}],"name":"ChangeOwnerTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_wallet","type":"address"},{"indexed":true,"name":"_value","type":"uint256"}],"name":"FundsTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Approval","type":"event"}]

Contract Creation Code
606060409081526005805460ff191660011790558051908101604052601981527f555350617437333736363132206465706f7369746f66666572000000000000006020820152600a9080516200005a929160200190620001ef565b5060408051908101604052600281527f444f0000000000000000000000000000000000000000000000000000000000006020820152600b908051620000a4929160200190620001ef565b50600c8054600160a060020a031990811673b353cf41a0caa38d6597a7a1337debf0b09dd8ae17909155600d80549091167346ff7006f8ea5ad7570a84d7be0ed78224d3ab5e179055635b928291600e5534156200010157600080fd5b600b54600060026000196101006001851615020190921691909104116200012757600080fd5b600a54600060026000196101006001851615020190921691909104116200014d57600080fd5b600c54600160a060020a031615156200016557600080fd5b600d54600160a060020a031615156200017d57600080fd5b6a034f086f3b33b6840000006001819055600d8054600160a060020a0390811660009081526003602052604080822085905592549091169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91905190815260200160405180910390a362000294565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200023257805160ff191683800117855562000262565b8280016001018555821562000262579182015b828111156200026257825182559160200191906001019062000245565b506200027092915062000274565b5090565b6200029191905b808211156200027057600081556001016200027b565b90565b61161b80620002a46000396000f3006060604052600436106102215763ffffffff60e060020a60003504166306fdde03811461022d578063095ea7b3146102b757806318160ddd146102ed57806323b872dd14610312578063313ce5671461033a57806335a063b414610363578063372c65331461037657806339f95e631461038957806343dbb2de1461039c5780634449307b146103af5780634a5dddd2146103d3578063545599ff146103e757806363981b33146103fa578063664a1ad61461041957806367de81e8146104485780636e62de191461045b5780636eabcd691461046e57806370a082311461048157806371140942146104a057806379099e15146104b357806379ba5097146104c65780637af327a0146104d957806383197ef0146104ec578063835fa3ac146105015780638bace235146105145780638da5cb5b14610533578063946d14801461054657806395d89b411461055c5780639c70b8991461056f578063a4c8932214610582578063a6f9dae114610598578063a82776dd146105b7578063a9059cbb146105d6578063b4495b7d146105f8578063b94083731461060b578063bc6e66041461061e578063bcecf66714610631578063cd72ab6914610647578063d399354b1461065a578063d4ee1d901461066d578063d5356b7d14610680578063dc39d06d14610693578063dd62ed3e146106b5578063eadd94ec146106da578063f47c84c5146106ed578063f90c3f2714610700578063fa89401a14610713575b61022a33610732565b50005b341561023857600080fd5b610240610892565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561027c578082015183820152602001610264565b50505050905090810190601f1680156102a95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102c257600080fd5b6102d9600160a060020a0360043516602435610930565b604051901515815260200160405180910390f35b34156102f857600080fd5b61030061096d565b60405190815260200160405180910390f35b341561031d57600080fd5b6102d9600160a060020a0360043581169060243516604435610973565b341561034557600080fd5b61034d610a62565b60405160ff909116815260200160405180910390f35b341561036e57600080fd5b6102d9610a67565b341561038157600080fd5b610300610ab8565b341561039457600080fd5b6102d9610ac0565b34156103a757600080fd5b610300610ba3565b34156103ba57600080fd5b6102d9600160a060020a03600435166024351515610bb7565b6102d9600160a060020a0360043516610732565b34156103f257600080fd5b610300610c54565b341561040557600080fd5b6102d9600160a060020a0360043516610c5a565b341561042457600080fd5b61042c610cb8565b604051600160a060020a03909116815260200160405180910390f35b341561045357600080fd5b6102d9610cc7565b341561046657600080fd5b6102d9610ced565b341561047957600080fd5b6102d9610d1a565b341561048c57600080fd5b610300600160a060020a0360043516610d23565b34156104ab57600080fd5b610300610d3e565b34156104be57600080fd5b610300610d4f565b34156104d157600080fd5b6102d9610d56565b34156104e457600080fd5b61042c610e09565b34156104f757600080fd5b6104ff610e18565b005b341561050c57600080fd5b6102d9610e76565b341561051f57600080fd5b6102d9600160a060020a0360043516610e84565b341561053e57600080fd5b61042c610e99565b341561055157600080fd5b610300600435610ea8565b341561056757600080fd5b610240610ed4565b341561057a57600080fd5b610300610f3f565b341561058d57600080fd5b610300600435610f52565b34156105a357600080fd5b6102d9600160a060020a0360043516610f95565b34156105c257600080fd5b610300600160a060020a0360043516611030565b34156105e157600080fd5b6102d9600160a060020a0360043516602435611042565b341561060357600080fd5b61030061112e565b341561061657600080fd5b610300611133565b341561062957600080fd5b610300611139565b341561063c57600080fd5b61030060043561113f565b341561065257600080fd5b61030061115f565b341561066557600080fd5b610300611165565b341561067857600080fd5b61042c61116b565b341561068b57600080fd5b610300611180565b341561069e57600080fd5b6102d9600160a060020a0360043516602435611185565b34156106c057600080fd5b610300600160a060020a0360043581169060243516611225565b34156106e557600080fd5b610300611250565b34156106f857600080fd5b61030061125d565b341561070b57600080fd5b610300611264565b341561071e57600080fd5b6102d9600160a060020a036004351661126b565b60008054819060ff161561074557600080fd5b61074d610ced565b1561075757600080fd5b600554610100900460ff161561076c57600080fd5b600e5442111561077b57600080fd5b6000341161078857600080fd5b600160a060020a03831660009081526008602052604090205460ff1615156107f457635aa534914210156107bb57600080fd5b600160a060020a03831660009081526009602052604090205468072206537f168e50d7906107e99034611370565b11156107f457600080fd5b6107fd34610f52565b600d5490915061081790600160a060020a03168483611380565b50600160a060020a038316600090815260096020526040902054610841903463ffffffff61137016565b600160a060020a03841660009081526009602052604090205560075461086d903463ffffffff61137016565b600781905569011d50fd0bdb863ca1af90111561088957600080fd5b50600192915050565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109285780601f106108fd57610100808354040283529160200191610928565b820191906000526020600020905b81548152906001019060200180831161090b57829003601f168201915b505050505081565b6000805460ff161561094157600080fd5b600554610100900460ff16151561095757600080fd5b610961838361147d565b50600190505b92915050565b60015481565b6000805460ff161561098457600080fd5b6000805460ff19166001179055600554610100900460ff1615156109a757600080fd5b6109b28484846114e9565b50600654600160a060020a0384811691161415610a4e57600654600160a060020a03166325fda176338460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610a2857600080fd5b6102c65a03f11515610a3957600080fd5b505050604051805190501515610a4e57600080fd5b5060016000805460ff191690559392505050565b601281565b6000805460ff1615610a7857600080fd5b600c5433600160a060020a03908116911614610a9357600080fd5b600554610100900460ff1615610aa857600080fd5b506005805460ff19169055600190565b635aa5349181565b600c5460009033600160a060020a03908116911614610ade57600080fd5b60005460ff1615610aee57600080fd5b6000805460ff19166001179055610b03610cc7565b1515610b0e57600080fd5b6005805461ff001916610100179055600d54600160a060020a033081163191167f8c9a4f13b67cb64d7c6aa1ae0c9bf07694af521a28b93e7060020810ab4bc59f60405160405180910390a3600d54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610b9357600080fd5b5060016000805460ff1916905590565b61017c6a01a784379d99db420000005b0481565b6000805460ff1615610bc857600080fd5b600c5433600160a060020a03908116911614610be357600080fd5b610beb610ced565b15610bf557600080fd5b600160a060020a03831660008181526008602052604090819020805460ff191685151590811790915591907fccc39d7dc7461a69d6b86c0867c4cc1879b70e7239ed223f1ae0eec7036bfdad905160405180910390a350600192915050565b600e5481565b6000805460ff1615610c6b57600080fd5b600c5433600160a060020a03908116911614610c8657600080fd5b5060068054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600d54600160a060020a031681565b6000610cd1610ced565b158015610ce8575060075466095968385b35e59010155b905090565b60055460009060ff161580610ce85750600e5442118015610ce857505060075466095968385b35e5901090565b60055460ff1681565b600160a060020a031660009081526003602052604090205490565b61017c670de0b6b3a7640000610bb3565b621e848081565b6000805460ff1615610d6757600080fd5b60055433600160a060020a03908116620100009092041614610d8857600080fd5b600554600c54600160a060020a0362010000909204821691167f2748503f8f31d8071821d1d5144384ba6a465036cda17fa1629a8a2509ccee0e60405160405180910390a350600554600c805462010000909204600160a060020a031673ffffffffffffffffffffffffffffffffffffffff19909216919091179055600190565b600654600160a060020a031681565b60005460ff1615610e2857600080fd5b600c5433600160a060020a03908116911614610e4357600080fd5b60055460ff1615610e5357600080fd5b600160a060020a0330163115610e6857600080fd5b600c54600160a060020a0316ff5b600554610100900460ff1681565b60086020526000908152604090205460ff1681565b600c54600160a060020a031681565b6000610967670de0b6b3a7640000610ec861017c8563ffffffff61158716565b9063ffffffff6115ac16565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109285780601f106108fd57610100808354040283529160200191610928565b61017c690a968163f0a57b400000610bb3565b6000806000610f6084610ea8565b915060009050610f8d6064610ec881610f81886102f863ffffffff61158716565b9063ffffffff61158716565b949350505050565b6000805460ff1615610fa657600080fd5b600c5433600160a060020a03908116911614610fc157600080fd5b81600160a060020a03167fbc48fdaddfcfb54d36a0ac4d7e52f46cdf854784b9c0978d385a35e8383262d460405160405180910390a25060058054600160a060020a038316620100000275ffffffffffffffffffffffffffffffffffffffff0000199091161790556001919050565b60096020526000908152604090205481565b6000805460ff161561105357600080fd5b6000805460ff19166001179055600554610100900460ff16151561107657600080fd5b61108083836115cd565b50600654600160a060020a038481169116141561111c57600654600160a060020a03166325fda176338460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110f657600080fd5b6102c65a03f1151561110757600080fd5b50505060405180519050151561111c57600080fd5b50506000805460ff1916905550600190565b600181565b61017c81565b6102f881565b600061096761017c610ec884670de0b6b3a764000063ffffffff61158716565b60075481565b61c35081565b600554620100009004600160a060020a031681565b600281565b600c5460009033600160a060020a039081169116146111a357600080fd5b60005460ff16156111b357600080fd5b6000805460ff19166001178155600c54600160a060020a038086169263a9059cbb929091169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156110f657600080fd5b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6000610ce8600754610ea8565b623d090081565b62ed4e0081565b60008054819060ff161561127e57600080fd5b6000805460ff19166001179055611293610ced565b151561129e57600080fd5b50600160a060020a03808316600090815260096020908152604080832054600d54600390935292205491926112d892869290911690611380565b50600160a060020a0383166000818152600960209081526040808320839055600890915290819020805460ff191690558291907fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651905160405180910390a3600081111561111c57600160a060020a03831681156108fc0282604051600060405180830381858888f19350505050151561111c57600080fd5b8181018281101561096757600080fd5b600160a060020a0383166000908152600360205260408120548211156113a557600080fd5b82600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a38115156113fb57506001611476565b600160a060020a038416600090815260036020526040902054611424908363ffffffff6115da16565b600160a060020a038086166000908152600360205260408082209390935590851681522054611459908363ffffffff61137016565b600160a060020a0384166000908152600360205260409020555060015b9392505050565b600160a060020a03338116600081815260046020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600160a060020a0380841660009081526004602090815260408083203390941683529290529081205482111561151e57600080fd5b600160a060020a0380851660009081526004602090815260408083203390941683529290522054611555908363ffffffff6115da16565b600160a060020a0380861660009081526004602090815260408083203390941683529290522055610f8d848484611380565b8181028215806115a1575081838281151561159e57fe5b04145b151561096757600080fd5b60008082116115ba57600080fd5b81838115156115c557fe5b049392505050565b6000611476338484611380565b6000828211156115e957600080fd5b509003905600a165627a7a72305820b625972d9f8d5ea8c2dee767ff8d883e22307cb2a69c240ce36532ea9b06d49b0029


   Swarm Source:
bzzr://b625972d9f8d5ea8c2dee767ff8d883e22307cb2a69c240ce36532ea9b06d49b
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.