Sponsored Link: Defeat FB+GOOG with Wolk's Decentralized Data ExchangeDownload Whitepaper and Participate in Token Event 8/28.
Contract Overview | LunyrTokenContract
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 12424 txns
Token Tracker Lunyr
  Latest 25 txns from a total Of 12424 transactions View All

TxHash Age From To Value [TxFee]
0xb6a4a74846d3575d80d3fb26b5b44f67dd7a47c6be5be89adb680843b3a7d2d72 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001373284155
0x1e3c031ff578731e3dd6eff4899b829fd4eab2a78fee7f4c9fde701a6535528f13 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001746302696
0x88de0707b1753b3ea82466c9f7805a8773c82124c0b5ebbc9c8656ee27ccd5ec51 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001252688568
0xe936c2654e67fdf766433e2fce7ea120e2e0f267d2986ffbce9243091c959d2356 mins ago0x6cab1be3cf9f942879ae0c5fa6a38592b93fcc77  IN  LunyrTokenContract0 Ether0.000022678
0x12ffba6822fefc85db116174e67d2438da05feecd0b04f3fbf7c4938c2bc837e1 hr 3 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001269515704
0x1cf89acfcbc1065d97acad761794779e5d28b72aec216148b391a07321dc3d051 hr 45 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001659357
0x869869db07899dd72be6e488f2910be98fe9ed5ece48e273c08d995089d4080f1 hr 53 mins agoyunbi_1  IN  LunyrTokenContract0 Ether0.0026307
0x12a0775d0ca9569225de1dc9c0d0b6db38722fa321e3a2fa7ce53a48395de91f1 hr 53 mins agoyunbi_1  IN  LunyrTokenContract0 Ether0.0026371
0xf6a8d9aecd299d3d6c9ac9f30fa98dad7e817fc7e317967846ddb6f4e0b5c5da2 hrs 50 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001186857
0x79abfe8fb66e71aaeac20d83daa7a9e315fc5a502968f725f39ea2fb095fe4ce3 hrs 10 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001186857
0x1cbed2ddedeb73481a259639d5506d7e292c908fc4688b3211c5383c9d9c1d733 hrs 11 mins ago0x8c5db6d23426fcb6644631f542e484b70e7b81c2  IN  LunyrTokenContract0 Ether0.000633213
0x88b1b24fea14ece9513fa730946d3927df31573fc842f44b876422bf8467d0aa3 hrs 16 mins ago0xeef4ef99661a3c4cb4acd2a019320a495266deda  IN  LunyrTokenContract0 Ether0.000966651
0x70677809432dca61df667022e06f1150277805d885612a2e2fcf7af4d2d8602b3 hrs 24 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001106238
0xc10c606728591235ce7d4b9516c96d4fa17bd0392b6ec5bb09bcd6f456b298b53 hrs 26 mins agoliqui.io_2  IN  LunyrTokenContract0 Ether0.001336544962
0xa11bfdb76eb45ee6f0cc17ccdbfb59d6d8f99719a0dad87cf11ada8a464a74983 hrs 37 mins ago0xdeefb3d4e9c85c7085c93ff8ecdb589db2d4e47b  IN  LunyrTokenContract0 Ether0.000488860235
0xbe03d64c7d619ec057031c1bde7e7826ce5a12d5a9770f97edf6d4f6084219803 hrs 42 mins ago0x745eb37763d728a84611a55d86429aaf34b91d87  IN  LunyrTokenContract0 Ether0.001849358
0xa84f7c1ab2e122a84644544b444cd0d8ed22cbacc262bad3de10369e529a7df13 hrs 49 mins ago0x5e1d61e07e982aedd99cfe1fd72cbd82f0bc2d35  IN  LunyrTokenContract0 Ether0.000449017125
0x55de224ad02e21a7d8bb299ef2eaac8aaa6b0597fc2eda646198d2044d72b9113 hrs 56 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001186857
0x133060e089014ab49a7c69d8f5583c299d1cee2efd66a621c604958e6f37de723 hrs 56 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001186857
0x1674a9f2c8bcf3439b1b541f2a618a9539813a40a69c4f930093ba815b4c174a4 hrs 9 mins agoBittrex  IN  LunyrTokenContract0 Ether0.002185404327
0x76c0482ec513ce0c9983a4dac5678d2216a04834c36924356d220b630c1374fa4 hrs 11 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001561216189
0xd64ed7c46e2a7517816fcc086d183f71d96d51a5f42b11d6abb85a24723b2bbf4 hrs 29 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001561216189
0x85ba33570299e0f6cce46792bace912f12aedd52c2ea3d5831094a80a9adf6384 hrs 33 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001561216189
0x0a95c7fd9b8afa6d2da1ea5d59021747d42e4911236c644288071bde677e66e54 hrs 57 mins agoBittrex  IN  LunyrTokenContract0 Ether0.001619741172
0x34f49101a119c7433bfd52b07c85666d90f712e2ba9d1c236fc76d7ba46f7b607 hrs 2 mins agoBittrex  IN  LunyrTokenContract0 Ether0.0034078284
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 11 Internal Transactions

ParentTxHash Block Age From To Value
0x906cca72b5cfe69034cf8ad22454c12f4b4cddb3b445ff4213a803d5b83a131b3613579113 days 2 hrs ago0xfa05a73ffe78ef8f1a739473e462c54bae6567d90x83c54a35e72ae07c46fc8f8f172a13ba19ac3bed47,923.130483059800516816 Ether
0xe837be7d38da5c80503d0525a89c6c0eddc2f93c85016b9fda79f0895bf557363598898115 days 17 hrs ago0x97f9461364cfe9d964137fc934574bb2eea72e3d0xfa05a73ffe78ef8f1a739473e462c54bae6567d90.5 Ether
0x44ba7ea04e5b2386e6125993bc58e8f42cbd062b3a74a2988ab39f0b736beb563575193119 days 18 hrs ago0xe828668dca8078dbcdc4a3d5ac970cd4ee39e0680xfa05a73ffe78ef8f1a739473e462c54bae6567d910 Ether
0x7fb6d1db71c60d7966405f0d0890739a6777ffd1015859b4a17bdf78712a96303441717142 days 12 hrs ago0x27469a14c8a4df355afced88749ff445cb22b53b0xfa05a73ffe78ef8f1a739473e462c54bae6567d926 Ether
0xeeb6a3f1422f0fe1358c423114f10e369bcc49cf41bcefc78dcbf9f8a87576723441628142 days 13 hrs ago0x27469a14c8a4df355afced88749ff445cb22b53b0xfa05a73ffe78ef8f1a739473e462c54bae6567d926.86 Ether
0x1352bc672201b012efbebe167c9ecd9cd2f33f902fefec6e43531a6c83cb6a6d3441534142 days 13 hrs ago0x27469a14c8a4df355afced88749ff445cb22b53b0xfa05a73ffe78ef8f1a739473e462c54bae6567d926.844 Ether
0x33ffc133108b37c53beee4f539372605245d66fa1cf7a55ec9aee41d7bedd83f3440940142 days 15 hrs ago0x2f93cf99baff21b8394f7556bdf8727ebaff0c470xfa05a73ffe78ef8f1a739473e462c54bae6567d910 Ether
0x42add3a8c17abe78ce04163cbc72660586ce1274b68c6cc96218c22e9f898a713440912142 days 16 hrs ago0x57cf8daf7e48de7384643b66de8cd2c83630dcd40xfa05a73ffe78ef8f1a739473e462c54bae6567d910 Ether
0x43bca9b711ca454aabca9b76c6a842c82a3350a08e8a6eceed9cc6c78242795b3440841142 days 16 hrs ago0x2f93cf99baff21b8394f7556bdf8727ebaff0c470xfa05a73ffe78ef8f1a739473e462c54bae6567d910 Ether
0x13f532dcdb94127d27612a1287de882cefd8479fd09f0b463cd95979637188773440763142 days 16 hrs ago0x2f93cf99baff21b8394f7556bdf8727ebaff0c470xfa05a73ffe78ef8f1a739473e462c54bae6567d910 Ether
0x06e552bd2f55cb6097bbcac2b3ba5b3ec9ee8b1edb1820aa369a0418e493836b3436873143 days 8 hrs ago0xfa05a73ffe78ef8f1a739473e462c54bae6567d9  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: LunyrToken
Compiler Version: v0.4.8+commit.60cc1668
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.8;

// accepted from zeppelin-solidity https://github.com/OpenZeppelin/zeppelin-solidity
/*
 * ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);

  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);
  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}


// accepted from zeppelin-solidity https://github.com/OpenZeppelin/zeppelin-solidity

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

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

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

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

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

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

/// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
/// @author Stefan George - <stefan.george@consensys.net>
contract MultiSigWallet {

    // flag to determine if address is for a real contract or not
    bool public isMultiSigWallet = false;

    uint constant public MAX_OWNER_COUNT = 50;

    event Confirmation(address indexed sender, uint indexed transactionId);
    event Revocation(address indexed sender, uint indexed transactionId);
    event Submission(uint indexed transactionId);
    event Execution(uint indexed transactionId);
    event ExecutionFailure(uint indexed transactionId);
    event Deposit(address indexed sender, uint value);
    event OwnerAddition(address indexed owner);
    event OwnerRemoval(address indexed owner);
    event RequirementChange(uint required);

    mapping (uint => Transaction) public transactions;
    mapping (uint => mapping (address => bool)) public confirmations;
    mapping (address => bool) public isOwner;
    address[] public owners;
    uint public required;
    uint public transactionCount;

    struct Transaction {
        address destination;
        uint value;
        bytes data;
        bool executed;
    }

    modifier onlyWallet() {
        if (msg.sender != address(this)) throw;
        _;
    }

    modifier ownerDoesNotExist(address owner) {
        if (isOwner[owner]) throw;
        _;
    }

    modifier ownerExists(address owner) {
        if (!isOwner[owner]) throw;
        _;
    }

    modifier transactionExists(uint transactionId) {
        if (transactions[transactionId].destination == 0) throw;
        _;
    }

    modifier confirmed(uint transactionId, address owner) {
        if (!confirmations[transactionId][owner]) throw;
        _;
    }

    modifier notConfirmed(uint transactionId, address owner) {
        if (confirmations[transactionId][owner]) throw;
        _;
    }

    modifier notExecuted(uint transactionId) {
        if (transactions[transactionId].executed) throw;
        _;
    }

    modifier notNull(address _address) {
        if (_address == 0) throw;
        _;
    }

    modifier validRequirement(uint ownerCount, uint _required) {
        if (ownerCount > MAX_OWNER_COUNT) throw;
        if (_required > ownerCount) throw;
        if (_required == 0) throw;
        if (ownerCount == 0) throw;
        _;
    }

    /// @dev Fallback function allows to deposit ether.
    function()
        payable
    {
        if (msg.value > 0)
            Deposit(msg.sender, msg.value);
    }

    /*
     * Public functions
     */
    /// @dev Contract constructor sets initial owners and required number of confirmations.
    /// @param _owners List of initial owners.
    /// @param _required Number of required confirmations.
    function MultiSigWallet(address[] _owners, uint _required)
        public
        validRequirement(_owners.length, _required)
    {
        for (uint i=0; i<_owners.length; i++) {
            if (isOwner[_owners[i]] || _owners[i] == 0) throw;
            isOwner[_owners[i]] = true;
        }
        isMultiSigWallet = true;
        owners = _owners;
        required = _required;
    }

    /// @dev Allows to add a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of new owner.
    function addOwner(address owner)
        public
        onlyWallet
        ownerDoesNotExist(owner)
        notNull(owner)
        validRequirement(owners.length + 1, required)
    {
        isOwner[owner] = true;
        owners.push(owner);
        OwnerAddition(owner);
    }

    /// @dev Allows to remove an owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner.
    function removeOwner(address owner)
        public
        onlyWallet
        ownerExists(owner)
    {
        isOwner[owner] = false;
        for (uint i=0; i<owners.length - 1; i++)
            if (owners[i] == owner) {
                owners[i] = owners[owners.length - 1];
                break;
            }
        owners.length -= 1;
        if (required > owners.length)
            changeRequirement(owners.length);
        OwnerRemoval(owner);
    }

    /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner to be replaced.
    /// @param newOwner Address of new owner.
    /// @param index the indx of the owner to be replaced
    function replaceOwnerIndexed(address owner, address newOwner, uint index)
        public
        onlyWallet
        ownerExists(owner)
        ownerDoesNotExist(newOwner)
    {
        if (owners[index] != owner) throw;
        owners[index] = newOwner;
        isOwner[owner] = false;
        isOwner[newOwner] = true;
        OwnerRemoval(owner);
        OwnerAddition(newOwner);
    }


    /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.
    /// @param _required Number of required confirmations.
    function changeRequirement(uint _required)
        public
        onlyWallet
        validRequirement(owners.length, _required)
    {
        required = _required;
        RequirementChange(_required);
    }

    /// @dev Allows an owner to submit and confirm a transaction.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function submitTransaction(address destination, uint value, bytes data)
        public
        returns (uint transactionId)
    {
        transactionId = addTransaction(destination, value, data);
        confirmTransaction(transactionId);
    }

    /// @dev Allows an owner to confirm a transaction.
    /// @param transactionId Transaction ID.
    function confirmTransaction(uint transactionId)
        public
        ownerExists(msg.sender)
        transactionExists(transactionId)
        notConfirmed(transactionId, msg.sender)
    {
        confirmations[transactionId][msg.sender] = true;
        Confirmation(msg.sender, transactionId);
        executeTransaction(transactionId);
    }

    /// @dev Allows an owner to revoke a confirmation for a transaction.
    /// @param transactionId Transaction ID.
    function revokeConfirmation(uint transactionId)
        public
        ownerExists(msg.sender)
        confirmed(transactionId, msg.sender)
        notExecuted(transactionId)
    {
        confirmations[transactionId][msg.sender] = false;
        Revocation(msg.sender, transactionId);
    }

    /// @dev Returns the confirmation status of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Confirmation status.
    function isConfirmed(uint transactionId)
        public
        constant
        returns (bool)
    {
        uint count = 0;
        for (uint i=0; i<owners.length; i++) {
            if (confirmations[transactionId][owners[i]])
                count += 1;
            if (count == required)
                return true;
        }
    }

    /*
     * Internal functions
     */

    /// @dev Allows anyone to execute a confirmed transaction.
    /// @param transactionId Transaction ID.
    function executeTransaction(uint transactionId)
       internal
       notExecuted(transactionId)
    {
        if (isConfirmed(transactionId)) {
            Transaction tx = transactions[transactionId];
            tx.executed = true;
            if (tx.destination.call.value(tx.value)(tx.data))
                Execution(transactionId);
            else {
                ExecutionFailure(transactionId);
                tx.executed = false;
            }
        }
    }

    /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function addTransaction(address destination, uint value, bytes data)
        internal
        notNull(destination)
        returns (uint transactionId)
    {
        transactionId = transactionCount;
        transactions[transactionId] = Transaction({
            destination: destination,
            value: value,
            data: data,
            executed: false
        });
        transactionCount += 1;
        Submission(transactionId);
    }

    /*
     * Web3 call functions
     */
    /// @dev Returns number of confirmations of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Number of confirmations.
    function getConfirmationCount(uint transactionId)
        public
        constant
        returns (uint count)
    {
        for (uint i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]])
                count += 1;
    }

    /// @dev Returns total number of transactions after filers are applied.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Total number of transactions after filters are applied.
    function getTransactionCount(bool pending, bool executed)
        public
        constant
        returns (uint count)
    {
        for (uint i=0; i<transactionCount; i++)
            if ((pending && !transactions[i].executed) ||
                (executed && transactions[i].executed))
                count += 1;
    }

    /// @dev Returns list of owners.
    /// @return List of owner addresses.
    function getOwners()
        public
        constant
        returns (address[])
    {
        return owners;
    }

    /// @dev Returns array with owner addresses, which confirmed transaction.
    /// @param transactionId Transaction ID.
    /// @return Returns array of owner addresses.
    function getConfirmations(uint transactionId)
        public
        constant
        returns (address[] _confirmations)
    {
        address[] memory confirmationsTemp = new address[](owners.length);
        uint count = 0;
        uint i;
        for (i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]]) {
                confirmationsTemp[count] = owners[i];
                count += 1;
            }
        _confirmations = new address[](count);
        for (i=0; i<count; i++)
            _confirmations[i] = confirmationsTemp[i];
    }

    /// @dev Returns list of transaction IDs in defined range.
    /// @param from Index start position of transaction array.
    /// @param to Index end position of transaction array.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Returns array of transaction IDs.
    function getTransactionIds(uint from, uint to, bool pending, bool executed)
        public
        constant
        returns (uint[] _transactionIds)
    {
        uint[] memory transactionIdsTemp = new uint[](transactionCount);
        uint count = 0;
        uint i;
        for (i=0; i<transactionCount; i++)
          if ((pending && !transactions[i].executed) ||
              (executed && transactions[i].executed))
            {
                transactionIdsTemp[count] = i;
                count += 1;
            }
        _transactionIds = new uint[](to - from);
        for (i=from; i<to; i++)
            _transactionIds[i - from] = transactionIdsTemp[i];
    }
}



contract NewToken is ERC20 {}

contract UpgradeAgent is SafeMath {
  address public owner;
  bool public isUpgradeAgent;
  NewToken public newToken;
  uint256 public originalSupply; // the original total supply of old tokens
  bool public upgradeHasBegun;
  function upgradeFrom(address _from, uint256 _value) public;
}

/// @title Time-locked vault of tokens allocated to Lunyr after 180 days
contract LUNVault is SafeMath {

    // flag to determine if address is for a real contract or not
    bool public isLUNVault = false;

    LunyrToken lunyrToken;
    address lunyrMultisig;
    uint256 unlockedAtBlockNumber;
    //uint256 public constant numBlocksLocked = 1110857;
    // smaller lock for testing
    uint256 public constant numBlocksLocked = 1110857;

    /// @notice Constructor function sets the Lunyr Multisig address and
    /// total number of locked tokens to transfer
    function LUNVault(address _lunyrMultisig) internal {
        if (_lunyrMultisig == 0x0) throw;
        lunyrToken = LunyrToken(msg.sender);
        lunyrMultisig = _lunyrMultisig;
        isLUNVault = true;
        unlockedAtBlockNumber = safeAdd(block.number, numBlocksLocked); // 180 days of blocks later
    }

    /// @notice Transfer locked tokens to Lunyr's multisig wallet
    function unlock() external {
        // Wait your turn!
        if (block.number < unlockedAtBlockNumber) throw;
        // Will fail if allocation (and therefore toTransfer) is 0.
        if (!lunyrToken.transfer(lunyrMultisig, lunyrToken.balanceOf(this))) throw;
    }

    // disallow payment this is for LUN not ether
    function () { throw; }

}

/// @title Lunyr crowdsale contract
contract LunyrToken is SafeMath, ERC20 {

    // flag to determine if address is for a real contract or not
    bool public isLunyrToken = false;

    // State machine
    enum State{PreFunding, Funding, Success, Failure}

    // Token information
    string public constant name = "Lunyr Token";
    string public constant symbol = "LUN";
    uint256 public constant decimals = 18;  // decimal places
    uint256 public constant crowdfundPercentOfTotal = 78;
    uint256 public constant vaultPercentOfTotal = 15;
    uint256 public constant lunyrPercentOfTotal = 7;
    uint256 public constant hundredPercent = 100;

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

    // Upgrade information
    address public upgradeMaster;
    UpgradeAgent public upgradeAgent;
    uint256 public totalUpgraded;

    // Crowdsale information
    bool public finalizedCrowdfunding = false;
    uint256 public fundingStartBlock; // crowdsale start block
    uint256 public fundingEndBlock; // crowdsale end block
    uint256 public constant tokensPerEther = 44; // LUN:ETH exchange rate
    uint256 public constant tokenCreationMax = safeMul(250000 ether, tokensPerEther);
    uint256 public constant tokenCreationMin = safeMul(25000 ether, tokensPerEther);
    // for testing on testnet
    //uint256 public constant tokenCreationMax = safeMul(10 ether, tokensPerEther);
    //uint256 public constant tokenCreationMin = safeMul(3 ether, tokensPerEther);

    address public lunyrMultisig;
    LUNVault public timeVault; // Lunyr's time-locked vault

    event Upgrade(address indexed _from, address indexed _to, uint256 _value);
    event Refund(address indexed _from, uint256 _value);
    event UpgradeFinalized(address sender, address upgradeAgent);
    event UpgradeAgentSet(address agent);

    // For mainnet, startBlock = 3445888, endBlock = 3618688
    function LunyrToken(address _lunyrMultisig,
                        address _upgradeMaster,
                        uint256 _fundingStartBlock,
                        uint256 _fundingEndBlock) {

        if (_lunyrMultisig == 0) throw;
        if (_upgradeMaster == 0) throw;
        if (_fundingStartBlock <= block.number) throw;
        if (_fundingEndBlock   <= _fundingStartBlock) throw;
        isLunyrToken = true;
        upgradeMaster = _upgradeMaster;
        fundingStartBlock = _fundingStartBlock;
        fundingEndBlock = _fundingEndBlock;
        timeVault = new LUNVault(_lunyrMultisig);
        if (!timeVault.isLUNVault()) throw;
        lunyrMultisig = _lunyrMultisig;
        if (!MultiSigWallet(lunyrMultisig).isMultiSigWallet()) throw;
    }

    function balanceOf(address who) constant returns (uint) {
        return balances[who];
    }

    /// @notice Transfer `value` LUN tokens from sender's account
    /// `msg.sender` to provided account address `to`.
    /// @notice This function is disabled during the funding.
    /// @dev Required state: Success
    /// @param to The address of the recipient
    /// @param value The number of LUN to transfer
    /// @return Whether the transfer was successful or not
    function transfer(address to, uint256 value) returns (bool ok) {
        if (getState() != State.Success) throw; // Abort if crowdfunding was not a success.
        if (to == 0x0) throw;
        if (to == address(upgradeAgent)) throw;
        //if (to == address(upgradeAgent.newToken())) throw;
        uint256 senderBalance = balances[msg.sender];
        if (senderBalance >= value && value > 0) {
            senderBalance = safeSub(senderBalance, value);
            balances[msg.sender] = senderBalance;
            balances[to] = safeAdd(balances[to], value);
            Transfer(msg.sender, to, value);
            return true;
        }
        return false;
    }

    /// @notice Transfer `value` LUN tokens from sender 'from'
    /// to provided account address `to`.
    /// @notice This function is disabled during the funding.
    /// @dev Required state: Success
    /// @param from The address of the sender
    /// @param to The address of the recipient
    /// @param value The number of LUN to transfer
    /// @return Whether the transfer was successful or not
    function transferFrom(address from, address to, uint value) returns (bool ok) {
        if (getState() != State.Success) throw; // Abort if not in Success state.
        if (to == 0x0) throw;
        if (to == address(upgradeAgent)) throw;
        //if (to == address(upgradeAgent.newToken())) throw;
        if (balances[from] >= value &&
            allowed[from][msg.sender] >= value)
        {
            balances[to] = safeAdd(balances[to], value);
            balances[from] = safeSub(balances[from], value);
            allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], value);
            Transfer(from, to, value);
            return true;
        } else { return false; }
    }

    /// @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 wei to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address spender, uint256 value) returns (bool ok) {
        if (getState() != State.Success) throw; // Abort if not in Success state.
        allowed[msg.sender][spender] = value;
        Approval(msg.sender, spender, value);
        return true;
    }

    /// @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 (uint) {
        return allowed[owner][spender];
    }

    // Token upgrade functionality

    /// @notice Upgrade tokens to the new token contract.
    /// @dev Required state: Success
    /// @param value The number of tokens to upgrade
    function upgrade(uint256 value) external {
        if (getState() != State.Success) throw; // Abort if not in Success state.
        if (upgradeAgent.owner() == 0x0) throw; // need a real upgradeAgent address

        // Validate input value.
        if (value == 0) throw;
        if (value > balances[msg.sender]) throw;

        // update the balances here first before calling out (reentrancy)
        balances[msg.sender] = safeSub(balances[msg.sender], value);
        totalSupply = safeSub(totalSupply, value);
        totalUpgraded = safeAdd(totalUpgraded, value);
        upgradeAgent.upgradeFrom(msg.sender, value);
        Upgrade(msg.sender, upgradeAgent, value);
    }

    /// @notice Set address of upgrade target contract and enable upgrade
    /// process.
    /// @dev Required state: Success
    /// @param agent The address of the UpgradeAgent contract
    function setUpgradeAgent(address agent) external {
        if (getState() != State.Success) throw; // Abort if not in Success state.
        if (agent == 0x0) throw; // don't set agent to nothing
        if (msg.sender != upgradeMaster) throw; // Only a master can designate the next agent
        if (address(upgradeAgent) != 0x0 && upgradeAgent.upgradeHasBegun()) throw; // Don't change the upgrade agent
        upgradeAgent = UpgradeAgent(agent);
        // upgradeAgent must be created and linked to LunyrToken after crowdfunding is over
        if (upgradeAgent.originalSupply() != totalSupply) throw;
        UpgradeAgentSet(upgradeAgent);
    }

    /// @notice Set address of upgrade target contract and enable upgrade
    /// process.
    /// @dev Required state: Success
    /// @param master The address that will manage upgrades, not the upgradeAgent contract address
    function setUpgradeMaster(address master) external {
        if (getState() != State.Success) throw; // Abort if not in Success state.
        if (master == 0x0) throw;
        if (msg.sender != upgradeMaster) throw; // Only a master can designate the next master
        upgradeMaster = master;
    }

    function setMultiSigWallet(address newWallet) external {
      if (msg.sender != lunyrMultisig) throw;
      MultiSigWallet wallet = MultiSigWallet(newWallet);
      if (!wallet.isMultiSigWallet()) throw;
      lunyrMultisig = newWallet;
    }

    // Crowdfunding:

    // don't just send ether to the contract expecting to get tokens
    function() { throw; }


    /// @notice Create tokens when funding is active.
    /// @dev Required state: Funding
    /// @dev State transition: -> Funding Success (only if cap reached)
    function create() payable external {
        // Abort if not in Funding Active state.
        // The checks are split (instead of using or operator) because it is
        // cheaper this way.
        if (getState() != State.Funding) throw;

        // Do not allow creating 0 or more than the cap tokens.
        if (msg.value == 0) throw;

        // multiply by exchange rate to get newly created token amount
        uint256 createdTokens = safeMul(msg.value, tokensPerEther);

        // we are creating tokens, so increase the totalSupply
        totalSupply = safeAdd(totalSupply, createdTokens);

        // don't go over the limit!
        if (totalSupply > tokenCreationMax) throw;

        // Assign new tokens to the sender
        balances[msg.sender] = safeAdd(balances[msg.sender], createdTokens);

        // Log token creation event
        Transfer(0, msg.sender, createdTokens);
    }

    /// @notice Finalize crowdfunding
    /// @dev If cap was reached or crowdfunding has ended then:
    /// create LUN for the Lunyr Multisig and developer,
    /// transfer ETH to the Lunyr Multisig address.
    /// @dev Required state: Success
    function finalizeCrowdfunding() external {
        // Abort if not in Funding Success state.
        if (getState() != State.Success) throw; // don't finalize unless we won
        if (finalizedCrowdfunding) throw; // can't finalize twice (so sneaky!)

        // prevent more creation of tokens
        finalizedCrowdfunding = true;

        // Endowment: 15% of total goes to vault, timelocked for 6 months
        // uint256 vaultTokens = safeDiv(safeMul(totalSupply, vaultPercentOfTotal), hundredPercent);
        uint256 vaultTokens = safeDiv(safeMul(totalSupply, vaultPercentOfTotal), crowdfundPercentOfTotal);
        balances[timeVault] = safeAdd(balances[timeVault], vaultTokens);
        Transfer(0, timeVault, vaultTokens);

        // Endowment: 7% of total goes to lunyr for marketing and bug bounty
        uint256 lunyrTokens = safeDiv(safeMul(totalSupply, lunyrPercentOfTotal), crowdfundPercentOfTotal);
        balances[lunyrMultisig] = safeAdd(balances[lunyrMultisig], lunyrTokens);
        Transfer(0, lunyrMultisig, lunyrTokens);

        totalSupply = safeAdd(safeAdd(totalSupply, vaultTokens), lunyrTokens);

        // Transfer ETH to the Lunyr Multisig address.
        if (!lunyrMultisig.send(this.balance)) throw;
    }

    /// @notice Get back the ether sent during the funding in case the funding
    /// has not reached the minimum level.
    /// @dev Required state: Failure
    function refund() external {
        // Abort if not in Funding Failure state.
        if (getState() != State.Failure) throw;

        uint256 lunValue = balances[msg.sender];
        if (lunValue == 0) throw;
        balances[msg.sender] = 0;
        totalSupply = safeSub(totalSupply, lunValue);

        uint256 ethValue = safeDiv(lunValue, tokensPerEther); // lunValue % tokensPerEther == 0
        Refund(msg.sender, ethValue);
        if (!msg.sender.send(ethValue)) throw;
    }

    /// @notice This manages the crowdfunding state machine
    /// We make it a function and do not assign the result to a variable
    /// So there is no chance of the variable being stale
    function getState() public constant returns (State){
      // once we reach success, lock in the state
      if (finalizedCrowdfunding) return State.Success;
      if (block.number < fundingStartBlock) return State.PreFunding;
      else if (block.number <= fundingEndBlock && totalSupply < tokenCreationMax) return State.Funding;
      else if (totalSupply >= tokenCreationMin) return State.Success;
      else return State.Failure;
    }
}

  Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vaultPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdfundPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalizeCrowdfunding","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lunyrPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"upgradeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalizedCrowdfunding","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"hundredPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isLunyrToken","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lunyrMultisig","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingEndBlock","outputs":[{"name":"","type":"uint256"}],"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":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"fundingStartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"agent","type":"address"}],"name":"setUpgradeAgent","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"create","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"newWallet","type":"address"}],"name":"setMultiSigWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"timeVault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensPerEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"master","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_lunyrMultisig","type":"address"},{"name":"_upgradeMaster","type":"address"},{"name":"_fundingStartBlock","type":"uint256"},{"name":"_fundingEndBlock","type":"uint256"}],"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":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"upgradeAgent","type":"address"}],"name":"UpgradeFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"UpgradeAgentSet","type":"event"},{"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
60606040526000600160006101000a81548160ff0219169083151502179055506000600760006101000a81548160ff02191690831515021790555034620000005760405160808062002b9a833981016040528080519060200190919080519060200190919080519060200190919080519060200190919050505b60008473ffffffffffffffffffffffffffffffffffffffff1614156200009f5762000000565b60008373ffffffffffffffffffffffffffffffffffffffff161415620000c55762000000565b4382111515620000d55762000000565b8181111515620000e55762000000565b6001600160006101000a81548160ff02191690831515021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160088190555080600981905550836040516104bb80620026df833901808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080156200000057600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663437f5b656000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b15620000005760325a03f1156200000057505050604051805190501515620002935762000000565b83600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c3a6ae06000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b15620000005760325a03f1156200000057505050604051805190501515620003825762000000565b5b505050505b61234780620003986000396000f3006060604052361561019f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101b157806308e496ea14610247578063095ea7b31461026a57806318160ddd146102be5780631865c57d146102e15780631afaa8bf1461030f5780631ed692c0146103325780631f97c00e1461034157806323b872dd146103645780632e4c4a9f146103d7578063313ce567146103fa57806345977d031461041d578063590e1ae31461043a5780635de4ccb014610449578063600440cb1461049857806368f67330146104e757806370a082311461050e5780638a9cb361146105555780638cc5cde2146105785780638e73d42c1461059f57806391b43d13146105ee57806395d89b4114610611578063a9059cbb146106a7578063c039daf6146106fb578063c752ff621461071e578063d648a64714610741578063d7e7088a14610764578063dd62ed3e14610797578063efc81a8c146107fd578063f03b0c0b14610807578063f4660ff51461083a578063f856d60514610889578063ffeb7d75146108ac575b34610000576101af5b610000565b565b005b34610000576101be6108df565b604051808060200182810382528381815181526020019150805190602001908083836000831461020d575b80518252602083111561020d576020820191506020810190506020830392506101e9565b505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610254610919565b6040518082815260200191505060405180910390f35b34610000576102a4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061091e565b604051808215151515815260200191505060405180910390f35b34610000576102cb610a37565b6040518082815260200191505060405180910390f35b34610000576102ee610a3d565b6040518082600381116100005760ff16815260200191505060405180910390f35b346100005761031c610adc565b6040518082815260200191505060405180910390f35b346100005761033f610ae1565b005b346100005761034e610e92565b6040518082815260200191505060405180910390f35b34610000576103bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610eaa565b604051808215151515815260200191505060405180910390f35b34610000576103e46112be565b6040518082815260200191505060405180910390f35b34610000576104076112c3565b6040518082815260200191505060405180910390f35b346100005761043860048080359060200190919050506112c8565b005b3461000057610447611610565b005b3461000057610456611784565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610000576104a56117aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610000576104f46117d0565b604051808215151515815260200191505060405180910390f35b346100005761053f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117e3565b6040518082815260200191505060405180910390f35b346100005761056261182d565b6040518082815260200191505060405180910390f35b3461000057610585611832565b604051808215151515815260200191505060405180910390f35b34610000576105ac611845565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34610000576105fb61186b565b6040518082815260200191505060405180910390f35b346100005761061e611871565b604051808060200182810382528381815181526020019150805190602001908083836000831461066d575b80518252602083111561066d57602082019150602081019050602083039250610649565b505050905090810190601f1680156106995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576106e1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118ab565b604051808215151515815260200191505060405180910390f35b3461000057610708611b01565b6040518082815260200191505060405180910390f35b346100005761072b611b19565b6040518082815260200191505060405180910390f35b346100005761074e611b1f565b6040518082815260200191505060405180910390f35b3461000057610795600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b25565b005b34610000576107e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e31565b6040518082815260200191505060405180910390f35b610805611eb9565b005b3461000057610838600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612011565b005b3461000057610847612140565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3461000057610896612166565b6040518082815260200191505060405180910390f35b34610000576108dd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061216b565b005b604060405190810160405280600b81526020017f4c756e797220546f6b656e00000000000000000000000000000000000000000081525081565b600f81565b600060026003811161000057610932610a3d565b600381116100005714151561094657610000565b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60005481565b6000600760009054906101000a900460ff1615610a5d5760029050610ad9565b600854431015610a705760009050610ad9565b6009544311158015610a975750610a926934f086f3b33b68400000602c612256565b600054105b15610aa55760019050610ad9565b610aba69054b40b1f852bda00000602c612256565b600054101515610acd5760029050610ad9565b60039050610ad9565b5b5b5b90565b604e81565b6000600060026003811161000057610af7610a3d565b6003811161000057141515610b0b57610000565b600760009054906101000a900460ff1615610b2557610000565b6001600760006101000a81548160ff021916908315150217905550610b57610b50600054600f612256565b604e612288565b9150610bc460026000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836122c5565b60026000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3610cb2610cab6000546007612256565b604e612288565b9050610d1f60026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826122c5565b60026000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3610e0b610e05600054846122c5565b826122c5565b600081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051809050600060405180830381858888f193505050501515610e8d57610000565b5b5050565b610ea76934f086f3b33b68400000602c612256565b81565b600060026003811161000057610ebe610a3d565b6003811161000057141515610ed257610000565b60008373ffffffffffffffffffffffffffffffffffffffff161415610ef657610000565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f5157610000565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561101c575081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156112ad5761106a600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836122c5565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110f6600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836122f1565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111bf600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836122f1565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506112b7565b600090506112b7565b5b9392505050565b600781565b601281565b600260038111610000576112da610a3d565b60038111610000571415156112ee57610000565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b156100005760325a03f115610000575050506040518051905073ffffffffffffffffffffffffffffffffffffffff1614156113b057610000565b60008114156113be57610000565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561140a57610000565b611453600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826122f1565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114a2600054826122f1565b6000819055506114b4600654826122c5565b600681905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663753e88e533836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b156100005760325a03f11561000057505050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac836040518082815260200191505060405180910390a35b50565b6000600060036003811161000057611626610a3d565b600381116100005714151561163a57610000565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082141561168a57610000565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116db600054836122f1565b6000819055506116ec82602c612288565b90503373ffffffffffffffffffffffffffffffffffffffff167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d826040518082815260200191505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f19350505050151561177f57610000565b5b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b606481565b600160009054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b604060405190810160405280600381526020017f4c554e000000000000000000000000000000000000000000000000000000000081525081565b60006000600260038111610000576118c1610a3d565b60038111610000571415156118d557610000565b60008473ffffffffffffffffffffffffffffffffffffffff1614156118f957610000565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561195457610000565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101580156119a65750600083115b15611af5576119b581846122f1565b905080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a44600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846122c5565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150611afa565b600091505b5092915050565b611b1669054b40b1f852bda00000602c612256565b81565b60065481565b60085481565b60026003811161000057611b37610a3d565b6003811161000057141515611b4b57610000565b60008173ffffffffffffffffffffffffffffffffffffffff161415611b6f57610000565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bcb57610000565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611caf5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637529b1d96000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b156100005760325a03f11561000057505050604051805190505b15611cb957610000565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634b2ba0dd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519050141515611da857610000565b7f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b600060016003811161000057611ecd610a3d565b6003811161000057141515611ee157610000565b6000341415611eef57610000565b611efa34602c612256565b9050611f08600054826122c5565b600081905550611f236934f086f3b33b68400000602c612256565b6000541115611f3157610000565b611f7a600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826122c5565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b50565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561206f57610000565b8190508073ffffffffffffffffffffffffffffffffffffffff16634c3a6ae06000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b156100005760325a03f115610000575050506040518051905015156120fa57610000565b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602c81565b6002600381116100005761217d610a3d565b600381116100005714151561219157610000565b60008173ffffffffffffffffffffffffffffffffffffffff1614156121b557610000565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561221157610000565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60006000828402905061227d6000851480612278575083858381156100005704145b61230b565b8091505b5092915050565b600060006122986000841161230b565b82848115610000570490506122ba83858115610000570682850201851461230b565b8091505b5092915050565b6000600082840190506122e68482101580156122e15750838210155b61230b565b8091505b5092915050565b60006122ff8383111561230b565b81830390505b92915050565b80151561231757610000565b5b505600a165627a7a723058207b6fb3ff6e14170866a3f37ce121d48dacc92a81b125d224f8dbe19b55290f24002960606040526000600060006101000a81548160ff02191690831515021790555034610000576040516020806104bb833981016040528080519060200190919050505b60008173ffffffffffffffffffffffffffffffffffffffff16141561006557610000565b33600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600060006101000a81548160ff021916908315150217905550610122436210f34961012f640100000000026102c6176401000000009004565b6002819055505b5061017e565b60006000828401905061016384821015801561014b5750838210155b61016e640100000000026102f2176401000000009004565b8091505b5092915050565b80151561017a57610000565b5b50565b61032e8061018d6000396000f30060606040523615610055576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063437f5b65146100675780634e724f0f1461008e578063a69df4b5146100b1575b34610000576100655b610000565b565b005b34610000576100746100c0565b604051808215151515815260200191505060405180910390f35b346100005761009b6100d3565b6040518082815260200191505060405180910390f35b34610000576100be6100da565b005b600060009054906101000a900460ff1681565b6210f34981565b6002544310156100e957610000565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b156100005760325a03f11561000057505050604051805190506000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050506040518051905015156102c357610000565b5b565b6000600082840190506102e78482101580156102e25750838210155b6102f2565b8091505b5092915050565b8015156102fe57610000565b5b505600a165627a7a72305820559b1c66bc91160e531d05ea0b34b5cf1969408d1ba4f5a5eaa1866bfe2ef5f2002900000000000000000000000083c54a35e72ae07c46fc8f8f172a13ba19ac3bed00000000000000000000000083c54a35e72ae07c46fc8f8f172a13ba19ac3bed00000000000000000000000000000000000000000000000000000000003480780000000000000000000000000000000000000000000000000000000000372378

    Constructor Arguments (ABI-encoded and appended to the ByteCode above)
00000000000000000000000083c54a35e72ae07c46fc8f8f172a13ba19ac3bed00000000000000000000000083c54a35e72ae07c46fc8f8f172a13ba19ac3bed00000000000000000000000000000000000000000000000000000000003480780000000000000000000000000000000000000000000000000000000000372378

-----Decoded View---------------
Found 4 constructor arguments :
Arg [0] : 00000000000000000000000083c54a35e72ae07c46fc8f8f172a13ba19ac3bed
Arg [1] : 00000000000000000000000083c54a35e72ae07c46fc8f8f172a13ba19ac3bed
Arg [2] : 0000000000000000000000000000000000000000000000000000000000348078
Arg [3] : 0000000000000000000000000000000000000000000000000000000000372378


   Swarm Source:
bzzr://559b1c66bc91160e531d05ea0b34b5cf1969408d1ba4f5a5eaa1866bfe2ef5f2
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.