Contract Overview
Balance: 0 Ether
Transactions: 18 txns
 Latest 18 txns


TxHash Age From To Value [TxFee]
0x3bb920b3e482e38a2510ee4f730cca671add6643c576719cf02946d99fb30cc0128 days 19 hrs ago0x8a2b4d371173382900cd8ef5897a4ec1dc362d2b  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.00076654
0x0f93022c11693341ef5548c410c45c0309fb9afc5f469d0a6a3e7ee0c07f8cc1128 days 19 hrs ago0x8a2b4d371173382900cd8ef5897a4ec1dc362d2b  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.003867642
0x8128840b744c415abda60b3bb2cac1d695fe9122535d287396c7617f7a81cda1128 days 19 hrs ago0x8a2b4d371173382900cd8ef5897a4ec1dc362d2b  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000767448
0x54c4ef1cb57a89bb0277493b322fbfe271f943a37c058b6ee9a0dd574c2cbeb9128 days 19 hrs ago0x8a2b4d371173382900cd8ef5897a4ec1dc362d2b  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.004948218
0x5938ee7a5430f09e57af66048ea77d7f35675e55f8001ccc3c29b6a87545d65f128 days 19 hrs ago0x9b143b8c9defa31f654a8bb256e52b2462387c31  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000087334
0xeaf56b5f599b1b1a8af3a1e90d40e8cfa17d552fa3a53638604db9b377a8c110128 days 19 hrs ago0xbd5f5dcd095dbf56c5af8e38ceaec455090748b4  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000293591
0xc72b378dfb8bc5b02913d99de21836c4302bbdc5bc1584b693b3b9a5fb9a0730128 days 19 hrs ago0xbd5f5dcd095dbf56c5af8e38ceaec455090748b4  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000293591
0x7d3a8cfe5e2127a8f3c557156e01081f654702087b13074a8d0590bdea9a1924129 days 10 hrs ago0xbd5f5dcd095dbf56c5af8e38ceaec455090748b4  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000095968
0xf8371fd3445bf8c40128db4b8c4d317a0428ab3dde2a77d65df833954385c079129 days 10 hrs ago0x9b143b8c9defa31f654a8bb256e52b2462387c31  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000293591
0x24796ae2a2b108f33ba687dd40178f5ba6bd795b7b15341509f2d59751899d51129 days 10 hrs ago0x9b143b8c9defa31f654a8bb256e52b2462387c31  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000359211
0x044b4126f448cb07fabefd6d5772e2fbe7bb0fd1a736d0da9e1f950d3c41ca71129 days 10 hrs ago0x9b143b8c9defa31f654a8bb256e52b2462387c31  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000084151
0x516438daf5fa29068632c1726e9b44d7639406c6a21fabf7732c75a0c710163b129 days 10 hrs ago0x9b143b8c9defa31f654a8bb256e52b2462387c31  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.00008309
0x32bdd0ba8bce2d80b15f543b75d3b3c826b86823b98df20ce01bc3a1687bf4b1129 days 10 hrs ago0x9b143b8c9defa31f654a8bb256e52b2462387c31  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000097029
0x5f0f4ae86f54addef05c9957c8711cc96851a6762574e3d0f5b2d920369e4b07129 days 10 hrs ago0x84228beb890f3e316453a635f72fb11c24af67f4  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000293591
0x4ebd80e30ca9f7d8204a9d39424e0f74df9e1180b860ae70d247335611f61321129 days 10 hrs ago0x84228beb890f3e316453a635f72fb11c24af67f4  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000293591
0xf92618f867e20afbf74bb1590e264797d9631ba13075739f0c9285abf15ef366129 days 10 hrs ago0x84228beb890f3e316453a635f72fb11c24af67f4  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000353591
0xa987278037ef14103bd4aa595b5320df27e76c5888dfc2568505fae79f024d52129 days 10 hrs ago0x84228beb890f3e316453a635f72fb11c24af67f4  IN   0xd889a6d9385a2796bf4e5f594ef9b0a0beb1d97d0 Ether0.000180235
0x3bb2fd2fa8fe3b689f72071d9b543f726b3b7be226b18686f79129bfcbb12db9129 days 11 hrs ago0x8a2b4d371173382900cd8ef5897a4ec1dc362d2b  IN    Contract Creation0 Ether0.091577325
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact match)
Contract Name: Mail
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.6;

/**
 * @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;
  }
}

contract Owned {

    // The address of the account that is the current owner
    address public owner;

    // Contract which manage issuing of new tokens (airdrop and referral tokens) 
    address public issuer;

    // The publiser is the inital owner
    function Owned() {
        owner = msg.sender;
    }

    /**
     * Restricted access to the current owner
     */
    modifier onlyOwner() {
        if (msg.sender != owner) throw;
        _;
    }

    /**
     * Restricted access to the issuer and owner
     */
    modifier onlyIssuer() {
        if (msg.sender != owner && msg.sender != issuer) throw;
        _;
    }

    /**
     * Transfer ownership to `_newOwner`
     *
     * @param _newOwner The address of the account that will become the new owner
     */
    function transferOwnership(address _newOwner) onlyOwner {
        owner = _newOwner;
    }
}

// Abstract contract for the full ERC 20 Token standard
// https://github.com/ethereum/EIPs/issues/20
contract Token {
    /// 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);

    /// @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);
}

/**
 * @title Mail token
 *
 * Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20 with the addition
 * of ownership, a lock and issuing.
 *
 */
contract Mail is Owned, Token {

    using SafeMath for uint256;

    // Ethereum token standaard
    string public standard = "Token 0.2";

    // Full name
    string public name = "Ethereum Mail";

    // Symbol
    string public symbol = "MAIL";

    // No decimal points
    uint8 public decimals = 0;
    
    // Percentage of sent tokens that will be charged for invalidating mail
    uint256 public feeForInvalidating = 0; // In 0.1 %
    
    // Token distribution
    uint256 public freeToUseTokens = 10 * 10 ** 6; // 10 million tokens are free to use
    uint256 public airdropTokens = 200 * 10 ** 6; // 200 million tokens for airdrops
    uint256 public airdropHoldersTokens = 240 * 10 ** 6; // 240 million tokens for airdrops on token holders
    uint256 public referralTokens = 400 * 10 ** 6; // 400 million tokens for referral program
    uint256 public ownerTokens = 150 * 10 ** 6; // 150 million tokens for development, promotion and partnerships

    // List of available tokens for attachment
    mapping (bytes32 => Token) public tokens;
    
    // No decimal points
    uint256 public maxTotalSupply = 10 ** 9; // 1 billion

    // Token starts if the locked state restricting transfers
    bool public locked;

    mapping (address => uint256) public balances;
    mapping (address => uint256) public usableBalances;
    mapping (address => mapping (address => uint256)) public allowed;
    
    uint256 public currentMessageNumber;
    
    struct Message {
        bytes32 content;
        uint256 weight;
        uint256 validUntil;
        uint256 time;
        bytes32 attachmentSymbol;
        uint256 attachmentValue;
        address from;
        address[] to;
        address[] read;
    }
    
    mapping (uint256 => Message) messages;
    
    struct UnreadMessage {
        uint256 id;
        bool isOpened;
        bool free;
        address from;
        uint256 time;
        uint256 weight;
    }
    
    mapping (address => UnreadMessage[]) public unreadMessages;
    mapping (address => uint256) public unreadMessageCount;
    uint[] indexesUnread;
    uint[] indexesRead;
    mapping (address => uint256) public lastReceivedMessage;

    /**
     * Set up issuer
     *
     * @param _issuer The address of the account that will become the new issuer
     */
    function setIssuer(address _issuer) onlyOwner {
        issuer = _issuer;
    }
    
    /**
     * Unlocks the token irreversibly so that the transfering of value is enabled
     *
     * @return Whether the unlocking was successful or not
     */
    function unlock() onlyOwner returns (bool success)  {
        locked = false;
        return true;
    }
    
    /**
     * Everyone can call this function to invalidate mail if its validation time is already in past  
     *
     * @param _number Number od unread messages
     */
    function invalidateMail(uint256 _number) {
        if (messages[_number].validUntil >= now) {
            throw;
        }
        
        if (messages[_number].attachmentSymbol.length != 0x0 && messages[_number].attachmentValue > 0) {
            Token token = tokens[messages[_number].attachmentSymbol];
            token.transfer(messages[_number].from, messages[_number].attachmentValue * (messages[_number].to.length - messages[_number].read.length) / messages[_number].to.length);
        }
        
        uint256 i = 0;
        while (i < messages[_number].to.length) {
            address recipient = messages[_number].to[i];

            for (uint a = 0; a < unreadMessages[recipient].length; ++a) {
                if (unreadMessages[recipient][a].id == _number) {

                    if (!unreadMessages[recipient][a].isOpened) {
                        unreadMessages[recipient][a].weight = 0;
                        unreadMessages[recipient][a].time = 0;

                        uint256 value = messages[_number].weight / messages[_number].to.length;

                        unreadMessageCount[recipient]--;
                        balances[recipient] -= value;

                        if (!unreadMessages[recipient][a].free) {
                            usableBalances[messages[_number].from] += value;
                            balances[messages[_number].from] += value;
                        }
                    }

                    break;
                }
            }
            
            i++;
        }
    }
    
    /**
     * Returns number of unread messages for specific user
     *
     * @param _userAddress Address of user
     * @return Number od unread messages
     */
    function getUnreadMessageCount(address _userAddress) constant returns (uint256 count)  {
        uint256 unreadCount;
        for (uint i = 0; i < unreadMessageCount[_userAddress]; ++i) {
            if (unreadMessages[_userAddress][i].isOpened == false) {
                unreadCount++;    
            }
        }
        
        return unreadCount;
    }
    

    /**
     * Returns unread messages for current user
     * 
     * @param _userAddress Address of user
     * @return Unread messages as array of message numbers
     */
    function getUnreadMessages(address _userAddress) constant returns (uint[] mmessages)  {
        for (uint i = 0; i < unreadMessageCount[_userAddress]; ++i) {
            if (unreadMessages[_userAddress][i].isOpened == false) {
                indexesUnread.push(unreadMessages[_userAddress][i].id);
            }
        }
        
        return indexesUnread;
    }


    function getUnreadMessagesArrayContent(uint256 _number) public constant returns(uint256, bool, address, uint256, uint256) {
        for (uint a = 0; a < unreadMessageCount[msg.sender]; ++a) {
            if (unreadMessages[msg.sender][a].id == _number) {
                return (unreadMessages[msg.sender][a].id,unreadMessages[msg.sender][a].isOpened,unreadMessages[msg.sender][a].from, unreadMessages[msg.sender][a].time,unreadMessages[msg.sender][a].weight);
            }
        }
    }

    /**
     * Returns read messages for current user
     * 
     * @param _userAddress Address of user
     * @return Read messages as array of message numbers
     */
    function getReadMessages(address _userAddress) constant returns (uint[] mmessages)  {        
        for (uint i = 0; i < unreadMessageCount[_userAddress]; ++i) {
            if (unreadMessages[_userAddress][i].isOpened == true) {
                indexesRead.push(unreadMessages[_userAddress][i].id);
            }
        }
        
        return indexesRead;
    }
    
    /**
     * Add token which will can be used as attachment
     * 
     * @param _tokenAddress Address of token contract
     * @param _symbol Symbol of token
     * @return If action was successful
     */
    function addToken(address _tokenAddress, bytes32 _symbol) onlyOwner returns (bool success)  {
        Token token = Token(_tokenAddress);
        tokens[_symbol] = token;
        
        return true;
    }

    /**
     * Locks the token irreversibly so that the transfering of value is not enabled
     *
     * @return Whether the locking was successful or not
     */
    function lock() onlyOwner returns (bool success)  {
        locked = true;
        return true;
    }
    
    /**
     * Restricted access to the current owner
     */
    modifier onlyOwner() {
        if (msg.sender != owner) throw;
        _;
    }
    
    /**
     * Get balance of `_owner`
     *
     * @param _owner The address from which the balance will be retrieved
     * @return The balance
     */
    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }
    
    /**
     * Prevents accidental sending of ether
     */
    function () {
        throw;
    }

    /**
     * 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) {

        // Unable to transfer while still locked
        if (locked) {
            throw;
        }

        // Check if the sender has enough tokens
        if (balances[msg.sender] < _value || usableBalances[msg.sender] < _value) {
            throw;
        }

        // Check for overflows
        if (balances[_to] + _value < balances[_to])  {
            throw;
        }

        // Transfer tokens
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        
        usableBalances[msg.sender] -= _value;
        usableBalances[_to] += _value;

        // Notify listners
        Transfer(msg.sender, _to, _value);

        return true;
    }

    /**
     * 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) {

         // Unable to transfer while still locked
        if (locked) {
            throw;
        }

        // Check if the sender has enough
        if (balances[_from] < _value || usableBalances[_from] < _value) {
            throw;
        }

        // Check for overflows
        if (balances[_to] + _value < balances[_to]) {
            throw;
        }

        // Check allowance
        if (_value > allowed[_from][msg.sender]) {
            throw;
        }

        // Transfer tokens
        balances[_to] += _value;
        balances[_from] -= _value;
        
        usableBalances[_from] -= _value;
        usableBalances[_to] += _value;

        // Update allowance
        allowed[_from][msg.sender] -= _value;

        // Notify listners
        Transfer(_from, _to, _value);
        
        return true;
    }

    /**
     * `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) {

        // Unable to approve while still locked
        if (locked) {
            throw;
        }

        // Update allowance
        allowed[msg.sender][_spender] = _value;

        // Notify listners
        Approval(msg.sender, _spender, _value);
        return true;
    }


    /**
     * Get the amount of remaining tokens that `_spender` is allowed to spend from `_owner`
     *
     * @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) {
      return allowed[_owner][_spender];
    }

    /**
     * Sends an mail to the specific list of recipients with amount of MAIL tokens to spend on them, hash message, time unti when is 
     * message available and tokens
     *
     * @param _to List of recipients
     * @param _weight Tokens to be spent on messages
     * @param _hashedMessage Hashed content of mail
     * @param _validUntil Mail is available until this specific time when will be returned to sender
     * @param _attachmentToken Name of attached token
     * @param _attachmentAmount Amount of attached token
     */
    function sendMail(address[] _to, uint256 _weight, bytes32 _hashedMessage, uint256 _validUntil, bytes32 _attachmentToken, uint256 _attachmentAmount) {
        bool useFreeTokens = false;
        if (_weight == 0 && freeToUseTokens > 0) {
            _weight = _to.length;
            useFreeTokens = true;
        }

        if ((!useFreeTokens && usableBalances[msg.sender] < _weight) || _weight < _to.length) {
            throw;
        }
        
        messages[currentMessageNumber].content = _hashedMessage;
        messages[currentMessageNumber].validUntil = _validUntil;
        messages[currentMessageNumber].time = now;
        messages[currentMessageNumber].from = msg.sender;
        messages[currentMessageNumber].to = _to;
        
        if (_attachmentToken != "") {
            Token token = tokens[_attachmentToken];
            
            if (!token.transferFrom(msg.sender, address(this), _attachmentAmount)) {
                throw;
            }
            
            messages[currentMessageNumber].attachmentSymbol = _attachmentToken;
            messages[currentMessageNumber].attachmentValue = _attachmentAmount;
        }
        
        UnreadMessage memory currentUnreadMessage;
        currentUnreadMessage.id = currentMessageNumber;
        currentUnreadMessage.isOpened = false;
        currentUnreadMessage.from = msg.sender;
        currentUnreadMessage.time = now;
        currentUnreadMessage.weight = _weight;
        currentUnreadMessage.free = useFreeTokens;

        uint256 i = 0;
        uint256 duplicateWeight = 0;
        
        while (i < _to.length) {
            if (lastReceivedMessage[_to[i]] == currentMessageNumber) {
                i += 1;
                duplicateWeight += _weight / _to.length;
                continue;
            }

            lastReceivedMessage[_to[i]] = currentMessageNumber;
        
            unreadMessages[_to[i]].push(currentUnreadMessage);
        
            unreadMessageCount[_to[i]]++;
            balances[_to[i]] += _weight / _to.length;
            i += 1;
        }
        
        if (useFreeTokens) {
            freeToUseTokens -= _weight - duplicateWeight;
        } else {
            usableBalances[msg.sender] -= _weight - duplicateWeight;
            balances[msg.sender] -= _weight - duplicateWeight;
        }  

        messages[currentMessageNumber].weight = _weight - duplicateWeight;  

        currentMessageNumber++;
    }
    
    function getUnreadMessage(uint256 _number) constant returns (UnreadMessage unread) {
        for (uint a = 0; a < unreadMessages[msg.sender].length; ++a) {
            if (unreadMessages[msg.sender][a].id == _number) {
                return unreadMessages[msg.sender][a];
            }
        }
    }
    
    /**
     * Open specific mail for current user who receives MAIL tokens and tokens attached to mail 
     *
     * @param _number Number of message recipient is trying to open
     * @return Success of opeining mail
     */
    function openMail(uint256 _number) returns (bool success) {
        UnreadMessage memory currentUnreadMessage = getUnreadMessage(_number);

        // throw error if it is already opened or invalidate 
        if (currentUnreadMessage.isOpened || currentUnreadMessage.weight == 0) {
            throw;
        }
        
        if (messages[_number].attachmentSymbol != 0x0 && messages[_number].attachmentValue > 0) {
            Token token = tokens[messages[_number].attachmentSymbol];
            token.transfer(msg.sender, messages[_number].attachmentValue / messages[_number].to.length);
        }
        
        for (uint a = 0; a < unreadMessages[msg.sender].length; ++a) {
            if (unreadMessages[msg.sender][a].id == _number) {
                unreadMessages[msg.sender][a].isOpened = true;
            }
        }
        
        messages[_number].read.push(msg.sender);
        
        usableBalances[msg.sender] += messages[_number].weight / messages[_number].to.length;
        
        return true;
    }
    
    /**
     * Return opened mail with specific number 
     *
     * @param _number Number of message 
     * @return Mail content
     */
    function getMail(uint256 _number) constant returns (bytes32 message) {
        UnreadMessage memory currentUnreadMessage = getUnreadMessage(_number);
        if (!currentUnreadMessage.isOpened || currentUnreadMessage.weight == 0) {
            throw;
        }
        
        return messages[_number].content;
    }
    
    /**
     * Issuing MAIL tokens  
     *
     * @param _recipient Recipient of tokens
     * @param _value Amount of tokens
     * @return Success of issuing
     */
    function issue(address _recipient, uint256 _value) onlyIssuer returns (bool success) {

        if (totalSupply + _value > maxTotalSupply) {
            return;
        }
        
        // Create tokens
        balances[_recipient] += _value;
        usableBalances[_recipient] += _value;
        totalSupply += _value;

        return true;
    }
    
    function Mail() {
        balances[msg.sender] = 0;
        totalSupply = 0;
        locked = false;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"usableBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"unreadMessageCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userAddress","type":"address"}],"name":"getReadMessages","outputs":[{"name":"mmessages","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airdropHoldersTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastReceivedMessage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_issuer","type":"address"}],"name":"setIssuer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_number","type":"uint256"}],"name":"getUnreadMessagesArrayContent","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"unreadMessages","outputs":[{"name":"id","type":"uint256"},{"name":"isOpened","type":"bool"},{"name":"free","type":"bool"},{"name":"from","type":"address"},{"name":"time","type":"uint256"},{"name":"weight","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_weight","type":"uint256"},{"name":"_hashedMessage","type":"bytes32"},{"name":"_validUntil","type":"uint256"},{"name":"_attachmentToken","type":"bytes32"},{"name":"_attachmentAmount","type":"uint256"}],"name":"sendMail","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_value","type":"uint256"}],"name":"issue","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"tokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"airdropTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_number","type":"uint256"}],"name":"getUnreadMessage","outputs":[{"components":[{"name":"id","type":"uint256"},{"name":"isOpened","type":"bool"},{"name":"free","type":"bool"},{"name":"from","type":"address"},{"name":"time","type":"uint256"},{"name":"weight","type":"uint256"}],"name":"unread","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userAddress","type":"address"}],"name":"getUnreadMessageCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_number","type":"uint256"}],"name":"openMail","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeForInvalidating","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_symbol","type":"bytes32"}],"name":"addToken","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentMessageNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_number","type":"uint256"}],"name":"getMail","outputs":[{"name":"message","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userAddress","type":"address"}],"name":"getUnreadMessages","outputs":[{"name":"mmessages","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"freeToUseTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_number","type":"uint256"}],"name":"invalidateMail","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","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
606060405260408051908101604052600981527f546f6b656e20302e320000000000000000000000000000000000000000000000602082015260039080516200004d9291602001906200016a565b5060408051908101604052600d81527f457468657265756d204d61696c0000000000000000000000000000000000000060208201526004908051620000979291602001906200016a565b5060408051908101604052600481527f4d41494c0000000000000000000000000000000000000000000000000000000060208201526005908051620000e19291602001906200016a565b506006805460ff19169055600060075562989680600855630bebc200600955630e4e1c00600a556317d78400600b556308f0d180600c55633b9aca00600e5534156200012c57600080fd5b60008054600160a060020a03191633600160a060020a031690811782558152601060205260408120819055600255600f805460ff191690556200020f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ad57805160ff1916838001178555620001dd565b82800160010185558215620001dd579182015b82811115620001dd578251825591602001919060010190620001c0565b50620001eb929150620001ef565b5090565b6200020c91905b80821115620001eb5760008155600101620001f6565b90565b6121d4806200021f6000396000f3006060604052600436106101f55763ffffffff60e060020a60003504166306fdde038114610205578063095ea7b31461028f5780630a1ceb0e146102c557806318160ddd146102f657806319a2bfd8146103095780631d1438481461032857806323b872dd1461035757806327e235e31461037f5780632ab4d0521461039e578063313ce567146103b157806334c7b8e8146103da5780633981649a1461044c5780634d3a2f101461045f57806355cc4e571461047e5780635a3b7e421461049f5780635c658165146104b257806364ab374b146104d75780636f1cecd81461052c57806370a082311461059557806378a71d78146105b4578063867904b41461061b5780638da5cb5b1461063d578063904194a31461065057806391152c5c146106665780639303b0b81461067957806395d89b411461068c578063995b2e2c1461069f578063a63e10fa146106b5578063a69df4b5146106d4578063a9059cbb146106e7578063acc79f7414610709578063bd0dccf61461071f578063c0aa3b2114610732578063c0c1eebc14610745578063cf30901214610767578063d91f68a21461077a578063dcc533051461078d578063dd62ed3e146107a3578063e45ceec1146107c8578063ecd27189146107e7578063f2fde38b146107fa578063f83d08ba14610819578063fed8f40f1461082c575b341561020057600080fd5b600080fd5b341561021057600080fd5b610218610842565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561025457808201518382015260200161023c565b50505050905090810190601f1680156102815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029a57600080fd5b6102b1600160a060020a03600435166024356108e0565b604051901515815260200160405180910390f35b34156102d057600080fd5b6102e4600160a060020a036004351661095d565b60405190815260200160405180910390f35b341561030157600080fd5b6102e461096f565b341561031457600080fd5b6102e4600160a060020a0360043516610975565b341561033357600080fd5b61033b610987565b604051600160a060020a03909116815260200160405180910390f35b341561036257600080fd5b6102b1600160a060020a0360043581169060243516604435610996565b341561038a57600080fd5b6102e4600160a060020a0360043516610af7565b34156103a957600080fd5b6102e4610b09565b34156103bc57600080fd5b6103c4610b0f565b60405160ff909116815260200160405180910390f35b34156103e557600080fd5b6103f9600160a060020a0360043516610b18565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610438578082015183820152602001610420565b505050509050019250505060405180910390f35b341561045757600080fd5b6102e4610c51565b341561046a57600080fd5b6102e4600160a060020a0360043516610c57565b341561048957600080fd5b61049d600160a060020a0360043516610c69565b005b34156104aa57600080fd5b610218610ca6565b34156104bd57600080fd5b6102e4600160a060020a0360043581169060243516610d11565b34156104e257600080fd5b6104ed600435610d2e565b6040519485529215156020850152600160a060020a039091166040808501919091526060840191909152608083019190915260a0909101905180910390f35b341561053757600080fd5b61054e600160a060020a0360043516602435610efb565b6040519586529315156020860152911515604080860191909152600160a060020a039091166060850152608084019190915260a083019190915260c0909101905180910390f35b34156105a057600080fd5b6102e4600160a060020a0360043516610f5d565b34156105bf57600080fd5b61049d600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050843594602081013594506040810135935060608101359250608001359050610f78565b341561062657600080fd5b6102b1600160a060020a03600435166024356113d6565b341561064857600080fd5b61033b611461565b341561065b57600080fd5b61033b600435611470565b341561067157600080fd5b6102e461148b565b341561068457600080fd5b6102e4611491565b341561069757600080fd5b610218611497565b34156106aa57600080fd5b6102e4600435611502565b34156106c057600080fd5b6102e4600160a060020a0360043516611607565b34156106df57600080fd5b6102b1611683565b34156106f257600080fd5b6102b1600160a060020a03600435166024356116b0565b341561071457600080fd5b6102b16004356117c1565b341561072a57600080fd5b6102e4611a31565b341561073d57600080fd5b6102e4611a37565b341561075057600080fd5b6102b1600160a060020a0360043516602435611a3d565b341561077257600080fd5b6102b1611a8e565b341561078557600080fd5b6102e4611a97565b341561079857600080fd5b6102e4600435611a9d565b34156107ae57600080fd5b6102e4600160a060020a0360043581169060243516611ae3565b34156107d357600080fd5b6103f9600160a060020a0360043516611b0e565b34156107f257600080fd5b6102e4611c41565b341561080557600080fd5b61049d600160a060020a0360043516611c47565b341561082457600080fd5b6102b1611c84565b341561083757600080fd5b61049d600435611cb4565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b505050505081565b600f5460009060ff16156108f357600080fd5b600160a060020a03338116600081815260126020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60116020526000908152604090205481565b60025481565b60166020526000908152604090205481565b600154600160a060020a031681565b600f5460009060ff16156109a957600080fd5b600160a060020a038416600090815260106020526040902054829010806109e85750600160a060020a0384166000908152601160205260409020548290105b156109f257600080fd5b600160a060020a0383166000908152601060205260409020548281011015610a1957600080fd5b600160a060020a0380851660009081526012602090815260408083203390941683529290522054821115610a4c57600080fd5b600160a060020a038084166000818152601060209081526040808320805488019055888516808452818420805489900390556011835281842080548990039055848452818420805489019055808452601283528184203390961684529490915290819020805486900390559091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60106020526000908152604090205481565b600e5481565b60065460ff1681565b610b2061201f565b60005b600160a060020a038316600090815260166020526040902054811015610bf757600160a060020a0383166000908152601560205260409020805482908110610b6757fe5b60009182526020909120600160049092020181015460ff1615151415610bef576018805460018101610b998382612031565b916000526020600020900160006015600087600160a060020a0316600160a060020a0316815260200190815260200160002084815481101515610bd857fe5b600091825260209091206004909102015490915550505b600101610b23565b6018805480602002602001604051908101604052809291908181526020018280548015610c4357602002820191906000526020600020905b815481526020019060010190808311610c2f575b505050505091505b50919050565b600a5481565b60196020526000908152604090205481565b60005433600160a060020a03908116911614610c8457600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d85780601f106108ad576101008083540402835291602001916108d8565b601260209081526000928352604080842090915290825290205481565b600080808080805b600160a060020a033316600090815260166020526040902054811015610ef157600160a060020a0333166000908152601560205260409020805488919083908110610d7d57fe5b9060005260206000209060040201600001541415610ee957600160a060020a0333166000908152601560205260409020805482908110610db957fe5b60009182526020808320600490920290910154600160a060020a033316835260159091526040909120805483908110610dee57fe5b6000918252602080832060016004909302019190910154600160a060020a033316835260159091526040909120805460ff9092169184908110610e2d57fe5b906000526020600020906004020160010160029054906101000a9004600160a060020a03166015600033600160a060020a0316600160a060020a0316815260200190815260200160002084815481101515610e8457fe5b9060005260206000209060040201600201546015600033600160a060020a0316600160a060020a0316815260200190815260200160002085815481101515610ec857fe5b90600052602060002090600402016003015495509550955095509550610ef1565b600101610d36565b5091939590929450565b601560205281600052604060002081815481101515610f1657fe5b6000918252602090912060049091020180546001820154600283015460039093015491945060ff80821694506101008204169262010000909104600160a060020a03169186565b600160a060020a031660009081526010602052604090205490565b600080610f8361205a565b60009250828089158015610f9957506000600854115b15610fa7578a519950600194505b84158015610fcd5750600160a060020a0333166000908152601160205260409020548a90105b80610fd857508a518a105b15610fe257600080fd5b601380546000908152601460205260408082208c9055825482528082206002018b90558254825280822042600390910155825482528082206006018054600160a060020a03191633600160a060020a031617905591548152206007018b805161104f92916020019061208f565b50861561111f576000878152600d602052604080822054600160a060020a0316955085916323b872dd91339130918b9190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156110d457600080fd5b6102c65a03f115156110e557600080fd5b5050506040518051905015156110fa57600080fd5b601380546000908152601460205260408082206004018a905591548152206005018690555b50506013548152600060208201819052600160a060020a033316606083015242608083015260a082018990528315156040830152805b8a5182101561135b57601354601960008d858151811061117157fe5b90602001906020020151600160a060020a0316600160a060020a031681526020019081526020016000205414156111bb576001820191508a518a8115156111b457fe5b0401611155565b601354601960008d85815181106111ce57fe5b90602001906020020151600160a060020a0316600160a060020a0316815260200190815260200160002081905550601560008c848151811061120c57fe5b90602001906020020151600160a060020a03168152602081019190915260400160002080546001810161123f83826120f6565b6000928352602090922085916004020181518155602082015160018201805460ff191691151591909117905560408201516001820180549115156101000261ff001990921691909117905560608201518160010160026101000a815481600160a060020a030219169083600160a060020a031602179055506080820151816002015560a08201518160030155505050601660008c84815181106112de57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460010190558a518a81151561131457fe5b04601060008d858151811061132557fe5b90602001906020020151600160a060020a0316815260208101919091526040016000208054909101905560019190910190611155565b84156113715760088054828c03900390556113a9565b600160a060020a03331660009081526011602090815260408083208054858f0390819003909155601090925290912080549190910390555b60138054600090815260146020526040902091909a03600191820155895401909855505050505050505050565b6000805433600160a060020a03908116911614801590611405575060015433600160a060020a03908116911614155b1561140f57600080fd5b600e548260025401111561142257610957565b50600160a060020a0382166000908152601060209081526040808320805485019055601190915290208054820190556002805482019055600192915050565b600054600160a060020a031681565b600d60205260009081526040902054600160a060020a031681565b60095481565b600b5481565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d85780601f106108ad576101008083540402835291602001916108d8565b61150a61205a565b60005b600160a060020a033316600090815260156020526040902054811015610c4b57600160a060020a033316600090815260156020526040902080548491908390811061155457fe5b90600052602060002090600402016000015414156115ff57600160a060020a033316600090815260156020526040902080548290811061159057fe5b906000526020600020906004020160c0604051908101604090815282548252600183015460ff80821615156020850152610100820416151591830191909152620100009004600160a060020a031660608201526002820154608082015260039091015460a08201529150610c4b565b60010161150d565b600080805b600160a060020a03841660009081526016602052604090205481101561167c57600160a060020a038416600090815260156020526040902080548290811061165057fe5b600091825260209091206001600490920201015460ff161515611674576001909101905b60010161160c565b5092915050565b6000805433600160a060020a0390811691161461169f57600080fd5b50600f805460ff1916905560015b90565b600f5460009060ff16156116c357600080fd5b600160a060020a033316600090815260106020526040902054829010806117025750600160a060020a0333166000908152601160205260409020548290105b1561170c57600080fd5b600160a060020a038316600090815260106020526040902054828101101561173357600080fd5b600160a060020a0333811660008181526010602090815260408083208054889003905593871680835284832080548801905583835260119091528382208054879003905580825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b60006117cb61205a565b6000806117d785611502565b92508260200151806117eb57508260a00151155b156117f557600080fd5b600085815260146020526040902060040154158015906118245750600085815260146020526040812060050154115b156118e457600085815260146020818152604080842060048101548552600d835290842054938990529190526007810154600590910154600160a060020a039092169350839163a9059cbb91339181151561187b57fe5b0460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156118c857600080fd5b6102c65a03f115156118d957600080fd5b505050604051805150505b5060005b600160a060020a03331660009081526015602052604090205481101561199a57600160a060020a033316600090815260156020526040902080548691908390811061192f57fe5b906000526020600020906004020160000154141561199257600160a060020a03331660009081526015602052604090208054600191908390811061196f57fe5b60009182526020909120600490910201600101805460ff19169115159190911790555b6001016118e8565b60008581526014602052604090206008018054600181016119bb8382612031565b5060009182526020808320919091018054600160a060020a03191633600160a060020a03161790558682526014905260409020600781015460019190910154811515611a0357fe5b33600160a060020a031660009081526011602052604090208054929091049091019055506001949350505050565b60075481565b600c5481565b60008054819033600160a060020a03908116911614611a5b57600080fd5b50506000818152600d602052604090208054600160a060020a038416600160a060020a0319909116179055600192915050565b600f5460ff1681565b60135481565b6000611aa761205a565b611ab083611502565b905080602001511580611ac557508060a00151155b15611acf57600080fd5b505060009081526014602052604090205490565b600160a060020a03918216600090815260126020908152604080832093909416825291909152205490565b611b1661201f565b60005b600160a060020a038316600090815260166020526040902054811015611bea57600160a060020a0383166000908152601560205260409020805482908110611b5d57fe5b600091825260209091206001600490920201015460ff161515611be2576017805460018101611b8c8382612031565b916000526020600020900160006015600087600160a060020a0316600160a060020a0316815260200190815260200160002084815481101515611bcb57fe5b600091825260209091206004909102015490915550505b600101611b19565b6017805480602002602001604051908101604052809291908181526020018280548015610c435760200282019190600052602060002090815481526020019060010190808311610c2f575050505050915050919050565b60085481565b60005433600160a060020a03908116911614611c6257600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b6000805433600160a060020a03908116911614611ca057600080fd5b50600f805460ff1916600190811790915590565b6000818152601460205260408120600201548190819081908190429010611cda57600080fd5b6000868152601460205260408120600501541115611dbb57600086815260146020818152604080842060048101548552600d835290842054938a9052919052600681015460078201546008830154600590930154600160a060020a039485169950899463a9059cbb94931692820302811515611d5257fe5b0460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611d9f57600080fd5b6102c65a03f11515611db057600080fd5b505050604051805150505b600093505b600086815260146020526040902060070154841015612017576000868152601460205260409020600701805485908110611df657fe5b6000918252602082200154600160a060020a0316935091505b600160a060020a03831660009081526015602052604090205482101561200c57600160a060020a0383166000908152601560205260409020805487919084908110611e5657fe5b906000526020600020906004020160000154141561200157600160a060020a0383166000908152601560205260409020805483908110611e9257fe5b600091825260209091206001600490920201015460ff161515611ffc57600160a060020a0383166000908152601560205260408120805484908110611ed357fe5b6000918252602080832060036004909302019190910192909255600160a060020a0385168152601590915260408120805484908110611f0e57fe5b60009182526020808320600260049093020191909101929092558781526014909152604090206007810154600190910154811515611f4857fe5b600160a060020a038516600090815260166020908152604080832080546000190190556010825280832080549590940494859003909355601590522080549192509083908110611f9457fe5b906000526020600020906004020160010160019054906101000a900460ff161515611ffc5760008681526014602090815260408083206006018054600160a060020a039081168552601184528285208054870190559054168352601090915290208054820190555b61200c565b816001019150611e0f565b600190930192611dc0565b505050505050565b60206040519081016040526000815290565b81548183558181151161205557600083815260209020612055918101908301612122565b505050565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b8280548282559060005260206000209081019282156120e6579160200282015b828111156120e65782518254600160a060020a031916600160a060020a0391909116178255602092909201916001909101906120af565b506120f292915061213c565b5090565b815481835581811511612055576004028160040283600052602060002091820191016120559190612160565b6116ad91905b808211156120f25760008155600101612128565b6116ad91905b808211156120f2578054600160a060020a0319168155600101612142565b6116ad91905b808211156120f257600080825560018201805475ffffffffffffffffffffffffffffffffffffffffffff191690556002820181905560038201556004016121665600a165627a7a723058209f103afb66000f35ad90bb0b25aa5c0ed908787820fb49697b18a2a21b4277960029

   Swarm Source:
bzzr://9f103afb66000f35ad90bb0b25aa5c0ed908787820fb49697b18a2a21b427796

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward