ETH Price: $2,945.39 (-2.29%)
Gas: 3 Gwei

Contract

0x957c30aB0426e0C93CD8241E2c60392d08c6aC8e
 
Transaction Hash
Method
Block
From
To
Value
0xa3c0aa476a6bdcc2baed92016eebc1a14ac8e6e7d19b93ae9e25a7dd41dc6accTransfer(pending)2024-05-12 18:48:504 days ago1715539730IN
Modum: MOD Token
0 ETH(Pending)(Pending)
Approve198869572024-05-17 3:16:471 hr ago1715915807IN
Modum: MOD Token
0 ETH0.000147213.1546962
Transfer197571472024-04-28 23:39:1118 days ago1714347551IN
Modum: MOD Token
0 ETH0.000412485.66917878
Transfer197404142024-04-26 15:27:1120 days ago1714145231IN
Modum: MOD Token
0 ETH0.000678639.98755262
Transfer196872162024-04-19 4:50:2328 days ago1713502223IN
Modum: MOD Token
0 ETH0.000712839.79541295
Transfer196852222024-04-18 22:08:2328 days ago1713478103IN
Modum: MOD Token
0 ETH0.000374857.39997573
Transfer196573032024-04-15 0:20:4732 days ago1713140447IN
Modum: MOD Token
0 ETH0.0008166511.22209334
Transfer196115282024-04-08 14:24:4738 days ago1712586287IN
Modum: MOD Token
0 ETH0.0025824838
Transfer195623642024-04-01 17:07:5945 days ago1711991279IN
Modum: MOD Token
0 ETH0.0024055935.46614641
Transfer195454012024-03-30 7:50:2347 days ago1711785023IN
Modum: MOD Token
0 ETH0.0009251418.23739351
Transfer194460062024-03-16 7:34:2361 days ago1710574463IN
Modum: MOD Token
0 ETH0.0022688331.17725018
Approve194419822024-03-15 17:58:2362 days ago1710525503IN
Modum: MOD Token
0 ETH0.001433430.99595344
Transfer194215552024-03-12 21:02:1165 days ago1710277331IN
Modum: MOD Token
0 ETH0.0040894460.17429059
Transfer193923612024-03-08 18:53:2369 days ago1709924003IN
Modum: MOD Token
0 ETH0.0045720567.40666145
Approve193881422024-03-08 4:43:5970 days ago1709873039IN
Modum: MOD Token
0 ETH0.0023292650.302732
Transfer193865182024-03-07 23:16:3570 days ago1709853395IN
Modum: MOD Token
0 ETH0.0044597161.2935268
Transfer193832362024-03-07 12:16:2370 days ago1709813783IN
Modum: MOD Token
0 ETH0.0032021247.10951075
Approve193082682024-02-26 0:48:2381 days ago1708908503IN
Modum: MOD Token
0 ETH0.0005999924.50038854
Approve193082642024-02-26 0:47:3581 days ago1708908455IN
Modum: MOD Token
0 ETH0.0011132423.88688299
Transfer189738442024-01-10 3:23:47128 days ago1704857027IN
Modum: MOD Token
0 ETH0.002463133.84686753
Approve189096072024-01-01 2:24:59137 days ago1704075899IN
Modum: MOD Token
0 ETH0.0005391811.55445923
Approve189065452023-12-31 16:07:35137 days ago1704038855IN
Modum: MOD Token
0 ETH0.0007727316.58054998
Approve188581222023-12-24 20:52:59144 days ago1703451179IN
Modum: MOD Token
0 ETH0.0005457122.59511423
Transfer188370342023-12-21 21:50:47147 days ago1703195447IN
Modum: MOD Token
0 ETH0.001853136.58213054
Transfer187837022023-12-14 10:10:59154 days ago1702548659IN
Modum: MOD Token
0 ETH0.0027784440.88358224
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.