ETH Price: $3,402.47 (+1.71%)

Contract

0x459F7854776ED005B6Ec63a88F834fDAB0B6993e
 
Transaction Hash
Method
Block
From
To
Transfer53777702018-04-04 7:14:502460 days ago1522826090IN
0x459F7854...AB0B6993e
0.0001 ETH0.0041273441
Transfer50649962018-02-10 12:54:162513 days ago1518267256IN
0x459F7854...AB0B6993e
0 ETH0.0008734641
Transfer50649732018-02-10 12:50:152513 days ago1518267015IN
0x459F7854...AB0B6993e
0 ETH0.0008734641
Transfer50649662018-02-10 12:47:272513 days ago1518266847IN
0x459F7854...AB0B6993e
0 ETH0.0008734641
Transfer50649612018-02-10 12:46:282513 days ago1518266788IN
0x459F7854...AB0B6993e
0 ETH0.00086141
0x0000000050599842018-02-09 16:30:102514 days ago1518193810IN
0x459F7854...AB0B6993e
0.95 ETH0.0010521
Transfer*50145822018-02-02 1:36:132521 days ago1517535373IN
0x459F7854...AB0B6993e
0.0058375 ETH0.003937543.75
Transfer47783382017-12-22 19:27:152562 days ago1513970835IN
0x459F7854...AB0B6993e
0 ETH0.00050424
0x0000000043943452017-10-20 7:32:272626 days ago1508484747IN
0x459F7854...AB0B6993e
0.10889842 ETH0.0012275921
0x0000000043883832017-10-19 8:26:412627 days ago1508401601IN
0x459F7854...AB0B6993e
0.0459384 ETH0.0012275921
0x0000000043883512017-10-19 8:21:092627 days ago1508401269IN
0x459F7854...AB0B6993e
0.1 ETH0.0015425921
0x0000000043698132017-10-16 3:46:222630 days ago1508125582IN
0x459F7854...AB0B6993e
1.41 ETH0.00006591
0x0000000043659002017-10-14 19:43:412631 days ago1508010221IN
0x459F7854...AB0B6993e
0.2 ETH0.000293574
0x0000000043657762017-10-14 18:39:262631 days ago1508006366IN
0x459F7854...AB0B6993e
0.5 ETH0.000367285
0x0000000043642252017-10-14 5:41:202632 days ago1507959680IN
0x459F7854...AB0B6993e
0.5 ETH0.0012275921
0x0000000043640342017-10-14 4:08:462632 days ago1507954126IN
0x459F7854...AB0B6993e
0.5 ETH0.0015425921
0x0000000043622282017-10-13 12:57:452633 days ago1507899465IN
0x459F7854...AB0B6993e
0.125 ETH0.0012275921
0x0000000043610432017-10-13 3:23:552633 days ago1507865035IN
0x459F7854...AB0B6993e
1 ETH00.00000002
0x0000000043604312017-10-12 22:26:572633 days ago1507847217IN
0x459F7854...AB0B6993e
0.00801175 ETH0.0015425921
0x0000000043603962017-10-12 22:06:542633 days ago1507846014IN
0x459F7854...AB0B6993e
0.04 ETH00.00000002
0x0000000043600602017-10-12 19:20:552633 days ago1507836055IN
0x459F7854...AB0B6993e
0.39 ETH0.00073521
0x0000000043586652017-10-12 7:59:182634 days ago1507795158IN
0x459F7854...AB0B6993e
1.369 ETH0.000292285
0x3078303043586012017-10-12 7:29:182634 days ago1507793358IN
0x459F7854...AB0B6993e
0.259559 ETH00.00000002
0x0000000043586012017-10-12 7:29:182634 days ago1507793358IN
0x459F7854...AB0B6993e
0.16 ETH0.000073451
0x0000000043586012017-10-12 7:29:182634 days ago1507793358IN
0x459F7854...AB0B6993e
1.99 ETH0.000073391
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
53777702018-04-04 7:14:502460 days ago1522826090
0x459F7854...AB0B6993e
0.000099 ETH
53777702018-04-04 7:14:502460 days ago1522826090
0x459F7854...AB0B6993e
0.000001 ETH
50599842018-02-09 16:30:102514 days ago1518193810
0x459F7854...AB0B6993e
0.949998 ETH
50599842018-02-09 16:30:102514 days ago1518193810
0x459F7854...AB0B6993e
0.000002 ETH
50145822018-02-02 1:36:132521 days ago1517535373
0x459F7854...AB0B6993e
0.005835 ETH
50145822018-02-02 1:36:132521 days ago1517535373
0x459F7854...AB0B6993e
0.0000025 ETH
43943452017-10-20 7:32:272626 days ago1508484747
0x459F7854...AB0B6993e
0.108897 ETH
43943452017-10-20 7:32:272626 days ago1508484747
0x459F7854...AB0B6993e
0.00000142 ETH
43883832017-10-19 8:26:412627 days ago1508401601
0x459F7854...AB0B6993e
0.045936 ETH
43883832017-10-19 8:26:412627 days ago1508401601
0x459F7854...AB0B6993e
0.0000024 ETH
43883512017-10-19 8:21:092627 days ago1508401269
0x459F7854...AB0B6993e
0.099999 ETH
43883512017-10-19 8:21:092627 days ago1508401269
0x459F7854...AB0B6993e
0.000001 ETH
43698132017-10-16 3:46:222630 days ago1508125582
0x459F7854...AB0B6993e
1.41 ETH
43659002017-10-14 19:43:412631 days ago1508010221
0x459F7854...AB0B6993e
0.199998 ETH
43659002017-10-14 19:43:412631 days ago1508010221
0x459F7854...AB0B6993e
0.000002 ETH
43657762017-10-14 18:39:262631 days ago1508006366
0x459F7854...AB0B6993e
0.499998 ETH
43657762017-10-14 18:39:262631 days ago1508006366
0x459F7854...AB0B6993e
0.000002 ETH
43642252017-10-14 5:41:202632 days ago1507959680
0x459F7854...AB0B6993e
0.499998 ETH
43642252017-10-14 5:41:202632 days ago1507959680
0x459F7854...AB0B6993e
0.000002 ETH
43640342017-10-14 4:08:462632 days ago1507954126
0x459F7854...AB0B6993e
0.499998 ETH
43640342017-10-14 4:08:462632 days ago1507954126
0x459F7854...AB0B6993e
0.000002 ETH
43622282017-10-13 12:57:452633 days ago1507899465
0x459F7854...AB0B6993e
0.124998 ETH
43622282017-10-13 12:57:452633 days ago1507899465
0x459F7854...AB0B6993e
0.000002 ETH
43610432017-10-13 3:23:552633 days ago1507865035
0x459F7854...AB0B6993e
0.999999 ETH
43610432017-10-13 3:23:552633 days ago1507865035
0x459F7854...AB0B6993e
0.000001 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LATOPreICO

Compiler Version
v0.4.11-nightly.2017.5.3+commit.1aa0f77a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-07-10
*/

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

contract Token {
    /* This is a slight change to the ERC20 base standard.
    function totalSupply() constant returns (uint256 supply);
    is replaced with:
    uint256 public totalSupply;
    This automatically creates a getter function for the totalSupply.
    This is moved to the base contract since public getter functions are not
    currently recognised as an implementation of the matching abstract
    function by the compiler.
    */
    /// total amount of tokens
    uint256 public totalSupply;

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256 balance);

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) returns (bool success);

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) returns (bool success);

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens, after that function `receiveApproval`
    /// @notice will be called on `_spender` address
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @param _extraData Some data to pass in callback function
    /// @return Whether the approval was successful or not
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    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);
    event Burn(address indexed _from, uint256 _value);
}

contract StandardToken is Token {

    function transfer(address _to, uint256 _value) returns (bool success) {
        //Default assumes totalSupply can't be over max (2^256 - 1).
        //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
        //Replace the if with this one instead.
        //if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        if (balances[msg.sender] >= _value && _value > 0) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        } else { return false; }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        //same as above. Replace this line with the following if you want to protect against wrapping uints.
        //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0) {
            balances[_to] += _value;
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            Transfer(_from, _to, _value);
            return true;
        } else { return false; }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        string memory signature = "receiveApproval(address,uint256,address,bytes)";

        if (!_spender.call(bytes4(bytes32(sha3(signature))), msg.sender, _value, this, _extraData)) {
            throw;
        }

        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
}

contract LATPToken is StandardToken, SafeMath {

    /* Public variables of the token */

    address     public founder;
    address     public minter;

    string      public name             =       "LATO PreICO";
    uint8       public decimals         =       6;
    string      public symbol           =       "LATP";
    string      public version          =       "0.7.1";
    uint        public maxTotalSupply   =       100000 * 1000000;


    modifier onlyFounder() {
        if (msg.sender != founder) {
            throw;
        }
        _;
    }

    modifier onlyMinter() {
        if (msg.sender != minter) {
            throw;
        }
        _;
    }

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

    function burnTokens(address _for, uint tokenCount)
        external
        onlyMinter
        returns (bool)
    {
        if (tokenCount == 0) {
            return false;
        }

        if (sub(totalSupply, tokenCount) > totalSupply) {
            throw;
        }

        if (sub(balances[_for], tokenCount) > balances[_for]) {
            throw;
        }

        totalSupply = sub(totalSupply, tokenCount);
        balances[_for] = sub(balances[_for], tokenCount);
        Burn(_for, tokenCount);
        return true;
    }

    function changeMinter(address newAddress)
        public
        onlyFounder
        returns (bool)
    {   
        minter = newAddress;
    }

    function changeFounder(address newAddress)
        public
        onlyFounder
        returns (bool)
    {   
        founder = newAddress;
    }

    function () {
        throw;
    }

    function LATPToken() {
        founder = msg.sender;
        totalSupply = 0; // Update total supply
    }
}

contract LATOPreICO {

    /*
     * External contracts
     */
    LATPToken public latpToken = LATPToken(0x12826eACF16678A6Ab9772fB0751bca32F1F0F53);

    address public founder;

    uint256 public baseTokenPrice = 3 szabo; // 3 ETH per full token (with 10^6 for decimals)

    // participant address => value in Wei
    mapping (address => uint) public investments;

    event LATPTransaction(uint256 indexed transactionId, uint256 transactionValue, uint256 indexed timestamp);

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

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

    function fund()
        public
        minInvestment
        payable
        returns (uint)
    {
        uint tokenCount = msg.value / baseTokenPrice;
        uint investment = tokenCount * baseTokenPrice;

        if (msg.value > investment && !msg.sender.send(msg.value - investment)) {
            throw;
        }

        investments[msg.sender] += investment;
        if (!founder.send(investment)) {
            throw;
        }

        uint transactionId = 0;
        for (uint i = 0; i < 32; i++) {
            uint b = uint(msg.data[35 - i]);
            transactionId += b * 256**i;
        }
        LATPTransaction(transactionId, investment, now);

        return tokenCount;
    }

    function fundManually(address beneficiary, uint _tokenCount)
        external
        onlyFounder
        returns (uint)
    {
        uint investment = _tokenCount * baseTokenPrice;

        investments[beneficiary] += investment;
        
        if (!latpToken.issueTokens(beneficiary, _tokenCount)) {
            throw;
        }

        return _tokenCount;
    }

    function setTokenAddress(address _newTokenAddress)
        external
        onlyFounder
        returns (bool)
    {
        latpToken = LATPToken(_newTokenAddress);
        return true;
    }

    function changeBaseTokenPrice(uint valueInWei)
        external
        onlyFounder
        returns (bool)
    {
        baseTokenPrice = valueInWei;
        return true;
    }

    function LATOPreICO() {
        founder = msg.sender;
    }

    function () payable {
        fund();
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"baseTokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newTokenAddress","type":"address"}],"name":"setTokenAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"founder","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"latpToken","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"fund","outputs":[{"name":"","type":"uint256"}],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"_tokenCount","type":"uint256"}],"name":"fundManually","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"valueInWei","type":"uint256"}],"name":"changeBaseTokenPrice","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"},{"indexed":false,"name":"transactionValue","type":"uint256"},{"indexed":true,"name":"timestamp","type":"uint256"}],"name":"LATPTransaction","type":"event"}]

606060405260008054600160a060020a0319167312826eacf16678a6ab9772fb0751bca32f1f0f531790556502ba7def3000600255341561003c57fe5b5b60018054600160a060020a03191633600160a060020a03161790555b5b610518806100696000396000f3006060604052361561008b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631da93873811461009d57806326a4e8d2146100bf5780634d853ee5146100ef578063525125991461011b57806396b9886214610147578063b60d428814610175578063c44549801461018f578063f19a5810146101c0575b61009b5b6100976101e7565b505b565b005b34156100a557fe5b6100ad61035d565b60408051918252519081900360200190f35b34156100c757fe5b6100db600160a060020a0360043516610363565b604080519115158252519081900360200190f35b34156100f757fe5b6100ff6103b4565b60408051600160a060020a039092168252519081900360200190f35b341561012357fe5b6100ff6103c3565b60408051600160a060020a039092168252519081900360200190f35b341561014f57fe5b6100ad600160a060020a03600435166103d2565b60408051918252519081900360200190f35b6100ad6101e7565b60408051918252519081900360200190f35b341561019757fe5b6100ad600160a060020a03600435166024356103e4565b60408051918252519081900360200190f35b34156101c857fe5b6100db6004356104be565b604080519115158252519081900360200190f35b6000600060006000600060006002543410156102035760006000fd5b6002543481151561021057fe5b04945060025485029350833411801561024d5750604051600160a060020a033316903486900380156108fc02916000818181858888f19350505050155b156102585760006000fd5b600160a060020a03338116600090815260036020526040808220805488019055600154905192169186156108fc0291879190818181858888f1935050505015156102a25760006000fd5b60009250600091505b60208210156103195760003660238490038181106102c557fe5b905090013560f860020a900460f860020a027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660f860020a90049050816101000a8102830192505b6001909101906102ab565b604080518581529051429185917f69f4aefca060d81fe292237cda067ee7da200cdbbae0af1728469bc52887deda9181900360200190a38495505b5b505050505090565b60025481565b60015460009033600160a060020a039081169116146103825760006000fd5b506000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b5b919050565b600154600160a060020a031681565b600054600160a060020a031681565b60036020526000908152604090205481565b600154600090819033600160a060020a039081169116146104055760006000fd5b50600254600160a060020a0380851660008181526003602090815260408083208054968902968701905582548151830184905281517f475a9fa9000000000000000000000000000000000000000000000000000000008152600481019590955260248501899052905194169363475a9fa993604480820194918390030190829087803b151561049057fe5b6102c65a03f1151561049e57fe5b505060405151151590506104b25760006000fd5b8291505b5b5092915050565b60015460009033600160a060020a039081169116146104dd5760006000fd5b50600281905560015b5b9190505600a165627a7a72305820be0fd896f405f9fc7e50265ba408381de0773dbbf18c622ee9d80af2bdf933aa0029

Deployed Bytecode

0x6060604052361561008b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631da93873811461009d57806326a4e8d2146100bf5780634d853ee5146100ef578063525125991461011b57806396b9886214610147578063b60d428814610175578063c44549801461018f578063f19a5810146101c0575b61009b5b6100976101e7565b505b565b005b34156100a557fe5b6100ad61035d565b60408051918252519081900360200190f35b34156100c757fe5b6100db600160a060020a0360043516610363565b604080519115158252519081900360200190f35b34156100f757fe5b6100ff6103b4565b60408051600160a060020a039092168252519081900360200190f35b341561012357fe5b6100ff6103c3565b60408051600160a060020a039092168252519081900360200190f35b341561014f57fe5b6100ad600160a060020a03600435166103d2565b60408051918252519081900360200190f35b6100ad6101e7565b60408051918252519081900360200190f35b341561019757fe5b6100ad600160a060020a03600435166024356103e4565b60408051918252519081900360200190f35b34156101c857fe5b6100db6004356104be565b604080519115158252519081900360200190f35b6000600060006000600060006002543410156102035760006000fd5b6002543481151561021057fe5b04945060025485029350833411801561024d5750604051600160a060020a033316903486900380156108fc02916000818181858888f19350505050155b156102585760006000fd5b600160a060020a03338116600090815260036020526040808220805488019055600154905192169186156108fc0291879190818181858888f1935050505015156102a25760006000fd5b60009250600091505b60208210156103195760003660238490038181106102c557fe5b905090013560f860020a900460f860020a027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660f860020a90049050816101000a8102830192505b6001909101906102ab565b604080518581529051429185917f69f4aefca060d81fe292237cda067ee7da200cdbbae0af1728469bc52887deda9181900360200190a38495505b5b505050505090565b60025481565b60015460009033600160a060020a039081169116146103825760006000fd5b506000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b5b919050565b600154600160a060020a031681565b600054600160a060020a031681565b60036020526000908152604090205481565b600154600090819033600160a060020a039081169116146104055760006000fd5b50600254600160a060020a0380851660008181526003602090815260408083208054968902968701905582548151830184905281517f475a9fa9000000000000000000000000000000000000000000000000000000008152600481019590955260248501899052905194169363475a9fa993604480820194918390030190829087803b151561049057fe5b6102c65a03f1151561049e57fe5b505060405151151590506104b25760006000fd5b8291505b5b5092915050565b60015460009033600160a060020a039081169116146104dd5760006000fd5b50600281905560015b5b9190505600a165627a7a72305820be0fd896f405f9fc7e50265ba408381de0773dbbf18c622ee9d80af2bdf933aa0029

Swarm Source

bzzr://be0fd896f405f9fc7e50265ba408381de0773dbbf18c622ee9d80af2bdf933aa

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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