Sponsored:   LH-CRYPTO - 200 instruments (BTC, EUR, GOLD, OIL, SHARES). Leverage up to 1:500. OPEN ACCOUNT
Contract Overview | VeChain
Balance: 0 Ether
Ether Value: $0
Transactions: 417320 txns
Token Tracker: VeChain (VEN)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x5cd9f1c602ca78444142568958151027b1334d36at txn 0xb649f4a1585900faa4d44178e0c6994cce83e628a0ed31d9f699e2801d283916
Token Balance:
 Latest 25 transactions from a total of 417320 transactions
(+3 PendingTxns)

TxHash Age From To Value [TxFee]
0xcd24c64fd6632936eb135dcc5a0fd857de013da01c1b5ed98f7e26803e45b67c(pending)0xabe3149ff3ba046e0d904e9e7788006793d27a2b  IN  0xd850942ef8811f2a866692a623011bde52a462c10 Ether(Pending)
0xb4475ac9907beb515b06225b7bc75d4cd5d29cfa36559b59e96b359256c86020(pending)0x9e3a820317833b49991053e6f75750c2cf374c80  IN  0xd850942ef8811f2a866692a623011bde52a462c10 Ether(Pending)
0x0c7b720cc1af8c0b0a21acf7bc10241edc0378c627d70bbd0c374660d21dd318(pending)0x04cc707ab9e3463d8556afcce28947f980b16327  IN  0xd850942ef8811f2a866692a623011bde52a462c10 Ether(Pending)
0x8883a71409ae3930c79fe02a29a21e0c59db8ecf26d12a5290101e06cf2452a69 mins ago0x0fe7327dc05b6ea9b19ea971b07bb7b7800e7343  IN   VeChain0 Ether0.000217755
0xdb08a8c741bcadbc96d992639e4e3c07f8a0311c1b553019ed86a8336d7fbd2312 mins ago0xc5c8a0c531e0d90d57214776c6aa462c287ed214  IN   VeChain0 Ether0.00318168
0x6f610d885ab488ba6d9ea6edde0dd936cf3d5b91e32a0d0d428a69e5ad637ff321 mins ago0x3e6dc341a06df4e039eac6b50e573b1e65134e79  IN   VeChain0 Ether0.001601747
0xf04f8aa8c918d04402ee8e2ce0d359f9e5e35deddcf0de14cc229072bc99ee0624 mins ago0xd3a6d9a4d5222bc8594a87ddc498bb42bd64fd68  IN   VeChain0 Ether0.00119313
0xfe94f53e0d77f3929803be155078c9b384281723cee4bf96e483a6a7bb2eceb033 mins ago0x0fe7327dc05b6ea9b19ea971b07bb7b7800e7343  IN   VeChain0 Ether0.00052652925
0xbb8322bf26ff39b96476c8e98cf0f853cb1be4e39ef5a5f265bfd68841fca47a57 mins ago0xe1ffbf2c7127fcec3e835cb6b5f2ae265afab730  IN   VeChain0 Ether0.001451700049
0x66260f5dbdb415bc1bccf2ca316d9a403060573d262b917a9177f3e56eee877d1 hr 13 mins ago0xa719d883aa2d418e54b0aac1fd6effc689d97f67  IN   VeChain0 Ether0.001606995
0xac33b81a0debca587ff7dd618e0e23649d55ece25375f3b829edf59dc491b3ba1 hr 17 mins ago0xa719d883aa2d418e54b0aac1fd6effc689d97f67  IN   VeChain0 Ether0.001061203
0xf3f49be6cfb3a4fe884d5f527172637f35e7e6fa51f864315eae2bd46b0b09711 hr 24 mins ago0xa719d883aa2d418e54b0aac1fd6effc689d97f67  IN   VeChain0 Ether0.001599123
0xa2d39e85643bd34ab0eeae4c0f29af9c9a3195ba5b554b19a6831d58bf2903ea1 hr 43 mins ago0x6b566ec7270a75f2e8ca002688c633143659a725  IN   VeChain0 Ether0.001604371
0x227962440d93f5f167596552d485dac24a5c267357415db1051234223b72e8441 hr 50 mins ago0xa719d883aa2d418e54b0aac1fd6effc689d97f67  IN   VeChain0 Ether0.00108006
0x33a7da7c4bf8ae60aa254bce1eecd2fafc2ad91645f9ead0e5a6d50fe19c7f6f2 hrs 40 mins ago0x3fc8a72ce804836998835008634524c250b0f935  IN   VeChain0 Ether0.00270015
0x05302bd7652a430607cb36e93961e4c23043c455c6eb7cbbf7c9e4631b326ae22 hrs 40 mins ago0x558a5e63f0666ed9c8b1c3033cec94faf2cacc86  IN   VeChain0 Ether0.002214123
0xa35ab00d3c15a102e618de954e31bff08b984444177a7cdac4f9b2d8016d25f72 hrs 43 mins ago0x7707d247648867fc1b5f47c23f807e30939b1dce  IN   VeChain0 Ether0.00047802
0xb513d5bb1522de1e7b7dd1acaec6afd22bfe9fcb3d611de965baa98df9f04df02 hrs 51 mins ago0x558a5e63f0666ed9c8b1c3033cec94faf2cacc86  IN   VeChain0 Ether0.000922008
0x5f13bc902483e69dec42e839d69d368ec1935b86fb9104d22ec7757cf417bb312 hrs 57 mins ago0x558a5e63f0666ed9c8b1c3033cec94faf2cacc86  IN   VeChain0 Ether0.000922008
0xa4f5c91fcbb6b50236020091fc5184f749108e82d4a7e9f1b0ff9f64181961133 hrs 2 mins ago0x8b8a4d24359d9c32b8b2e60939c7e85356c5978e  IN   VeChain0 Ether0.00096524
0x05a0d66a09bb37fe6235595a231e64ffdf170061a46d6592555df63d7090c3c73 hrs 8 mins ago0x8b8a4d24359d9c32b8b2e60939c7e85356c5978e  IN   VeChain0 Ether0.00103276
0xd54b99963e1bad706acad335e46d4b146cbf4b4503eef7f0ef70272a44070b033 hrs 40 mins ago0x8b8a4d24359d9c32b8b2e60939c7e85356c5978e  IN   VeChain0 Ether0.00216012
0x21e1815a061f544eb3805a491f120ad48a0cc69c07f1d17ac37412a8b26220344 hrs 6 mins ago0xe659fe1c56787a155e979ef341551439759a9017  IN   VeChain0 Ether0.000989371
0x308754e8b485cdd6e5ebb8886ecaf3fc534870778200dfa2b3235bdacfda860a4 hrs 55 mins ago0x17c9351c2c29b93226c98b7997f52e89305d2800  IN   VeChain0 Ether0.002240363
0x39a59cfc06411e57d4c55bd27d3f879cb69d7b7b8c1bbb67aec86810f41e735e5 hrs 4 mins ago0x02a52378a6fa7e8a92203e3355fba45c06f73461  IN   VeChain0 Ether0.000994619
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Name: VEN
Compiler Text: v0.4.11+commit.68ef5810
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.11;

contract Owned {

    address public owner;

    function Owned() {
        owner = msg.sender;
    }

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

    function setOwner(address _newOwner) onlyOwner {
        owner = _newOwner;
    }
}

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

  function div(uint256 a, uint256 b) internal constant returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

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

  function toUINT112(uint256 a) internal constant returns(uint112) {
    assert(uint112(a) == a);
    return uint112(a);
  }

  function toUINT120(uint256 a) internal constant returns(uint120) {
    assert(uint120(a) == a);
    return uint120(a);
  }

  function toUINT128(uint256 a) internal constant returns(uint128) {
    assert(uint128(a) == a);
    return uint128(a);
  }
}


// Abstract contract for the full ERC 20 Token standard
// https://github.com/ethereum/EIPs/issues/20

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;
    function totalSupply() constant returns (uint256 supply);

    /// @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 `_addr` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of wei to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) 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);
}


/// VEN token, ERC20 compliant
contract VEN is Token, Owned {
    using SafeMath for uint256;

    string public constant name    = "VeChain Token";  //The Token's name
    uint8 public constant decimals = 18;               //Number of decimals of the smallest unit
    string public constant symbol  = "VEN";            //An identifier    

    // packed to 256bit to save gas usage.
    struct Supplies {
        // uint128's max value is about 3e38.
        // it's enough to present amount of tokens
        uint128 total;
        uint128 rawTokens;
    }

    Supplies supplies;

    // Packed to 256bit to save gas usage.    
    struct Account {
        // uint112's max value is about 5e33.
        // it's enough to present amount of tokens
        uint112 balance;

        // raw token can be transformed into balance with bonus        
        uint112 rawTokens;

        // safe to store timestamp
        uint32 lastMintedTimestamp;
    }

    // Balances for each account
    mapping(address => Account) accounts;

    // Owner of account approves the transfer of an amount to another account
    mapping(address => mapping(address => uint256)) allowed;

    // bonus that can be shared by raw tokens
    uint256 bonusOffered;

    // Constructor
    function VEN() {
    }

    function totalSupply() constant returns (uint256 supply){
        return supplies.total;
    }

    // Send back ether sent to me
    function () {
        revert();
    }

    // If sealed, transfer is enabled and mint is disabled
    function isSealed() constant returns (bool) {
        return owner == 0;
    }

    function lastMintedTimestamp(address _owner) constant returns(uint32) {
        return accounts[_owner].lastMintedTimestamp;
    }

    // Claim bonus by raw tokens
    function claimBonus(address _owner) internal{      
        require(isSealed());
        if (accounts[_owner].rawTokens != 0) {
            uint256 realBalance = balanceOf(_owner);
            uint256 bonus = realBalance
                .sub(accounts[_owner].balance)
                .sub(accounts[_owner].rawTokens);

            accounts[_owner].balance = realBalance.toUINT112();
            accounts[_owner].rawTokens = 0;
            if(bonus > 0){
                Transfer(this, _owner, bonus);
            }
        }
    }

    // What is the balance of a particular account?
    function balanceOf(address _owner) constant returns (uint256 balance) {
        if (accounts[_owner].rawTokens == 0)
            return accounts[_owner].balance;

        if (bonusOffered > 0) {
            uint256 bonus = bonusOffered
                 .mul(accounts[_owner].rawTokens)
                 .div(supplies.rawTokens);

            return bonus.add(accounts[_owner].balance)
                    .add(accounts[_owner].rawTokens);
        }
        
        return uint256(accounts[_owner].balance)
            .add(accounts[_owner].rawTokens);
    }

    // Transfer the balance from owner's account to another account
    function transfer(address _to, uint256 _amount) returns (bool success) {
        require(isSealed());

        // implicitly claim bonus for both sender and receiver
        claimBonus(msg.sender);
        claimBonus(_to);

        // according to VEN's total supply, never overflow here
        if (accounts[msg.sender].balance >= _amount
            && _amount > 0) {            
            accounts[msg.sender].balance -= uint112(_amount);
            accounts[_to].balance = _amount.add(accounts[_to].balance).toUINT112();
            Transfer(msg.sender, _to, _amount);
            return true;
        } else {
            return false;
        }
    }

    // Send _value amount of tokens from address _from to address _to
    // The transferFrom method is used for a withdraw workflow, allowing contracts to send
    // tokens on your behalf, for example to "deposit" to a contract address and/or to charge
    // fees in sub-currencies; the command should fail unless the _from account has
    // deliberately authorized the sender of the message via some mechanism; we propose
    // these standardized APIs for approval:
    function transferFrom(
        address _from,
        address _to,
        uint256 _amount
    ) returns (bool success) {
        require(isSealed());

        // implicitly claim bonus for both sender and receiver
        claimBonus(_from);
        claimBonus(_to);

        // according to VEN's total supply, never overflow here
        if (accounts[_from].balance >= _amount
            && allowed[_from][msg.sender] >= _amount
            && _amount > 0) {
            accounts[_from].balance -= uint112(_amount);
            allowed[_from][msg.sender] -= _amount;
            accounts[_to].balance = _amount.add(accounts[_to].balance).toUINT112();
            Transfer(_from, _to, _amount);
            return true;
        } else {
            return false;
        }
    }

    // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
    // If this function is called again it overwrites the current allowance with _value.
    function approve(address _spender, uint256 _amount) returns (bool success) {
        allowed[msg.sender][_spender] = _amount;
        Approval(msg.sender, _spender, _amount);
        return true;
    }

    /* Approves and then calls the receiving contract */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this.
        //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
        //it is assumed that when does this that the call *should* succeed, otherwise one would use vanilla approve instead.
        //if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { revert(); }
        ApprovalReceiver(_spender).receiveApproval(msg.sender, _value, this, _extraData);
        return true;
    }

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

    // Mint tokens and assign to some one
    function mint(address _owner, uint256 _amount, bool _isRaw, uint32 timestamp) onlyOwner{
        if (_isRaw) {
            accounts[_owner].rawTokens = _amount.add(accounts[_owner].rawTokens).toUINT112();
            supplies.rawTokens = _amount.add(supplies.rawTokens).toUINT128();
        } else {
            accounts[_owner].balance = _amount.add(accounts[_owner].balance).toUINT112();
        }

        accounts[_owner].lastMintedTimestamp = timestamp;

        supplies.total = _amount.add(supplies.total).toUINT128();
        Transfer(0, _owner, _amount);
    }
    
    // Offer bonus to raw tokens holder
    function offerBonus(uint256 _bonus) onlyOwner { 
        bonusOffered = bonusOffered.add(_bonus);
        supplies.total = _bonus.add(supplies.total).toUINT128();
        Transfer(0, this, _bonus);
    }

    // Set owner to zero address, to disable mint, and enable token transfer
    function seal() onlyOwner {
        setOwner(0);
    }
}

contract ApprovalReceiver {
    function receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData);
}


// Contract to sell and distribute VEN tokens
contract VENSale is Owned{

    /// chart of stage transition 
    ///
    /// deploy   initialize      startTime                            endTime                 finalize
    ///                              | <-earlyStageLasts-> |             | <- closedStageLasts -> |
    ///  O-----------O---------------O---------------------O-------------O------------------------O------------>
    ///     Created     Initialized           Early             Normal             Closed            Finalized
    enum Stage {
        NotCreated,
        Created,
        Initialized,
        Early,
        Normal,
        Closed,
        Finalized
    }

    using SafeMath for uint256;
    
    uint256 public constant totalSupply         = (10 ** 9) * (10 ** 18); // 1 billion VEN, decimals set to 18

    uint256 constant privateSupply              = totalSupply * 9 / 100;  // 9% for private ICO
    uint256 constant commercialPlan             = totalSupply * 23 / 100; // 23% for commercial plan
    uint256 constant reservedForTeam            = totalSupply * 5 / 100;  // 5% for team
    uint256 constant reservedForOperations      = totalSupply * 22 / 100; // 22 for operations

    // 59%
    uint256 public constant nonPublicSupply     = privateSupply + commercialPlan + reservedForTeam + reservedForOperations;
    // 41%
    uint256 public constant publicSupply = totalSupply - nonPublicSupply;


    uint256 public constant officialLimit = 64371825 * (10 ** 18);
    uint256 public constant channelsLimit = publicSupply - officialLimit;

    // packed to 256bit
    struct SoldOut {
        uint16 placeholder; // placeholder to make struct pre-alloced

        // amount of tokens officially sold out.
        // max value of 120bit is about 1e36, it's enough for token amount
        uint120 official; 

        uint120 channels; // amount of tokens sold out via channels
    }

    SoldOut soldOut;
    
    uint256 constant venPerEth = 3500;  // normal exchange rate
    uint256 constant venPerEthEarlyStage = venPerEth + venPerEth * 15 / 100;  // early stage has 15% reward

    uint constant minBuyInterval = 30 minutes; // each account can buy once in 30 minutes
    uint constant maxBuyEthAmount = 30 ether;
   
    VEN ven; // VEN token contract follows ERC20 standard

    address ethVault; // the account to keep received ether
    address venVault; // the account to keep non-public offered VEN tokens

    uint public constant startTime = 1503057600; // time to start sale
    uint public constant endTime = 1504180800;   // tiem to close sale
    uint public constant earlyStageLasts = 3 days; // early bird stage lasts in seconds

    bool initialized;
    bool finalized;

    function VENSale() {
        soldOut.placeholder = 1;
    }    

    /// @notice calculte exchange rate according to current stage
    /// @return exchange rate. zero if not in sale.
    function exchangeRate() constant returns (uint256){
        if (stage() == Stage.Early) {
            return venPerEthEarlyStage;
        }
        if (stage() == Stage.Normal) {
            return venPerEth;
        }
        return 0;
    }

    /// @notice for test purpose
    function blockTime() constant returns (uint32) {
        return uint32(block.timestamp);
    }

    /// @notice estimate stage
    /// @return current stage
    function stage() constant returns (Stage) { 
        if (finalized) {
            return Stage.Finalized;
        }

        if (!initialized) {
            // deployed but not initialized
            return Stage.Created;
        }

        if (blockTime() < startTime) {
            // not started yet
            return Stage.Initialized;
        }

        if (uint256(soldOut.official).add(soldOut.channels) >= publicSupply) {
            // all sold out
            return Stage.Closed;
        }

        if (blockTime() < endTime) {
            // in sale            
            if (blockTime() < startTime.add(earlyStageLasts)) {
                // early bird stage
                return Stage.Early;
            }
            // normal stage
            return Stage.Normal;
        }

        // closed
        return Stage.Closed;
    }

    function isContract(address _addr) constant internal returns(bool) {
        uint size;
        if (_addr == 0) return false;
        assembly {
            size := extcodesize(_addr)
        }
        return size > 0;
    }

    /// @notice entry to buy tokens
    function () payable {        
        buy();
    }

    /// @notice entry to buy tokens
    function buy() payable {
        // reject contract buyer to avoid breaking interval limit
        require(!isContract(msg.sender));
        require(msg.value >= 0.01 ether);

        uint256 rate = exchangeRate();
        // here don't need to check stage. rate is only valid when in sale
        require(rate > 0);
        // each account is allowed once in minBuyInterval
        require(blockTime() >= ven.lastMintedTimestamp(msg.sender) + minBuyInterval);

        uint256 requested;
        // and limited to maxBuyEthAmount
        if (msg.value > maxBuyEthAmount) {
            requested = maxBuyEthAmount.mul(rate);
        } else {
            requested = msg.value.mul(rate);
        }

        uint256 remained = officialLimit.sub(soldOut.official);
        if (requested > remained) {
            //exceed remained
            requested = remained;
        }

        uint256 ethCost = requested.div(rate);
        if (requested > 0) {
            ven.mint(msg.sender, requested, true, blockTime());
            // transfer ETH to vault
            ethVault.transfer(ethCost);

            soldOut.official = requested.add(soldOut.official).toUINT120();
            onSold(msg.sender, requested, ethCost);        
        }

        uint256 toReturn = msg.value.sub(ethCost);
        if(toReturn > 0) {
            // return over payed ETH
            msg.sender.transfer(toReturn);
        }        
    }

    /// @notice returns tokens sold officially
    function officialSold() constant returns (uint256) {
        return soldOut.official;
    }

    /// @notice returns tokens sold via channels
    function channelsSold() constant returns (uint256) {
        return soldOut.channels;
    } 

    /// @notice manually offer tokens to channel
    function offerToChannel(address _channelAccount, uint256 _venAmount) onlyOwner {
        Stage stg = stage();
        // since the settlement may be delayed, so it's allowed in closed stage
        require(stg == Stage.Early || stg == Stage.Normal || stg == Stage.Closed);

        soldOut.channels = _venAmount.add(soldOut.channels).toUINT120();

        //should not exceed limit
        require(soldOut.channels <= channelsLimit);

        ven.mint(
            _channelAccount,
            _venAmount,
            true,  // unsold tokens can be claimed by channels portion
            blockTime()
            );

        onSold(_channelAccount, _venAmount, 0);
    }

    /// @notice initialize to prepare for sale
    /// @param _ven The address VEN token contract following ERC20 standard
    /// @param _ethVault The place to store received ETH
    /// @param _venVault The place to store non-publicly supplied VEN tokens
    function initialize(
        VEN _ven,
        address _ethVault,
        address _venVault) onlyOwner {
        require(stage() == Stage.Created);

        // ownership of token contract should already be this
        require(_ven.owner() == address(this));

        require(address(_ethVault) != 0);
        require(address(_venVault) != 0);      

        ven = _ven;
        
        ethVault = _ethVault;
        venVault = _venVault;    
        
        ven.mint(
            venVault,
            reservedForTeam.add(reservedForOperations),
            false, // team and operations reserved portion can't share unsold tokens
            blockTime()
        );

        ven.mint(
            venVault,
            privateSupply.add(commercialPlan),
            true, // private ICO and commercial plan can share unsold tokens
            blockTime()
        );

        initialized = true;
        onInitialized();
    }

    /// @notice finalize
    function finalize() onlyOwner {
        // only after closed stage
        require(stage() == Stage.Closed);       

        uint256 unsold = publicSupply.sub(soldOut.official).sub(soldOut.channels);

        if (unsold > 0) {
            // unsold VEN as bonus
            ven.offerBonus(unsold);        
        }
        ven.seal();

        finalized = true;
        onFinalized();
    }

    event onInitialized();
    event onFinalized();

    event onSold(address indexed buyer, uint256 venAmount, uint256 ethCost);
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"seal","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_bonus","type":"uint256"}],"name":"offerBonus","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isSealed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"lastMintedTimestamp","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_isRaw","type":"bool"},{"name":"timestamp","type":"uint32"}],"name":"mint","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000c57fe5b5b5b60008054600160a060020a03191633600160a060020a03161790555b5b5b6111ab8061003b6000396000f300606060405236156100d55763ffffffff60e060020a60003504166306fdde0381146100eb578063095ea7b31461017b57806313af4035146101ae57806318160ddd146101cc57806323b872dd146101ee578063313ce567146102275780633fb27b851461024d578063534eb1d41461025f578063631f98521461027457806370a08231146102985780637ba49b81146102c65780638da5cb5b146102fb57806395d89b4114610327578063a9059cbb146103b7578063b5e73249146103ea578063cae9ca5114610419578063dd62ed3e14610490575b34156100dd57fe5b6100e95b60006000fd5b565b005b34156100f357fe5b6100fb6104c4565b604080516020808252835181830152835191928392908301918501908083838215610141575b80518252602083111561014157601f199092019160209182019101610121565b505050905090810190601f16801561016d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018357fe5b61019a600160a060020a03600435166024356104fb565b604080519115158252519081900360200190f35b34156101b657fe5b6100e9600160a060020a0360043516610566565b005b34156101d457fe5b6101dc6105af565b60408051918252519081900360200190f35b34156101f657fe5b61019a600160a060020a03600435811690602435166044356105bf565b604080519115158252519081900360200190f35b341561022f57fe5b610237610748565b6040805160ff9092168252519081900360200190f35b341561025557fe5b6100e961074d565b005b341561026757fe5b6100e9600435610777565b005b341561027c57fe5b61019a61082d565b604080519115158252519081900360200190f35b34156102a057fe5b6101dc600160a060020a036004351661083e565b60408051918252519081900360200190f35b34156102ce57fe5b6102e2600160a060020a03600435166109a6565b6040805163ffffffff9092168252519081900360200190f35b341561030357fe5b61030b6109d2565b60408051600160a060020a039092168252519081900360200190f35b341561032f57fe5b6100fb6109e1565b604080516020808252835181830152835191928392908301918501908083838215610141575b80518252602083111561014157601f199092019160209182019101610121565b505050905090810190601f16801561016d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103bf57fe5b61019a600160a060020a0360043516602435610a18565b604080519115158252519081900360200190f35b34156103f257fe5b6100e9600160a060020a0360043516602435604435151563ffffffff60643516610b56565b005b341561042157fe5b604080516020600460443581810135601f810184900484028501840190955284845261019a948235600160a060020a0316946024803595606494929391909201918190840183828082843750949650610dc095505050505050565b604080519115158252519081900360200190f35b341561049857fe5b6101dc600160a060020a0360043581169060243516610f2e565b60408051918252519081900360200190f35b60408051808201909152600d81527f5665436861696e20546f6b656e00000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60005433600160a060020a039081169116146105825760006000fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6001546001608060020a03165b90565b60006105c961082d565b15156105d55760006000fd5b6105de84610f5b565b6105e783610f5b565b600160a060020a0384166000908152600260205260409020546001607060020a03168290108015906106405750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b801561064c5750600082115b1561073c57600160a060020a03848116600090815260026020818152604080842080546dffffffffffffffffffffffffffff1981166001607060020a039182168a900382161790915560038352818520338716865283528185208054899003905594881684529190529020546106cd916106c8918591166110aa565b6110c4565b600160a060020a0384811660008181526002602090815260409182902080546dffffffffffffffffffffffffffff19166001607060020a0396909616959095179094558051868152905191939288169260008051602061116083398151915292918290030190a3506001610740565b5060005b5b9392505050565b601281565b60005433600160a060020a039081169116146107695760006000fd5b6100e76000610566565b5b5b565b60005433600160a060020a039081169116146107935760006000fd5b6004546107a6908263ffffffff6110aa16565b6004556001546107cf906107ca9083906001608060020a031663ffffffff6110aa16565b6110e0565b600180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408051828152905130600160a060020a031691600091600080516020611160833981519152916020908290030190a35b5b50565b600054600160a060020a0316155b90565b600160a060020a0381166000908152600260205260408120548190607060020a90046001607060020a0316151561089857600160a060020a0383166000908152600260205260409020546001607060020a031691506109a0565b6000600454111561096157600154600160a060020a03841660009081526002602052604090205460045461090a9270010000000000000000000000000000000090046001608060020a0316916108fe9190607060020a90046001607060020a03166110fc565b9063ffffffff61112b16565b600160a060020a03841660009081526002602052604090205490915061095a906001607060020a03607060020a820481169161094e9185911663ffffffff6110aa16565b9063ffffffff6110aa16565b91506109a0565b600160a060020a03831660009081526002602052604090205461099d906001607060020a0380821691607060020a90041663ffffffff6110aa16565b91505b50919050565b600160a060020a03811660009081526002602052604090205460e060020a900463ffffffff165b919050565b600054600160a060020a031681565b60408051808201909152600381527f56454e0000000000000000000000000000000000000000000000000000000000602082015281565b6000610a2261082d565b1515610a2e5760006000fd5b610a3733610f5b565b610a4083610f5b565b600160a060020a0333166000908152600260205260409020546001607060020a0316829010801590610a725750600082115b15610b475733600160a060020a0390811660009081526002602052604080822080546dffffffffffffffffffffffffffff1981166001607060020a039182168890038216179091559286168252902054610ad7916106c8918591166110aa565b6110c4565b600160a060020a0384811660008181526002602090815260409182902080546dffffffffffffffffffffffffffff19166001607060020a039690961695909517909455805186815290519193339093169260008051602061116083398151915292918290030190a3506001610560565b506000610560565b5b92915050565b60005433600160a060020a03908116911614610b725760006000fd5b8115610c7257600160a060020a038416600090815260026020526040902054610bb5906106c8908590607060020a90046001607060020a03166110aa565b6110c4565b600160a060020a038516600090815260026020526040902080546001607060020a0392909216607060020a027bffffffffffffffffffffffffffff000000000000000000000000000019909216919091179055600154610c43906107ca9085906001608060020a037001000000000000000000000000000000009091041663ffffffff6110aa16565b6110e0565b600180546001608060020a03928316700100000000000000000000000000000000029216919091179055610cec565b600160a060020a038416600090815260026020526040902054610cae906106c89085906001607060020a031663ffffffff6110aa16565b6110c4565b600160a060020a038516600090815260026020526040902080546dffffffffffffffffffffffffffff19166001607060020a03929092169190911790555b600160a060020a0384166000908152600260205260409020805463ffffffff80841660e060020a027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90921691909117909155600154610d5f916107ca9186916001608060020a03909116906110aa16565b6110e0565b600180546fffffffffffffffffffffffffffffffff19166001608060020a0392909216919091179055604080518481529051600160a060020a03861691600091600080516020611160833981519152916020908290030190a35b5b50505050565b600160a060020a03338116600081815260036020908152604080832094881680845294825280832087905580518781529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360008314610ec7575b805182526020831115610ec757601f199092019160209182019101610ea7565b505050905090810190601f168015610ef35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610f1157fe5b6102c65a03f11515610f1f57fe5b505050600190505b9392505050565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b60006000610f6761082d565b1515610f735760006000fd5b600160a060020a038316600090815260026020526040902054607060020a90046001607060020a0316156110a357610faa8361083e565b600160a060020a038416600090815260026020526040902054909250610ffa906001607060020a03607060020a8204811691610fee9186911663ffffffff61114816565b9063ffffffff61114816565b9050611005826110c4565b600160a060020a038416600090815260026020526040812080546dffffffffffffffffffffffffffff19166001607060020a0393909316929092177bffffffffffffffffffffffffffff000000000000000000000000000019169091558111156110a35782600160a060020a031630600160a060020a0316600080516020611160833981519152836040518082815260200191505060405180910390a35b5b5b505050565b6000828201838110156110b957fe5b8091505b5092915050565b60006001607060020a03821682146110d857fe5b50805b919050565b60006001608060020a03821682146110d857fe5b50805b919050565b6000828202831580611118575082848281151561111557fe5b04145b15156110b957fe5b8091505b5092915050565b60006000828481151561113a57fe5b0490508091505b5092915050565b60008282111561115457fe5b508082035b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820fa35cb6d9fd595f5020f436c343eb13b8bbbc3984f4c28bc7b89d36062d268a60029

   Swarm Source:
bzzr://fa35cb6d9fd595f5020f436c343eb13b8bbbc3984f4c28bc7b89d36062d268a6

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.