ETH Price: $2,728.17 (+3.95%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Tokens39769902017-07-05 8:09:282770 days ago1499242168IN
0xB3F1C771...199504931
0 ETH0.0004936221
Fix Investment39488652017-06-29 17:59:422776 days ago1498759182IN
0xB3F1C771...199504931
0 ETH0.0008426231.5
Fix Investment39487222017-06-29 17:15:452776 days ago1498756545IN
0xB3F1C771...199504931
0 ETH0.0012147631.5
Fix Investment39487092017-06-29 17:12:362776 days ago1498756356IN
0xB3F1C771...199504931
0 ETH0.00283531.5
Fix Investment39487012017-06-29 17:10:212776 days ago1498756221IN
0xB3F1C771...199504931
0 ETH0.0016852531.5
Fix Investment39486962017-06-29 17:08:362776 days ago1498756116IN
0xB3F1C771...199504931
0 ETH0.00283531.5
Fix Investment39486872017-06-29 17:06:282776 days ago1498755988IN
0xB3F1C771...199504931
0 ETH0.00283531.5
Fix Investment39486762017-06-29 17:03:112776 days ago1498755791IN
0xB3F1C771...199504931
0 ETH0.0021577531.5
Fix Investment39486702017-06-29 17:00:062776 days ago1498755606IN
0xB3F1C771...199504931
0 ETH0.00283531.5
Fix Investment39486622017-06-29 16:57:392776 days ago1498755459IN
0xB3F1C771...199504931
0 ETH0.00283531.5
Fix Investment39485972017-06-29 16:40:202776 days ago1498754420IN
0xB3F1C771...199504931
0 ETH0.001220
Fix Investment39485502017-06-29 16:29:582776 days ago1498753798IN
0xB3F1C771...199504931
0 ETH0.001220
Fix Investment39422122017-06-28 9:51:412777 days ago1498643501IN
0xB3F1C771...199504931
0 ETH0.0018762935.0827529
Fix Investment39422122017-06-28 9:51:412777 days ago1498643501IN
0xB3F1C771...199504931
0 ETH0.0018762935.0827529
Fix Investment39422122017-06-28 9:51:412777 days ago1498643501IN
0xB3F1C771...199504931
0 ETH0.0018762935.0827529
Fix Investment39422122017-06-28 9:51:412777 days ago1498643501IN
0xB3F1C771...199504931
0 ETH0.0024009235.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0024017335.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0018759435.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0023964335.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0023986735.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0018736935.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0018736935.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0018736935.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0023999435.0827529
Fix Investment39422092017-06-28 9:51:122777 days ago1498643472IN
0xB3F1C771...199504931
0 ETH0.0024021835.0827529
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HumaniqICO

Compiler Version
v0.4.8+commit.60cc1668

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-05-08
*/

pragma solidity ^0.4.6;


/**
 * Math operations with safety checks
 */
contract SafeMath {
  function mul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint a, uint b) internal returns (uint) {
    assert(b > 0);
    uint c = a / b;
    assert(a == b * c + a % b);
    return c;
  }

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

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

  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}


/// Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20
/// @title Abstract token contract - Functions to be implemented by token contracts.
contract AbstractToken {
    // This is not an abstract function, because solc won't recognize generated getter functions for public variables as functions
    function totalSupply() constant returns (uint256 supply) {}
    function balanceOf(address owner) constant returns (uint256 balance);
    function transfer(address to, uint256 value) returns (bool success);
    function transferFrom(address from, address to, uint256 value) returns (bool success);
    function approve(address spender, uint256 value) returns (bool success);
    function allowance(address owner, address spender) constant returns (uint256 remaining);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Issuance(address indexed to, uint256 value);
}


contract StandardToken is AbstractToken {

    /*
     *  Data structures
     */
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
    uint256 public totalSupply;

    /*
     *  Read and write storage functions
     */
    /// @dev Transfers sender's tokens to a given address. Returns success.
    /// @param _to Address of token receiver.
    /// @param _value Number of tokens to transfer.
    function transfer(address _to, uint256 _value) returns (bool success) {
        if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        }
        else {
            return false;
        }
    }

    /// @dev Allows allowed third party to transfer tokens from one address to another. Returns success.
    /// @param _from Address from where tokens are withdrawn.
    /// @param _to Address to where tokens are sent.
    /// @param _value Number of tokens to transfer.
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
      if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            balances[_to] += _value;
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            Transfer(_from, _to, _value);
            return true;
        }
        else {
            return false;
        }
    }

    /// @dev Returns number of tokens owned by given address.
    /// @param _owner Address of token owner.
    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    /// @dev Sets approved amount of tokens for spender. Returns success.
    /// @param _spender Address of allowed account.
    /// @param _value Number of approved tokens.
    function approve(address _spender, uint256 _value) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /*
     * Read storage functions
     */
    /// @dev Returns number of allowed tokens for given address.
    /// @param _owner Address of token owner.
    /// @param _spender Address of token spender.
    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

}


/// @title Token contract - Implements Standard Token Interface with HumaniQ features.
/// @author Evgeny Yurtaev - <[email protected]>
/// @author Alexey Bashlykov - <[email protected]>
contract HumaniqToken is StandardToken, SafeMath {

    /*
     * External contracts
     */
    address public minter;

    /*
     * Token meta data
     */
    string constant public name = "Humaniq";
    string constant public symbol = "HMQ";
    uint8 constant public decimals = 8;

    // Address of the founder of Humaniq.
    address public founder = 0xc890b1f532e674977dfdb791cafaee898dfa9671;

    // Multisig address of the founders
    address public multisig = 0xa2c9a7578e2172f32a36c5c0e49d64776f9e7883;

    // Address where all tokens created during ICO stage initially allocated
    address constant public allocationAddressICO = 0x1111111111111111111111111111111111111111;

    // Address where all tokens created during preICO stage initially allocated
    address constant public allocationAddressPreICO = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;

    // 31 820 314 tokens were minted during preICO
    uint constant public preICOSupply = mul(31820314, 100000000);

    // 131 038 286 tokens were minted during ICO
    uint constant public ICOSupply = mul(131038286, 100000000);

    // Max number of tokens that can be minted
    uint public maxTotalSupply;

    /*
     * Modifiers
     */
    modifier onlyFounder() {
        // Only founder is allowed to do this action.
        if (msg.sender != founder) {
            throw;
        }
        _;
    }

    modifier onlyMinter() {
        // Only minter is allowed to proceed.
        if (msg.sender != minter) {
            throw;
        }
        _;
    }

    /*
     * Contract functions
     */

    /// @dev Crowdfunding contract issues new tokens for address. Returns success.
    /// @param _for Address of receiver.
    /// @param tokenCount Number of tokens to issue.
    function issueTokens(address _for, uint tokenCount)
        external
        payable
        onlyMinter
        returns (bool)
    {
        if (tokenCount == 0) {
            return false;
        }

        if (add(totalSupply, tokenCount) > maxTotalSupply) {
            throw;
        }

        totalSupply = add(totalSupply, tokenCount);
        balances[_for] = add(balances[_for], tokenCount);
        Issuance(_for, tokenCount);
        return true;
    }

    /// @dev Function to change address that is allowed to do emission.
    /// @param newAddress Address of new emission contract.
    function changeMinter(address newAddress)
        public
        onlyFounder
        returns (bool)
    {   
        // Forbid previous emission contract to distribute tokens minted during ICO stage
        delete allowed[allocationAddressICO][minter];

        minter = newAddress;

        // Allow emission contract to distribute tokens minted during ICO stage
        allowed[allocationAddressICO][minter] = balanceOf(allocationAddressICO);
    }

    /// @dev Function to change founder address.
    /// @param newAddress Address of new founder.
    function changeFounder(address newAddress)
        public
        onlyFounder
        returns (bool)
    {   
        founder = newAddress;
    }

    /// @dev Function to change multisig address.
    /// @param newAddress Address of new multisig.
    function changeMultisig(address newAddress)
        public
        onlyFounder
        returns (bool)
    {
        multisig = newAddress;
    }

    /// @dev Contract constructor function sets initial token balances.
    function HumaniqToken(address founderAddress)
    {   
        // Set founder address
        founder = founderAddress;

        // Allocate all created tokens during ICO stage to allocationAddressICO.
        balances[allocationAddressICO] = ICOSupply;

        // Allocate all created tokens during preICO stage to allocationAddressPreICO.
        balances[allocationAddressPreICO] = preICOSupply;

        // Allow founder to distribute tokens minted during preICO stage
        allowed[allocationAddressPreICO][founder] = preICOSupply;

        // Give 14 percent of all tokens to founders.
        balances[multisig] = div(mul(ICOSupply, 14), 86);

        // Set correct totalSupply and limit maximum total supply.
        totalSupply = add(ICOSupply, balances[multisig]);
        totalSupply = add(totalSupply, preICOSupply);
        maxTotalSupply = mul(totalSupply, 5);
    }
}

/// @title HumaniqICO contract - Takes funds from users and issues tokens.
/// @author Evgeny Yurtaev - <[email protected]>
/// @author Alexey Bashlykov - <[email protected]>
contract HumaniqICO is SafeMath {

    /*
     * External contracts
     */
    HumaniqToken public humaniqToken;

    // Address of the founder of Humaniq.
    address public founder = 0xc890b1f532e674977dfdb791cafaee898dfa9671;

    // Address where all tokens created during ICO stage initially allocated
    address public allocationAddress = 0x1111111111111111111111111111111111111111;

    // Start date of the ICO
    uint public startDate = 1491433200;  // 2017-04-05 23:00:00 UTC

    // End date of the ICO
    uint public endDate = 1493247600;  // 2017-04-26 23:00:00 UTC

    // Token price without discount during the ICO stage
    uint public baseTokenPrice = 10000000; // 0.001 ETH, considering 8 decimal places

    // Number of tokens distributed to investors
    uint public tokensDistributed = 0;

    /*
     *  Modifiers
     */
    modifier onlyFounder() {
        // Only founder is allowed to do this action.
        if (msg.sender != founder) {
            throw;
        }
        _;
    }

    modifier minInvestment(uint investment) {
        // User has to send at least the ether value of one token.
        if (investment < baseTokenPrice) {
            throw;
        }
        _;
    }

    /// @dev Returns current bonus
    function getCurrentBonus()
        public
        constant
        returns (uint)
    {
        return getBonus(now);
    }

    /// @dev Returns bonus for the specific moment
    /// @param timestamp Time of investment (in seconds)
    function getBonus(uint timestamp)
        public
        constant
        returns (uint)
    {   
        if (timestamp > endDate) {
            throw;
        }

        if (startDate > timestamp) {
            return 1499;  // 49.9%
        }

        uint icoDuration = timestamp - startDate;
        if (icoDuration >= 16 days) {
            return 1000;  // 0%
        } else if (icoDuration >= 9 days) {
            return 1125;  // 12.5%
        } else if (icoDuration >= 2 days) {
            return 1250;  // 25%
        } else {
            return 1499;  // 49.9%
        }
    }

    function calculateTokens(uint investment, uint timestamp)
        public
        constant
        returns (uint)
    {
        // calculate discountedPrice
        uint discountedPrice = div(mul(baseTokenPrice, 1000), getBonus(timestamp));

        // Token count is rounded down. Sent ETH should be multiples of baseTokenPrice.
        return div(investment, discountedPrice);
    }


    /// @dev Issues tokens for users who made BTC purchases.
    /// @param beneficiary Address the tokens will be issued to.
    /// @param investment Invested amount in Wei
    /// @param timestamp Time of investment (in seconds)
    function fixInvestment(address beneficiary, uint investment, uint timestamp)
        external
        onlyFounder
        minInvestment(investment)
        returns (uint)
    {   

        // Calculate number of tokens to mint
        uint tokenCount = calculateTokens(investment, timestamp);

        // Update fund's and user's balance and total supply of tokens.
        tokensDistributed = add(tokensDistributed, tokenCount);

        // Distribute tokens.
        if (!humaniqToken.transferFrom(allocationAddress, beneficiary, tokenCount)) {
            // Tokens could not be issued.
            throw;
        }

        return tokenCount;
    }

    /// @dev Contract constructor
    function HumaniqICO(address tokenAddress, address founderAddress) {
        // Set token address
        humaniqToken = HumaniqToken(tokenAddress);

        // Set founder address
        founder = founderAddress;
    }

    /// @dev Fallback function
    function () payable {
        throw;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"startDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensDistributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"baseTokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"getBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"founder","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCurrentBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"humaniqToken","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"investment","type":"uint256"},{"name":"timestamp","type":"uint256"}],"name":"fixInvestment","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"investment","type":"uint256"},{"name":"timestamp","type":"uint256"}],"name":"calculateTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"allocationAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"tokenAddress","type":"address"},{"name":"founderAddress","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"}]

606060405260018054600160a060020a031990811673c890b1f532e674977dfdb791cafaee898dfa967117909155600280549091167311111111111111111111111111111111111111111790556358e576f0600355635901267060045562989680600555600060065534610000576040516040806105b48339810160405280516020909101515b60008054600160a060020a03808516600160a060020a03199283161790925560018054928416929091169190911790555b50505b6104eb806100c96000396000f300606060405236156100935763ffffffff60e060020a6000350416630b97bc8681146100a0578063152e84a7146100bf5780631da93873146100de5780634aa66b28146100fd5780634d853ee51461011f57806357e5eea5146101485780638a9fb135146101675780638f1224ce14610190578063903cc583146101c1578063c24a0f8b146101e6578063dbd6f5c114610205575b61009e5b610000565b565b005b34610000576100ad61022e565b60408051918252519081900360200190f35b34610000576100ad610234565b60408051918252519081900360200190f35b34610000576100ad61023a565b60408051918252519081900360200190f35b34610000576100ad600435610240565b60408051918252519081900360200190f35b346100005761012c6102b8565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ad6102c7565b60408051918252519081900360200190f35b346100005761012c6102d8565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ad600160a060020a03600435166024356044356102e7565b60408051918252519081900360200190f35b34610000576100ad6004356024356103dc565b60408051918252519081900360200190f35b34610000576100ad610415565b60408051918252519081900360200190f35b346100005761012c61041b565b60408051600160a060020a039092168252519081900360200190f35b60035481565b60065481565b60055481565b6000600060045483111561025357610000565b826003541115610267576105db91506102af565b506003548203621518008110610281576103e891506102af565b620bdd8081106102955761046591506102af565b6202a30081106102a9576104e291506102af565b6105db91505b5b5b5b50919050565b600154600160a060020a031681565b60006102d242610240565b90505b90565b600054600160a060020a031681565b600154600090819033600160a060020a0390811691161461030757610000565b8360055481101561031757610000565b61032185856103dc565b915061032f6006548361042a565b6006556000805460025460408051602090810185905281517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201528b8416602482015260448101889052915192909316936323b872dd9360648084019491939192918390030190829087803b156100005760325a03f11561000057505060405151151590506103cd57610000565b8192505b5b505b509392505050565b600060006103ff6103f16005546103e8610446565b6103fa85610240565b610472565b905061040b8482610472565b91505b5092915050565b60045481565b600254600160a060020a031681565b600082820161043b848210156104af565b8091505b5092915050565b600082820261043b841580610462575083858381156100005704145b6104af565b8091505b5092915050565b60006000610482600084116104af565b828481156100005704905061043b8385811561000057068285020185146104af565b8091505b5092915050565b8015156104bb57610000565b5b505600a165627a7a72305820b2311f26f7ed636c39772ef561acf573afdba07036340004d4f4e0d3806535d00029000000000000000000000000cbcc0f036ed4788f63fc0fee32873d6a7487b908000000000000000000000000c890b1f532e674977dfdb791cafaee898dfa9671

Deployed Bytecode

0x606060405236156100935763ffffffff60e060020a6000350416630b97bc8681146100a0578063152e84a7146100bf5780631da93873146100de5780634aa66b28146100fd5780634d853ee51461011f57806357e5eea5146101485780638a9fb135146101675780638f1224ce14610190578063903cc583146101c1578063c24a0f8b146101e6578063dbd6f5c114610205575b61009e5b610000565b565b005b34610000576100ad61022e565b60408051918252519081900360200190f35b34610000576100ad610234565b60408051918252519081900360200190f35b34610000576100ad61023a565b60408051918252519081900360200190f35b34610000576100ad600435610240565b60408051918252519081900360200190f35b346100005761012c6102b8565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ad6102c7565b60408051918252519081900360200190f35b346100005761012c6102d8565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ad600160a060020a03600435166024356044356102e7565b60408051918252519081900360200190f35b34610000576100ad6004356024356103dc565b60408051918252519081900360200190f35b34610000576100ad610415565b60408051918252519081900360200190f35b346100005761012c61041b565b60408051600160a060020a039092168252519081900360200190f35b60035481565b60065481565b60055481565b6000600060045483111561025357610000565b826003541115610267576105db91506102af565b506003548203621518008110610281576103e891506102af565b620bdd8081106102955761046591506102af565b6202a30081106102a9576104e291506102af565b6105db91505b5b5b5b50919050565b600154600160a060020a031681565b60006102d242610240565b90505b90565b600054600160a060020a031681565b600154600090819033600160a060020a0390811691161461030757610000565b8360055481101561031757610000565b61032185856103dc565b915061032f6006548361042a565b6006556000805460025460408051602090810185905281517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201528b8416602482015260448101889052915192909316936323b872dd9360648084019491939192918390030190829087803b156100005760325a03f11561000057505060405151151590506103cd57610000565b8192505b5b505b509392505050565b600060006103ff6103f16005546103e8610446565b6103fa85610240565b610472565b905061040b8482610472565b91505b5092915050565b60045481565b600254600160a060020a031681565b600082820161043b848210156104af565b8091505b5092915050565b600082820261043b841580610462575083858381156100005704145b6104af565b8091505b5092915050565b60006000610482600084116104af565b828481156100005704905061043b8385811561000057068285020185146104af565b8091505b5092915050565b8015156104bb57610000565b5b505600a165627a7a72305820b2311f26f7ed636c39772ef561acf573afdba07036340004d4f4e0d3806535d00029

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

000000000000000000000000cbcc0f036ed4788f63fc0fee32873d6a7487b908000000000000000000000000c890b1f532e674977dfdb791cafaee898dfa9671

-----Decoded View---------------
Arg [0] : tokenAddress (address): 0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908
Arg [1] : founderAddress (address): 0xC890B1f532e674977DFDb791caFaee898dFA9671

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cbcc0f036ed4788f63fc0fee32873d6a7487b908
Arg [1] : 000000000000000000000000c890b1f532e674977dfdb791cafaee898dfa9671


Swarm Source

bzzr://b2311f26f7ed636c39772ef561acf573afdba07036340004d4f4e0d3806535d0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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.