Sponsored Link:   Qravity - the only blockchain entertainment production studio and distributor. Learn more.
Contract Overview | VeChainToken
Balance: 0 Ether
Ether Value: $0
Transactions: 296690 txns
Token Contract: VeChain (VEN)
Misc
Address Watch: Add To Watch List
Contract Creator: 0x5cd9f1c602ca78444142568958151027b1334d36at txn 0xb649f4a1585900faa4d44178e0c6994cce83e628a0ed31d9f699e2801d283916
Token Balances:
 Latest 25 txns from a total Of 296690 transactions (+3 PendingTxns)
View All

TxHash Age From To Value [TxFee]
0x20af867713b0cd319ff1a8338c928c61274b214ebf23234a8062de5d9f8cd6a8(pending)0xa5861d5987c87c8189da95b65684fd1d5bb8fc3c  IN  0xd850942ef8811f2a866692a623011bde52a462c10 Ether(pending)
0x708ea44a901b90b2a04e9dfac3e0e80b7d82a2bdf3dd1d4fb92dc69ca828805e(pending)0xab5c66752a9e8167967685f1450532fb96d5d24f  IN  0xd850942ef8811f2a866692a623011bde52a462c10 Ether(pending)
0x48b4877272e044a8aa9173b840dee95d6555d4236fe751dab077926cbc0006b8(pending)0x6bbabb952425d85fc7f7e025dfc54b72cdac6778  IN  0xd850942ef8811f2a866692a623011bde52a462c10 Ether(pending)
0x9bc2f5685d2820b2b987c53852f5319fffa8d883825bf3a3e81c7f2cfdc2dd2c2 mins ago0x5dee2b1ce7d17f196c6a04dac0d74c21017da9d8  IN   VeChainToken0 Ether0.000086644226
0x75af9583b2cf19305416ed96cacfac67bd02a3250187545c35fb055c46b6ae9a3 mins agoBinanceWallet_1  IN   VeChainToken0 Ether0.002031585
0x783f54ba311b2b7756f9e86fff5d712fb47f6308ec148b0ad350f25742ea229f8 mins agoBinanceWallet_2  IN   VeChainToken0 Ether0.002793321
0xfa9f2b7981e65775bf7ff9db21986e08d40c983fb2b4207cd8f742dda6c3faef10 mins agoBinanceWallet_1  IN   VeChainToken0 Ether0.002028321
0xd826865fc5677a2444eae70f74becd7a7d8ada05d853b11d023e9f2e55ca9ffa12 mins ago0x0593a67f29a5f408f74d8d80a270349d2b3da591  IN   VeChainToken0 Ether0.00049542
0x45f86b9b4bed0285ccb35eff0a5523e618f0cc848e1f70cc554054bb7b7bf1b818 mins ago0x42f599dbedf6f947b2d24e6a723ac4571c7a18b6  IN   VeChainToken0 Ether0.001015611
0x56b1cffb57acf968e8dc8036a92538dfd6414bd7e9a0b757f73dd3625cfeb86a21 mins ago0x42f599dbedf6f947b2d24e6a723ac4571c7a18b6  IN   VeChainToken0 Ether0.001630611
0x9bb7a20a9a3a856da47b415979f24d10d9584fab1f7b93dd52872f284f2d24fc23 mins agoBinanceWallet_3  IN   VeChainToken0 Ether0.002031585
0x71f8418e7dde1f352708040749f1d3465775e84d4763efdc92b869fd9024a9ef24 mins agoBinanceWallet_2  IN   VeChainToken0 Ether0.002021793
0x05850b8eaf6db900ac1632669f8f8babd583b51b28050e773d54af131c5efbe531 mins agoBinanceWallet  IN   VeChainToken0 Ether0.002796585
0x9c350b4b291979194fbcf1e88316a769772938a9c503f64f142b8961f98f106731 mins agoBinanceWallet_2  IN   VeChainToken0 Ether0.002793321
0xc636df7bb714852ce1d18f76b914ead7fbba1a525a8379ea01ba108e3f8029a234 mins agoBinanceWallet  IN   VeChainToken0 Ether0.002796585
0xb90b2a8dbf18b30f4adbbeb726cc3491d8a0bc9ef4a069c937cf1f8070fe48c335 mins ago0xf6846349cd0c1dfbe38d91d508c9c6400b531a4e  IN   VeChainToken0 Ether0.001623187085
0xbbd148ecbbaf417c481ba39aa813cbc057c7fba261189374c87a1a846d06772f37 mins ago0xfebe630e75cf856e9b2fcb90761a9d860c3feb09  IN   VeChainToken0 Ether0.001633235
0xf6576421916b2590be0dd60bc71c74c094a92fc7fb5bd947d903a4c459ca4c3041 mins ago0xf6846349cd0c1dfbe38d91d508c9c6400b531a4e  IN   VeChainToken0 Ether0.001248340629
0xa3e9a7a7faa6a175bf1f6448a0a25a99132a405fd6aaa4abccbad7cd53ae013d45 mins agoBinanceWallet_1  IN   VeChainToken0 Ether0.002028321
0x98b8a4784eaaefd98b5b75bf27e9407121f460f08f89c991049bc9c9709155e746 mins ago0x89b7d1853b6b387e935145485c5d8b06fe7da587  IN   VeChainToken0 Ether0.000438168
0x0bd101602f1781ce4507057c4aff41b1418cd908413cf2eabd2026c3a03d935147 mins ago0x95b564f3b3bae3f206aa418667ba000afafacc8a  IN   VeChainToken0 Ether0.000164505
0x7cdf9e64c57c0a0b047c3f4b8df4466a1c8967a2da2ef2cfee4a5c0d5c3c764a59 mins ago0x91bd586316bd0110b69033e7442c5dc7fa68576c  IN   VeChainToken0 Ether0.001633235
0x893361a79c78b02d0baa7af50af4ed9bf53016e64e9819e811a1a5bcf6d2f2d21 hr 2 mins ago0x1ce77f48ec11f42fb3f99c5af9e17be0fa22e753  IN   VeChainToken0 Ether0.00049542
0x6392aa82fbe371c3b56bd4a06efad328db596a67a4f3a6305506508204ef0be91 hr 4 mins ago0xc8477a24fe5b3f56b8ae87ea9452dad8b533091e  IN   VeChainToken0 Ether0.001232901
0xdfb67ef1e9f4c2cb5b2b2945312a5ba398671df35ebddb9923b82f4c399a38621 hr 6 mins ago0xc8477a24fe5b3f56b8ae87ea9452dad8b533091e  IN   VeChainToken0 Ether0.0018
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: VEN
Compiler Version: 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 txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.