ETH Price: $3,422.74 (+3.26%)

Token

Modum Token (MOD)
 

Overview

Max Total Supply

21,266,200 MOD

Holders

12,239 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Filtered by Token Holder
EtherDelta 2
Balance
109,638 MOD

Value
$0.00
0x8d12a197cb00d4747a1fe03395095ce2a5cc6819
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

modum.io combines IoT sensors with blockchain technology, providing data integrity for transactions involving physical products.

ICO Information

ICO Start Date : Sep 01, 2017   
ICO End Date : Sep 22, 2017
Total Raised : $13,350,000
ICO Price  : $1.0 | 0.002555
Bonus : Presale: 50%
Country : Switzerland

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ModumToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.14;

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

//Interface declaration from: https://github.com/ethereum/eips/issues/20
contract ERC20Interface {
    //from: https://github.com/OpenZeppelin/zeppelin-solidity/blob/b395b06b65ce35cac155c13d01ab3fc9d42c5cfb/contracts/token/ERC20Basic.sol
    uint256 public totalSupply; //tokens that can vote, transfer, receive dividend
    function balanceOf(address who) public constant returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    //from: https://github.com/OpenZeppelin/zeppelin-solidity/blob/b395b06b65ce35cac155c13d01ab3fc9d42c5cfb/contracts/token/ERC20.sol
    function allowance(address owner, address spender) public constant returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ModumToken is ERC20Interface {

    using SafeMath for uint256;

    address public owner;

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

    enum UpdateMode{Wei, Vote, Both} //update mode for the account
    struct Account {
        uint256 lastProposalStartTime; //For checking at which proposal valueModVote was last updated
        uint256 lastAirdropWei; //For checking after which airDrop bonusWei was last updated
        uint256 lastAirdropClaimTime; //for unclaimed airdrops, re-airdrop
        uint256 bonusWei;      //airDrop/Dividend payout available for withdrawal.
        uint256 valueModVote;  // votes available for voting on active Proposal
        uint256 valueMod;      // the owned tokens
    }
    mapping(address => Account) public accounts;

    //Airdorp
    uint256 public totalDropPerUnlockedToken = 0;     //totally airdropped eth per unlocked token
    uint256 public rounding = 0;                      //airdrops not accounted yet to make system rounding error proof

    //Token locked/unlocked - totalSupply/max
    uint256 public lockedTokens = 9 * 1100 * 1000;   //token that need to be unlocked by voting
    uint256 public constant maxTokens = 30 * 1000 * 1000;      //max distributable tokens

    //minting phase running if false, true otherwise. Many operations can only be called when
    //minting phase is over
    bool public mintDone = false;
    uint256 public constant redistributionTimeout = 548 days; //18 month

    //as suggested in https://theethereum.wiki/w/index.php/ERC20_Token_Standard
    string public constant name = "Modum Token";
    string public constant symbol = "MOD";
    uint8 public constant decimals = 0;

    //Voting
    struct Proposal {
        string addr;        //Uri for more info
        bytes32 hash;       //Hash of the uri content for checking
        uint256 valueMod;      //token to unlock: proposal with 0 amount is invalid
        uint256 startTime;
        uint256 yay;
        uint256 nay;
    }
    Proposal public currentProposal;
    uint256 public constant votingDuration = 2 weeks;
    uint256 public lastNegativeVoting = 0;
    uint256 public constant blockingDuration = 90 days;

    event Voted(address _addr, bool option, uint256 votes); //called when a vote is casted
    event Payout(uint256 weiPerToken); //called when an someone payed ETHs to this contract, that can be distributed

    function ModumToken() public {
        owner = msg.sender;
    }

    /**
     * In case an owner account gets compromised, it should be possible to move control
     * over to another account. This helps in cases like the Parity multisig exploit: As
     * soon as an exploit becomes known, the affected parties might have a small time
     * window before being attacked.
     */
    function transferOwnership(address _newOwner) public {
        require(msg.sender == owner);
        require(_newOwner != address(0));
        owner = _newOwner;
    }

    //*************************** Voting *****************************************
    /*
     * In addition to the the vode with address/URL and its hash, we also set the value
     * of tokens to be transfered from the locked tokens to the modum account.
     */
    function votingProposal(string _addr, bytes32 _hash, uint256 _value) public {
        require(msg.sender == owner); // proposal ony by onwer
        require(!isProposalActive()); // no proposal is active, cannot vote in parallel
        require(_value <= lockedTokens); //proposal cannot be larger than remaining locked tokens
        require(_value > 0); //there needs to be locked tokens to make proposal, at least 1 locked token
        require(_hash != bytes32(0)); //hash need to be set
        require(bytes(_addr).length > 0); //the address need to be set and non-empty
        require(mintDone); //minting phase needs to be over
        //in case of negative vote, wait 90 days. If no lastNegativeVoting have
        //occured, lastNegativeVoting is 0 and now is always larger than 14.1.1970
        //(1.1.1970 plus blockingDuration).
        require(now >= lastNegativeVoting.add(blockingDuration));

        currentProposal = Proposal(_addr, _hash, _value, now, 0, 0);
    }

    function vote(bool _vote) public returns (uint256) {
        require(isVoteOngoing()); // vote needs to be ongoing
        Account storage account = updateAccount(msg.sender, UpdateMode.Vote);
        uint256 votes = account.valueModVote; //available votes
        require(votes > 0); //voter must have a vote left, either by not voting yet, or have modum tokens

        if(_vote) {
            currentProposal.yay = currentProposal.yay.add(votes);
        }
        else {
            currentProposal.nay = currentProposal.nay.add(votes);
        }

        account.valueModVote = 0;
        Voted(msg.sender, _vote, votes);
        return votes;
    }

    function showVotes(address _addr) public constant returns (uint256) {
        Account memory account = accounts[_addr];
        if(account.lastProposalStartTime < currentProposal.startTime || // the user did set his token power yet
            (account.lastProposalStartTime == 0 && currentProposal.startTime == 0)) {
            return account.valueMod;
        }
        return account.valueModVote;
    }

    // The voting can be claimed by the owner of this contract
    function claimVotingProposal() public {
        require(msg.sender == owner); //only owner can claim proposal
        require(isProposalActive()); // proposal active
        require(isVotingPhaseOver()); // voting has already ended

        if(currentProposal.yay > currentProposal.nay && currentProposal.valueMod > 0) {
            //Vote was accepted
            Account storage account = updateAccount(owner, UpdateMode.Both);
            uint256 valueMod = currentProposal.valueMod;
            account.valueMod = account.valueMod.add(valueMod); //add tokens to owner
            totalSupply = totalSupply.add(valueMod);
            lockedTokens = lockedTokens.sub(valueMod);
        } else if(currentProposal.yay <= currentProposal.nay) {
            //in case of a negative vote, set the time of this negative
            //vote to the end of the negative voting period.
            //This will prevent any new voting to be conducted.
            lastNegativeVoting = currentProposal.startTime.add(votingDuration);
        }
        delete currentProposal; //proposal ended
    }

    function isProposalActive() public constant returns (bool)  {
        return currentProposal.hash != bytes32(0);
    }

    function isVoteOngoing() public constant returns (bool)  {
        return isProposalActive()
            && now >= currentProposal.startTime
            && now < currentProposal.startTime.add(votingDuration);
        //its safe to use it for longer periods:
        //https://ethereum.stackexchange.com/questions/6795/is-block-timestamp-safe-for-longer-time-periods
    }

    function isVotingPhaseOver() public constant returns (bool)  {
        //its safe to use it for longer periods:
        //https://ethereum.stackexchange.com/questions/6795/is-block-timestamp-safe-for-longer-time-periods
        return now >= currentProposal.startTime.add(votingDuration);
    }

    //*********************** Minting *****************************************
    function mint(address[] _recipient, uint256[] _value) public {
        require(msg.sender == owner); //only owner can claim proposal
        require(!mintDone); //only during minting
        //require(_recipient.length == _value.length); //input need to be of same size
        //we know what we are doing... remove check to save gas

        //we want to mint a couple of accounts
        for (uint8 i=0; i<_recipient.length; i++) {
            
            //require(lockedTokens.add(totalSupply).add(_value[i]) <= maxTokens);
            //do the check in the mintDone

            //121 gas can be saved by creating temporary variables
            address tmpRecipient = _recipient[i];
            uint tmpValue = _value[i];

            //no need to update account, as we have not set minting to true. This means
            //nobody can start a proposal (isVoteOngoing() is always false) and airdrop
            //cannot be done either totalDropPerUnlockedToken is 0 thus, bonus is always
            //zero.
            Account storage account = accounts[tmpRecipient];
            account.valueMod = account.valueMod.add(tmpValue);
            //if this remains 0, we cannot calculate the time period when the user claimed
            //his airdrop, thus, set it to now
            account.lastAirdropClaimTime = now;
            totalSupply = totalSupply.add(tmpValue); //create the tokens and add to recipient
            Transfer(msg.sender, tmpRecipient, tmpValue);
        }
    }

    function setMintDone() public {
        require(msg.sender == owner);
        require(!mintDone); //only in minting phase
        //here we check that we never exceed the 30mio max tokens. This includes
        //the locked and the unlocked tokens.
        require(lockedTokens.add(totalSupply) <= maxTokens);
        mintDone = true; //end the minting
    }

    //updates an account for voting or airdrop or both. This is required to be able to fix the amount of tokens before
    //a vote or airdrop happend.
    function updateAccount(address _addr, UpdateMode mode) internal returns (Account storage){
        Account storage account = accounts[_addr];
        if(mode == UpdateMode.Vote || mode == UpdateMode.Both) {
            if(isVoteOngoing() && account.lastProposalStartTime < currentProposal.startTime) {// the user did set his token power yet
                account.valueModVote = account.valueMod;
                account.lastProposalStartTime = currentProposal.startTime;
            }
        }

        if(mode == UpdateMode.Wei || mode == UpdateMode.Both) {
            uint256 bonus = totalDropPerUnlockedToken.sub(account.lastAirdropWei);
            if(bonus != 0) {
                account.bonusWei = account.bonusWei.add(bonus.mul(account.valueMod));
                account.lastAirdropWei = totalDropPerUnlockedToken;
            }
        }

        return account;
    }

    //*********************** Airdrop ************************************************
    //default function to pay bonus, anybody that sends eth to this contract will distribute the wei
    //to their token holders
    //Dividend payment / Airdrop
    function() public payable {
        require(mintDone); //minting needs to be over
        require(msg.sender == owner); //ETH payment need to be one-way only, from modum to tokenholders, confirmed by Lykke
        payout(msg.value);
    }
    
    //anybody can pay and add address that will be checked if they
    //can be added to the bonus
    function payBonus(address[] _addr) public payable {
        require(msg.sender == owner);  //ETH payment need to be one-way only, from modum to tokenholders, confirmed by Lykke
        uint256 totalWei = 0;
        for (uint8 i=0; i<_addr.length; i++) {
            Account storage account = updateAccount(_addr[i], UpdateMode.Wei);
            if(now >= account.lastAirdropClaimTime + redistributionTimeout) {
                totalWei += account.bonusWei;
                account.bonusWei = 0;
                account.lastAirdropClaimTime = now;
            } else {
                revert();
            }
        }
        payout(msg.value.add(totalWei));
    }
    
    function payout(uint256 valueWei) internal {
        uint256 value = valueWei.add(rounding); //add old rounding
        rounding = value % totalSupply; //ensure no rounding error
        uint256 weiPerToken = value.sub(rounding).div(totalSupply);
        totalDropPerUnlockedToken = totalDropPerUnlockedToken.add(weiPerToken); //account for locked tokens and add the drop
        Payout(weiPerToken);
    }

    function showBonus(address _addr) public constant returns (uint256) {
        uint256 bonus = totalDropPerUnlockedToken.sub(accounts[_addr].lastAirdropWei);
        if(bonus != 0) {
            return accounts[_addr].bonusWei.add(bonus.mul(accounts[_addr].valueMod));
        }
        return accounts[_addr].bonusWei;
    }

    function claimBonus() public returns (uint256) {
        require(mintDone); //minting needs to be over

        Account storage account = updateAccount(msg.sender, UpdateMode.Wei);
        uint256 sendValue = account.bonusWei; //fetch the values

        if(sendValue != 0) {
            account.bonusWei = 0; //set to zero (before, against reentry)
            account.lastAirdropClaimTime = now; //mark as collected now
            msg.sender.transfer(sendValue); //send the bonus to the correct account
            return sendValue;
        }
        return 0;
    }

    //****************************** ERC20 ************************************

    // Get the account balance of another account with address _owner
    function balanceOf(address _owner) public constant returns (uint256 balance) {
        return accounts[_owner].valueMod;
    }

    // Send _value amount of tokens to address _to
    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(mintDone);
        require(_value > 0);
        Account memory tmpFrom = accounts[msg.sender];
        require(tmpFrom.valueMod >= _value);

        Account storage from = updateAccount(msg.sender, UpdateMode.Both);
        Account storage to = updateAccount(_to, UpdateMode.Both);
        from.valueMod = from.valueMod.sub(_value);
        to.valueMod = to.valueMod.add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    // Send _value amount of tokens from address _from to address _to
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(mintDone);
        require(_value > 0);
        Account memory tmpFrom = accounts[_from];
        require(tmpFrom.valueMod >= _value);
        require(allowed[_from][msg.sender] >= _value);

        Account storage from = updateAccount(_from, UpdateMode.Both);
        Account storage to = updateAccount(_to, UpdateMode.Both);
        from.valueMod = from.valueMod.sub(_value);
        to.valueMod = to.valueMod.add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    // ********************** approve, allowance, increaseApproval, and decreaseApproval used from:
    // https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/StandardToken.sol
    //
    // changed from uint to uint256 as this is considered to be best practice.

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public returns (bool) {
        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));

        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

    /*
     * approve should be called when allowed[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     */
    function increaseApproval(address _spender, uint256 _addedValue) public returns (bool success) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval(address _spender, uint256 _subtractedValue) public returns (bool success) {
        uint256 oldValue = allowed[msg.sender][_spender];
        if(_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
}

Contract Security Audit

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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"votingDuration","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":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":false,"inputs":[],"name":"claimVotingProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentProposal","outputs":[{"name":"addr","type":"string"},{"name":"hash","type":"bytes32"},{"name":"valueMod","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"yay","type":"uint256"},{"name":"nay","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rounding","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":"_addr","type":"address"}],"name":"showVotes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_vote","type":"bool"}],"name":"vote","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","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":"","type":"address"}],"name":"accounts","outputs":[{"name":"lastProposalStartTime","type":"uint256"},{"name":"lastAirdropWei","type":"uint256"},{"name":"lastAirdropClaimTime","type":"uint256"},{"name":"bonusWei","type":"uint256"},{"name":"valueModVote","type":"uint256"},{"name":"valueMod","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"_addr","type":"string"},{"name":"_hash","type":"bytes32"},{"name":"_value","type":"uint256"}],"name":"votingProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address[]"}],"name":"payBonus","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"isProposalActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","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":true,"inputs":[],"name":"redistributionTimeout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setMintDone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isVotingPhaseOver","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintDone","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"showBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastNegativeVoting","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_recipient","type":"address[]"},{"name":"_value","type":"uint256[]"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blockingDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDropPerUnlockedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isVoteOngoing","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"option","type":"bool"},{"indexed":false,"name":"votes","type":"uint256"}],"name":"Voted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"weiPerToken","type":"uint256"}],"name":"Payout","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"}]

606060405260006004819055600581905562970fe06006556007805460ff19169055600e55341561002f57600080fd5b60018054600160a060020a03191633600160a060020a0316179055611a1a806100596000396000f3006060604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610203578063095ea7b31461028d5780630eb34740146102c3578063132002fc146102e857806318160ddd146102fb57806323b872dd1461030e5780632877c748146103365780632b49d425146103495780632e4404031461040c578063313ce5671461041f5780633b81b785146104485780634b9f5c9814610467578063506353941461047f5780635c658165146104925780635e5c06e2146104b7578063661884631461050f57806370a0823114610531578063772e6f0314610550578063826efb6d146105a85780638672f1bc146105ec5780638da5cb5b146105ff57806395d89b411461062e578063a9059cbb14610641578063b54eb82214610663578063b5e8297514610676578063b5ee6f3d14610689578063bd0887241461069c578063cc70decb146106af578063d246a8c9146106ce578063d73dd623146106e1578063dd62ed3e14610703578063e467f7e014610728578063e8315742146107b7578063ea8eb4be146107ca578063ed343f65146107dd578063f247016c146107f0578063f2fde38b14610803575b60075460ff1615156101dd57600080fd5b60015433600160a060020a039081169116146101f857600080fd5b61020134610822565b005b341561020e57600080fd5b6102166108c4565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561025257808201518382015260200161023a565b50505050905090810190601f16801561027f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029857600080fd5b6102af600160a060020a03600435166024356108fb565b604051901515815260200160405180910390f35b34156102ce57600080fd5b6102d66109a1565b60405190815260200160405180910390f35b34156102f357600080fd5b6102d66109a7565b341561030657600080fd5b6102d66109ae565b341561031957600080fd5b6102af600160a060020a03600435811690602435166044356109b4565b341561034157600080fd5b610201610b7e565b341561035457600080fd5b61035c610ca5565b6040516020810186905260408101859052606081018490526080810183905260a0810182905260c0808252875460026101006001831615026000190190911604908201819052819060e0820190899080156103f85780601f106103cd576101008083540402835291602001916103f8565b820191906000526020600020905b8154815290600101906020018083116103db57829003601f168201915b505097505050505050505060405180910390f35b341561041757600080fd5b6102d6610cbe565b341561042a57600080fd5b610432610cc4565b60405160ff909116815260200160405180910390f35b341561045357600080fd5b6102d6600160a060020a0360043516610cc9565b341561047257600080fd5b6102d66004351515610d6d565b341561048a57600080fd5b6102d6610e3e565b341561049d57600080fd5b6102d6600160a060020a0360043581169060243516610ec1565b34156104c257600080fd5b6104d6600160a060020a0360043516610ede565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b341561051a57600080fd5b6102af600160a060020a0360043516602435610f1a565b341561053c57600080fd5b6102d6600160a060020a0360043516611014565b341561055b57600080fd5b61020160046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505084359460200135935061103292505050565b610201600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061114895505050505050565b34156105f757600080fd5b6102af6111ff565b341561060a57600080fd5b610612611208565b604051600160a060020a03909116815260200160405180910390f35b341561063957600080fd5b610216611217565b341561064c57600080fd5b6102af600160a060020a036004351660243561124e565b341561066e57600080fd5b6102d6611389565b341561068157600080fd5b610201611391565b341561069457600080fd5b6102af6113f2565b34156106a757600080fd5b6102af611413565b34156106ba57600080fd5b6102d6600160a060020a036004351661141c565b34156106d957600080fd5b6102d66114d7565b34156106ec57600080fd5b6102af600160a060020a03600435166024356114dd565b341561070e57600080fd5b6102d6600160a060020a0360043581169060243516611581565b341561073357600080fd5b6102016004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506115ac95505050505050565b34156107c257600080fd5b6102d66116cc565b34156107d557600080fd5b6102d66116d4565b34156107e857600080fd5b6102d66116db565b34156107fb57600080fd5b6102af6116e1565b341561080e57600080fd5b610201600160a060020a036004351661171e565b60008061083a6005548461177d90919063ffffffff16565b91506000548281151561084957fe5b0660058190556000546108739161086790859063ffffffff61179316565b9063ffffffff6117a516565b600454909150610889908263ffffffff61177d16565b6004557f22427047e1a674a9aff59700a2c8d00ea96e017ddf9236690bdedf1f21f28d9d8160405190815260200160405180910390a1505050565b60408051908101604052600b81527f4d6f64756d20546f6b656e000000000000000000000000000000000000000000602082015281565b600081158061092d5750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b151561093857600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60065481565b6212750081565b60005481565b60006109be6118d8565b600754600090819060ff1615156109d457600080fd5b600085116109e157600080fd5b600160a060020a038716600090815260036020526040908190209060c0905190810160409081528254825260018301546020830152600283015490820152600382015460608201526004820154608082015260059091015460a082019081529093508590511015610a5157600080fd5b600160a060020a038088166000908152600260209081526040808320339094168352929052205485901015610a8557600080fd5b610a908760026117bc565b9150610a9d8660026117bc565b6005830154909150610ab5908663ffffffff61179316565b600580840191909155810154610ad1908663ffffffff61177d16565b6005820155600160a060020a0380881660009081526002602090815260408083203390941683529290522054610b0d908663ffffffff61179316565b600160a060020a0380891660009081526002602090815260408083203385168085529252918290209390935590881691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9088905190815260200160405180910390a35060019695505050505050565b600154600090819033600160a060020a03908116911614610b9e57600080fd5b610ba66111ff565b1515610bb157600080fd5b610bb96113f2565b1515610bc457600080fd5b600d54600c54118015610bda5750600a54600090115b15610c4957600154610bf690600160a060020a031660026117bc565b600a5460058201549193509150610c13908263ffffffff61177d16565b6005830155600054610c2b908263ffffffff61177d16565b600055600654610c41908263ffffffff61179316565b600655610c6e565b600d54600c5411610c6e57600b54610c6a906212750063ffffffff61177d16565b600e555b60086000610c7c828261190f565b506000600182018190556002820181905560038201819055600482018190556005909101555050565b600954600a54600b54600c54600d546008949392919086565b60055481565b600081565b6000610cd36118d8565b600160a060020a038316600090815260036020526040908190209060c0905190810160409081528254825260018301546020830152600283015490820152600382015460608201526004820154608082015260059091015460a0820152600b5490915081511080610d4e57508051158015610d4e5750600b54155b15610d5f578060a001519150610d67565b806080015191505b50919050565b6000806000610d7a6116e1565b1515610d8557600080fd5b610d903360016117bc565b6004810154909250905060008111610da757600080fd5b8315610dc857600c54610dc0908263ffffffff61177d16565b600c55610ddf565b600d54610ddb908263ffffffff61177d16565b600d555b600060048301557f591a89b27b3057021df052ec15caa0a817c1894bcb52243ed0c8cdaa83f322be338583604051600160a060020a03909316835290151560208301526040808301919091526060909101905180910390a19392505050565b6007546000908190819060ff161515610e5657600080fd5b610e613360006117bc565b600381015490925090508015610eb75760006003830155426002830155600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610eaf57600080fd5b809250610ebc565b600092505b505090565b600260209081526000928352604080842090915290825290205481565b60036020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154905086565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205480831115610f7757600160a060020a033381166000908152600260209081526040808320938816835292905290812055610fae565b610f87818463ffffffff61179316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526003602052604090206005015490565b60015433600160a060020a0390811691161461104d57600080fd5b6110556111ff565b1561105f57600080fd5b60065481111561106e57600080fd5b6000811161107b57600080fd5b81151561108757600080fd5b600083511161109557600080fd5b60075460ff1615156110a657600080fd5b600e546110bc906276a70063ffffffff61177d16565b4210156110c857600080fd5b60c0604051908101604090815284825260208201849052810182905242606082015260006080820181905260a0820152600881518190805161110e929160200190611956565b506020820151600182015560408201518160020155606082015181600301556080820151816004015560a082015160059091015550505050565b6001546000908190819033600160a060020a0390811691161461116a57600080fd5b60009250600091505b83518260ff1610156111e1576111a2848360ff168151811061119157fe5b9060200190602002015160006117bc565b60028101549091506302d276000142106111d157600381018054600090915542600283015592909201916111d6565b600080fd5b600190910190611173565b6111f96111f4348563ffffffff61177d16565b610822565b50505050565b60095415155b90565b600154600160a060020a031681565b60408051908101604052600381527f4d4f440000000000000000000000000000000000000000000000000000000000602082015281565b60006112586118d8565b600754600090819060ff16151561126e57600080fd5b6000851161127b57600080fd5b600160a060020a033316600090815260036020526040908190209060c0905190810160409081528254825260018301546020830152600283015490820152600382015460608201526004820154608082015260059091015460a0820190815290935085905110156112eb57600080fd5b6112f63360026117bc565b91506113038660026117bc565b600583015490915061131b908663ffffffff61179316565b600580840191909155810154611337908663ffffffff61177d16565b6005820155600160a060020a038087169033167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405190815260200160405180910390a350600195945050505050565b6302d2760081565b60015433600160a060020a039081169116146113ac57600080fd5b60075460ff16156113bc57600080fd5b6301c9c3806113d860005460065461177d90919063ffffffff16565b11156113e357600080fd5b6007805460ff19166001179055565b600b5460009061140b906212750063ffffffff61177d16565b421015905090565b60075460ff1681565b600160a060020a038116600090815260036020526040812060010154600454829161144d919063ffffffff61179316565b905080156114b657600160a060020a0383166000908152600360205260409020600501546114af9061148690839063ffffffff6118b416565b600160a060020a038516600090815260036020819052604090912001549063ffffffff61177d16565b9150610d67565b5050600160a060020a03166000908152600360208190526040909120015490565b600e5481565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054611515908363ffffffff61177d16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60015460009081908190819033600160a060020a039081169116146115d057600080fd5b60075460ff16156115e057600080fd5b600093505b85518460ff1610156116c457858460ff168151811061160057fe5b906020019060200201519250848460ff168151811061161b57fe5b90602001906020020151600160a060020a038416600090815260036020526040902060058101549193509150611657908363ffffffff61177d16565b6005820155426002820155600054611675908363ffffffff61177d16565b600055600160a060020a038084169033167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a36001909301926115e5565b505050505050565b6301c9c38081565b6276a70081565b60045481565b60006116eb6111ff565b80156116f95750600b544210155b80156117195750600b54611716906212750063ffffffff61177d16565b42105b905090565b60015433600160a060020a0390811691161461173957600080fd5b600160a060020a038116151561174e57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282018381101561178c57fe5b9392505050565b60008282111561179f57fe5b50900390565b60008082848115156117b357fe5b04949350505050565b600160a060020a03821660009081526003602052604081208160018460028111156117e357fe5b14806117fa575060028460028111156117f857fe5b145b1561182a576118076116e1565b80156118155750600b548254105b1561182a5760058201546004830155600b5482555b600084600281111561183857fe5b148061184f5750600284600281111561184d57fe5b145b156118ac57600182015460045461186b9163ffffffff61179316565b905080156118ac5761189e61188d8360050154836118b490919063ffffffff16565b60038401549063ffffffff61177d16565b600383015560045460018301555b509392505050565b60008282028315806118d057508284828115156118cd57fe5b04145b151561178c57fe5b60c0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b50805460018160011615610100020316600290046000825580601f106119355750611953565b601f01602090049060005260206000209081019061195391906119d4565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061199757805160ff19168380011785556119c4565b828001600101855582156119c4579182015b828111156119c45782518255916020019190600101906119a9565b506119d09291506119d4565b5090565b61120591905b808211156119d057600081556001016119da5600a165627a7a723058206378abcfaefceadc69da8c6a5ce5584d9407c8c1b14d336a43049204bdd502450029

Deployed Bytecode

0x6060604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610203578063095ea7b31461028d5780630eb34740146102c3578063132002fc146102e857806318160ddd146102fb57806323b872dd1461030e5780632877c748146103365780632b49d425146103495780632e4404031461040c578063313ce5671461041f5780633b81b785146104485780634b9f5c9814610467578063506353941461047f5780635c658165146104925780635e5c06e2146104b7578063661884631461050f57806370a0823114610531578063772e6f0314610550578063826efb6d146105a85780638672f1bc146105ec5780638da5cb5b146105ff57806395d89b411461062e578063a9059cbb14610641578063b54eb82214610663578063b5e8297514610676578063b5ee6f3d14610689578063bd0887241461069c578063cc70decb146106af578063d246a8c9146106ce578063d73dd623146106e1578063dd62ed3e14610703578063e467f7e014610728578063e8315742146107b7578063ea8eb4be146107ca578063ed343f65146107dd578063f247016c146107f0578063f2fde38b14610803575b60075460ff1615156101dd57600080fd5b60015433600160a060020a039081169116146101f857600080fd5b61020134610822565b005b341561020e57600080fd5b6102166108c4565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561025257808201518382015260200161023a565b50505050905090810190601f16801561027f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029857600080fd5b6102af600160a060020a03600435166024356108fb565b604051901515815260200160405180910390f35b34156102ce57600080fd5b6102d66109a1565b60405190815260200160405180910390f35b34156102f357600080fd5b6102d66109a7565b341561030657600080fd5b6102d66109ae565b341561031957600080fd5b6102af600160a060020a03600435811690602435166044356109b4565b341561034157600080fd5b610201610b7e565b341561035457600080fd5b61035c610ca5565b6040516020810186905260408101859052606081018490526080810183905260a0810182905260c0808252875460026101006001831615026000190190911604908201819052819060e0820190899080156103f85780601f106103cd576101008083540402835291602001916103f8565b820191906000526020600020905b8154815290600101906020018083116103db57829003601f168201915b505097505050505050505060405180910390f35b341561041757600080fd5b6102d6610cbe565b341561042a57600080fd5b610432610cc4565b60405160ff909116815260200160405180910390f35b341561045357600080fd5b6102d6600160a060020a0360043516610cc9565b341561047257600080fd5b6102d66004351515610d6d565b341561048a57600080fd5b6102d6610e3e565b341561049d57600080fd5b6102d6600160a060020a0360043581169060243516610ec1565b34156104c257600080fd5b6104d6600160a060020a0360043516610ede565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b341561051a57600080fd5b6102af600160a060020a0360043516602435610f1a565b341561053c57600080fd5b6102d6600160a060020a0360043516611014565b341561055b57600080fd5b61020160046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505084359460200135935061103292505050565b610201600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061114895505050505050565b34156105f757600080fd5b6102af6111ff565b341561060a57600080fd5b610612611208565b604051600160a060020a03909116815260200160405180910390f35b341561063957600080fd5b610216611217565b341561064c57600080fd5b6102af600160a060020a036004351660243561124e565b341561066e57600080fd5b6102d6611389565b341561068157600080fd5b610201611391565b341561069457600080fd5b6102af6113f2565b34156106a757600080fd5b6102af611413565b34156106ba57600080fd5b6102d6600160a060020a036004351661141c565b34156106d957600080fd5b6102d66114d7565b34156106ec57600080fd5b6102af600160a060020a03600435166024356114dd565b341561070e57600080fd5b6102d6600160a060020a0360043581169060243516611581565b341561073357600080fd5b6102016004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506115ac95505050505050565b34156107c257600080fd5b6102d66116cc565b34156107d557600080fd5b6102d66116d4565b34156107e857600080fd5b6102d66116db565b34156107fb57600080fd5b6102af6116e1565b341561080e57600080fd5b610201600160a060020a036004351661171e565b60008061083a6005548461177d90919063ffffffff16565b91506000548281151561084957fe5b0660058190556000546108739161086790859063ffffffff61179316565b9063ffffffff6117a516565b600454909150610889908263ffffffff61177d16565b6004557f22427047e1a674a9aff59700a2c8d00ea96e017ddf9236690bdedf1f21f28d9d8160405190815260200160405180910390a1505050565b60408051908101604052600b81527f4d6f64756d20546f6b656e000000000000000000000000000000000000000000602082015281565b600081158061092d5750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b151561093857600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60065481565b6212750081565b60005481565b60006109be6118d8565b600754600090819060ff1615156109d457600080fd5b600085116109e157600080fd5b600160a060020a038716600090815260036020526040908190209060c0905190810160409081528254825260018301546020830152600283015490820152600382015460608201526004820154608082015260059091015460a082019081529093508590511015610a5157600080fd5b600160a060020a038088166000908152600260209081526040808320339094168352929052205485901015610a8557600080fd5b610a908760026117bc565b9150610a9d8660026117bc565b6005830154909150610ab5908663ffffffff61179316565b600580840191909155810154610ad1908663ffffffff61177d16565b6005820155600160a060020a0380881660009081526002602090815260408083203390941683529290522054610b0d908663ffffffff61179316565b600160a060020a0380891660009081526002602090815260408083203385168085529252918290209390935590881691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9088905190815260200160405180910390a35060019695505050505050565b600154600090819033600160a060020a03908116911614610b9e57600080fd5b610ba66111ff565b1515610bb157600080fd5b610bb96113f2565b1515610bc457600080fd5b600d54600c54118015610bda5750600a54600090115b15610c4957600154610bf690600160a060020a031660026117bc565b600a5460058201549193509150610c13908263ffffffff61177d16565b6005830155600054610c2b908263ffffffff61177d16565b600055600654610c41908263ffffffff61179316565b600655610c6e565b600d54600c5411610c6e57600b54610c6a906212750063ffffffff61177d16565b600e555b60086000610c7c828261190f565b506000600182018190556002820181905560038201819055600482018190556005909101555050565b600954600a54600b54600c54600d546008949392919086565b60055481565b600081565b6000610cd36118d8565b600160a060020a038316600090815260036020526040908190209060c0905190810160409081528254825260018301546020830152600283015490820152600382015460608201526004820154608082015260059091015460a0820152600b5490915081511080610d4e57508051158015610d4e5750600b54155b15610d5f578060a001519150610d67565b806080015191505b50919050565b6000806000610d7a6116e1565b1515610d8557600080fd5b610d903360016117bc565b6004810154909250905060008111610da757600080fd5b8315610dc857600c54610dc0908263ffffffff61177d16565b600c55610ddf565b600d54610ddb908263ffffffff61177d16565b600d555b600060048301557f591a89b27b3057021df052ec15caa0a817c1894bcb52243ed0c8cdaa83f322be338583604051600160a060020a03909316835290151560208301526040808301919091526060909101905180910390a19392505050565b6007546000908190819060ff161515610e5657600080fd5b610e613360006117bc565b600381015490925090508015610eb75760006003830155426002830155600160a060020a03331681156108fc0282604051600060405180830381858888f193505050501515610eaf57600080fd5b809250610ebc565b600092505b505090565b600260209081526000928352604080842090915290825290205481565b60036020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154905086565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205480831115610f7757600160a060020a033381166000908152600260209081526040808320938816835292905290812055610fae565b610f87818463ffffffff61179316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526003602052604090206005015490565b60015433600160a060020a0390811691161461104d57600080fd5b6110556111ff565b1561105f57600080fd5b60065481111561106e57600080fd5b6000811161107b57600080fd5b81151561108757600080fd5b600083511161109557600080fd5b60075460ff1615156110a657600080fd5b600e546110bc906276a70063ffffffff61177d16565b4210156110c857600080fd5b60c0604051908101604090815284825260208201849052810182905242606082015260006080820181905260a0820152600881518190805161110e929160200190611956565b506020820151600182015560408201518160020155606082015181600301556080820151816004015560a082015160059091015550505050565b6001546000908190819033600160a060020a0390811691161461116a57600080fd5b60009250600091505b83518260ff1610156111e1576111a2848360ff168151811061119157fe5b9060200190602002015160006117bc565b60028101549091506302d276000142106111d157600381018054600090915542600283015592909201916111d6565b600080fd5b600190910190611173565b6111f96111f4348563ffffffff61177d16565b610822565b50505050565b60095415155b90565b600154600160a060020a031681565b60408051908101604052600381527f4d4f440000000000000000000000000000000000000000000000000000000000602082015281565b60006112586118d8565b600754600090819060ff16151561126e57600080fd5b6000851161127b57600080fd5b600160a060020a033316600090815260036020526040908190209060c0905190810160409081528254825260018301546020830152600283015490820152600382015460608201526004820154608082015260059091015460a0820190815290935085905110156112eb57600080fd5b6112f63360026117bc565b91506113038660026117bc565b600583015490915061131b908663ffffffff61179316565b600580840191909155810154611337908663ffffffff61177d16565b6005820155600160a060020a038087169033167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405190815260200160405180910390a350600195945050505050565b6302d2760081565b60015433600160a060020a039081169116146113ac57600080fd5b60075460ff16156113bc57600080fd5b6301c9c3806113d860005460065461177d90919063ffffffff16565b11156113e357600080fd5b6007805460ff19166001179055565b600b5460009061140b906212750063ffffffff61177d16565b421015905090565b60075460ff1681565b600160a060020a038116600090815260036020526040812060010154600454829161144d919063ffffffff61179316565b905080156114b657600160a060020a0383166000908152600360205260409020600501546114af9061148690839063ffffffff6118b416565b600160a060020a038516600090815260036020819052604090912001549063ffffffff61177d16565b9150610d67565b5050600160a060020a03166000908152600360208190526040909120015490565b600e5481565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054611515908363ffffffff61177d16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60015460009081908190819033600160a060020a039081169116146115d057600080fd5b60075460ff16156115e057600080fd5b600093505b85518460ff1610156116c457858460ff168151811061160057fe5b906020019060200201519250848460ff168151811061161b57fe5b90602001906020020151600160a060020a038416600090815260036020526040902060058101549193509150611657908363ffffffff61177d16565b6005820155426002820155600054611675908363ffffffff61177d16565b600055600160a060020a038084169033167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a36001909301926115e5565b505050505050565b6301c9c38081565b6276a70081565b60045481565b60006116eb6111ff565b80156116f95750600b544210155b80156117195750600b54611716906212750063ffffffff61177d16565b42105b905090565b60015433600160a060020a0390811691161461173957600080fd5b600160a060020a038116151561174e57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008282018381101561178c57fe5b9392505050565b60008282111561179f57fe5b50900390565b60008082848115156117b357fe5b04949350505050565b600160a060020a03821660009081526003602052604081208160018460028111156117e357fe5b14806117fa575060028460028111156117f857fe5b145b1561182a576118076116e1565b80156118155750600b548254105b1561182a5760058201546004830155600b5482555b600084600281111561183857fe5b148061184f5750600284600281111561184d57fe5b145b156118ac57600182015460045461186b9163ffffffff61179316565b905080156118ac5761189e61188d8360050154836118b490919063ffffffff16565b60038401549063ffffffff61177d16565b600383015560045460018301555b509392505050565b60008282028315806118d057508284828115156118cd57fe5b04145b151561178c57fe5b60c0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b50805460018160011615610100020316600290046000825580601f106119355750611953565b601f01602090049060005260206000209081019061195391906119d4565b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061199757805160ff19168380011785556119c4565b828001600101855582156119c4579182015b828111156119c45782518255916020019190600101906119a9565b506119d09291506119d4565b5090565b61120591905b808211156119d057600081556001016119da5600a165627a7a723058206378abcfaefceadc69da8c6a5ce5584d9407c8c1b14d336a43049204bdd502450029

Swarm Source

bzzr://6378abcfaefceadc69da8c6a5ce5584d9407c8c1b14d336a43049204bdd50245
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.