ETH Price: $2,977.46 (+0.46%)
Gas: 0.03 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve221933412025-04-04 5:03:23260 days ago1743743003IN
0x00000000...91D289277
0 ETH0.000025550.55
Transfer221867532025-04-03 6:59:23261 days ago1743663563IN
0x00000000...91D289277
0 ETH0.000017310.58223788
Transfer221867512025-04-03 6:58:59261 days ago1743663539IN
0x00000000...91D289277
0 ETH0.000026190.55931225
Approve87196132019-10-11 9:35:312262 days ago1570786531IN
0x00000000...91D289277
0 ETH0.000030720.65

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vote

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-02-28
*/

pragma solidity ^0.4.20;// blaze it

interface ERC20 {
    function totalSupply() external constant returns (uint supply);
    function balanceOf(address _owner) external constant returns (uint balance);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint _value) external returns (bool success);
    function approve(address _spender, uint _value) external returns (bool success);
    function allowance(address _owner, address _spender) external constant returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}
contract TokenRescue {
    // use this method to rescue your tokens if you sent them by mistake but be quick or someone else will get them
    function rescueToken(ERC20 _token)
    external
    {
        _token.transfer(msg.sender, _token.balanceOf(this));
    }
    // require data for transactions
    function() external payable {
        revert();
    }
}
interface AccountRegistryInterface {
    function canVoteOnProposal(address _voter, address _proposal) external view returns (bool);
}
contract Vote is ERC20, TokenRescue {
    uint256 supply = 0;
    AccountRegistryInterface public accountRegistry = AccountRegistryInterface(0x000000002bb43c83eCe652d161ad0fa862129A2C);
    address public owner = 0x4a6f6B9fF1fc974096f9063a45Fd12bD5B928AD1;

    uint8 public constant decimals = 1;
    string public symbol = "FV";
    string public name = "FinneyVote";

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

    function totalSupply() external constant returns (uint256) {
        return supply;
    }
    function balanceOf(address _owner) external constant returns (uint256) {
        return balances[_owner];
    }
    function approve(address _spender, uint256 _value) external returns (bool) {
        approved[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }
    function allowance(address _owner, address _spender) external constant returns (uint256) {
        return approved[_owner][_spender];
    }
    function transfer(address _to, uint256 _value) external returns (bool) {
        if (balances[msg.sender] < _value) {
            return false;
        }
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        Transfer(msg.sender, _to, _value);
        return true;
    }
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool) {
        if (balances[_from] < _value
         || approved[_from][msg.sender] < _value
         || _value == 0) {
            return false;
        }
        approved[_from][msg.sender] -= _value;
        balances[_from] -= _value;
        balances[_to] += _value;
        Transfer(_from, _to, _value);
        return true;
    }
    function grant(address _to, uint256 _grant) external {
        require(msg.sender == address(accountRegistry));
        balances[_to] += _grant;
        supply += _grant;
        Transfer(address(0), _to, _grant);
    }
    // vote5 and vote1 are available for future use
    function vote5(address _voter, address _votee) external {
        require(balances[_voter] >= 10);
        require(accountRegistry.canVoteOnProposal(_voter, msg.sender));
        balances[_voter] -= 10;
        balances[owner] += 5;
        balances[_votee] += 5;
        Transfer(_voter, owner, 5);
        Transfer(_voter, _votee, 5);
    }
    function vote1(address _voter, address _votee) external {
        require(balances[_voter] >= 10);
        require(accountRegistry.canVoteOnProposal(_voter, msg.sender));
        balances[_voter] -= 10;
        balances[owner] += 9;
        balances[_votee] += 1;
        Transfer(_voter, owner, 9);
        Transfer(_voter, _votee, 1);
    }
    function vote9(address _voter, address _votee) external {
        require(balances[_voter] >= 10);
        require(accountRegistry.canVoteOnProposal(_voter, msg.sender));
        balances[_voter] -= 10;
        balances[owner] += 1;
        balances[_votee] += 9;
        Transfer(_voter, owner, 1);
        Transfer(_voter, _votee, 9);
    }
    modifier onlyOwner () {
        require(msg.sender == owner);
        _;
    }
    event Owner(address indexed owner);
    event Registry(address indexed registry);
    function transferOwnership(address _newOwner)
    external onlyOwner {
        uint256 balance = balances[owner];
        balances[_newOwner] += balance;
        balances[owner] = 0;
        Transfer(owner, _newOwner, balance);
        owner = _newOwner;
        Owner(_newOwner);
    }
    function migrateAccountRegistry(AccountRegistryInterface _newAccountRegistry)
    external onlyOwner {
        accountRegistry = _newAccountRegistry;
        Registry(_newAccountRegistry);
    }
}
interface ProposalInterface {
    /* uint8:
        enum Position {
            SKIP, // default
            APPROVE,
            REJECT,
            AMEND, // == (APPROVE | REJECT)
            LOL
            // more to be determined by community
        }
    */
    function getPosition(address _user) external view returns (uint8);
    function argumentCount() external view returns (uint256);
    function vote(uint256 _argumentId) external;
    // bytes could be:
    // utf8 string
    // swarm hash
    // ipfs hash
    // and others tbd
    event Case(bytes content);
}
contract ProperProposal is ProposalInterface, TokenRescue {
    struct Argument {
        address source;
        uint8 position;
        uint256 count;
    }
    Argument[] public arguments;
    mapping (address => uint256) public votes;
    Vote public constant voteToken = Vote(0x000000002647e16d9BaB9e46604D75591D289277);

    function getPosition(address _user)
    external view
    returns (uint8) {
        return arguments[votes[_user]].position;
    }

    function argumentCount() external view returns (uint256) {
        return arguments.length;
    }
    function argumentSource(uint256 _index)
    external view
    returns (address) {
        return arguments[_index].source;
    }

    function argumentPosition(uint256 _index)
    external view
    returns (uint8) {
        return arguments[_index].position;
    }

    function argumentVoteCount(uint256 _index)
    external view
    returns (uint256) {
        return arguments[_index].count;
    }

    function source()
    external view
    returns (address) {
        return arguments[0].source;
    }

    function voteCount()
    external view
    returns (uint256) {
        return -arguments[0].count;
    }

    function vote(uint256 _argumentId)
    external {
        address destination = arguments[_argumentId].source;
        voteToken.vote9(msg.sender, destination);
        arguments[votes[msg.sender]].count--;
        arguments[
            votes[msg.sender] = _argumentId
        ].count++;
    }

    event Case(bytes content);

    function argue(uint8 _position, bytes _text)
    external
    returns (uint256) {
        address destination = arguments[0].source;
        voteToken.vote9(msg.sender, destination);
        uint256 argumentId = arguments.length;
        arguments.push(Argument(msg.sender, _position, 1));
        Case(_text);
        arguments[votes[msg.sender]].count--;
        votes[msg.sender] = argumentId;
        return argumentId;
    }

    function init(address _source, bytes _resolution)
    external {
        assert(msg.sender == 0x000000002bb43c83eCe652d161ad0fa862129A2C);
        arguments.push(Argument(_source, 0/*SKIP*/, 0));
        Case(_resolution);
    }
}
interface CabalInterface {
    // TBD
    function canonCount() external view returns (uint256);
}
contract AccountRegistry is AccountRegistryInterface, TokenRescue {
    
    uint256 constant public registrationDeposit = 1 finney;
    uint256 constant public proposalCensorshipFee = 50 finney;

    // this is the first deterministic contract address for 0x24AE90765668938351075fB450892800d9A52E39
    address constant public burn = 0x000000003Ffc15cd9eA076d7ec40B8f516367Ca1;

    Vote public constant token = Vote(0x000000002647e16d9BaB9e46604D75591D289277);

    /* uint8 membership bitmap:
     * 0 - proposer
     * 1 - registered to vote
     * 2 - pending proposal
     * 3 - proposal
     * 4 - board member
     * 5 - pending cabal
     * 6 - cabal
     * 7 - board
     */
    uint8 constant UNCONTACTED = 0;
    uint8 constant PROPOSER = 1;
    uint8 constant VOTER = 2;
    uint8 constant PENDING_PROPOSAL = 4;
    uint8 constant PROPOSAL = 8;
    uint8 constant PENDING_CABAL = 16;
    uint8 constant CABAL = 32;
    uint8 constant BOARD = 64;
    struct Account {
        uint256 lastAccess;
        uint8 membership;
        address appointer;//nominated this account for BOARD
        address denouncer;//denounced this BOARD account
        address voucher;//nominated this account for PROPOSER
        address devoucher;//denounced this account for PROPOSER
    }
    mapping (address => Account) accounts;

    function AccountRegistry()
    public
    {
        accounts[0x4a6f6B9fF1fc974096f9063a45Fd12bD5B928AD1].membership = BOARD;
        Board(0x4a6f6B9fF1fc974096f9063a45Fd12bD5B928AD1);
        accounts[0x90Fa310397149A7a9058Ae2d56e66e707B12D3A7].membership = BOARD;
        Board(0x90Fa310397149A7a9058Ae2d56e66e707B12D3A7);
        accounts[0x424a6e871E8cea93791253B47291193637D6966a].membership = BOARD;
        Board(0x424a6e871E8cea93791253B47291193637D6966a);
        accounts[0xA4caDe6ecbed8f75F6fD50B8be92feb144400CC4].membership = BOARD;
        Board(0xA4caDe6ecbed8f75F6fD50B8be92feb144400CC4);
    }

    event Voter(address indexed voter);
    event Deregistered(address indexed voter);
    event Nominated(address indexed board, string endorsement);
    event Board(address indexed board);
    event Denounced(address indexed board, string reason);
    event Revoked(address indexed board);
    event Proposal(ProposalInterface indexed proposal);
    event Cabal(CabalInterface indexed cabal);
    event BannedProposal(ProposalInterface indexed proposal, string reason);
    event Vouch(address indexed proposer, string vouch);
    event Proposer(address indexed proposer);
    event Devouch(address indexed proposer, string vouch);
    event Shutdown(address indexed proposer);

    // To register a Cabal, you must
    // - implement CabalInterface
    // - open-source your Cabal on Etherscan or equivalent
    function registerCabal(CabalInterface _cabal)
    external {
        Account storage account = accounts[_cabal];
        require(account.membership & (PENDING_CABAL | CABAL) == 0);
        account.membership |= PENDING_CABAL;
    }

    function confirmCabal(CabalInterface _cabal)
    external {
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage account = accounts[_cabal];
        require(account.membership & PENDING_CABAL != 0);
        account.membership ^= (CABAL | PENDING_CABAL);
        Cabal(_cabal);
    }

    function register()
    external payable
    {
        require(msg.value == registrationDeposit);
        Account storage account = accounts[msg.sender];
        require(account.membership & VOTER == 0);
        account.lastAccess = now;
        account.membership |= VOTER;
        token.grant(msg.sender, 40);
        Voter(msg.sender);
    }

    // smart contracts must implement the fallback function in order to deregister
    function deregister()
    external
    {
        Account storage account = accounts[msg.sender];
        require(account.membership & VOTER != 0);
        require(account.lastAccess + 7 days <= now);
        account.membership ^= VOTER;
        account.lastAccess = 0;
        // the MANDATORY transfer keeps population() meaningful
        msg.sender.transfer(registrationDeposit);
        Deregistered(msg.sender);
    }

    function population()
    external view
    returns (uint256)
    {
        return this.balance / 1 finney;
    }

    function deregistrationDate()
    external view
    returns (uint256)
    {
        return accounts[msg.sender].lastAccess + 7 days;
    }

    // always true for deregistered accounts
    function canDeregister(address _voter)
    external view
    returns (bool)
    {
        return accounts[_voter].lastAccess + 7 days <= now;
    }

    function canVoteOnProposal(address _voter, address _proposal)
    external view
    returns (bool)
    {
        return accounts[_voter].membership & VOTER != 0
            && accounts[_proposal].membership & PROPOSAL != 0;
    }

    function canVote(address _voter)
    external view
    returns (bool)
    {
        return accounts[_voter].membership & VOTER != 0;
    }

    function isProposal(address _proposal)
    external view
    returns (bool)
    {
        return accounts[_proposal].membership & PROPOSAL != 0;
    }

    function isPendingProposal(address _proposal)
    external view
    returns (bool)
    {
        return accounts[_proposal].membership & PENDING_PROPOSAL != 0;
    }

    function isPendingCabal(address _account)
    external view
    returns (bool)
    {
        return accounts[_account].membership & PENDING_CABAL != 0;
    }

    function isCabal(address _account)
    external view
    returns (bool)
    {
        return accounts[_account].membership & CABAL != 0;
    }

    // under no condition should you let anyone control two BOARD accounts
    function appoint(address _board, string _vouch)
    external {
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage candidate = accounts[_board];
        if (candidate.membership & BOARD != 0) {
            return;
        }
        address appt = candidate.appointer;
        if (accounts[appt].membership & BOARD == 0) {
            candidate.appointer = msg.sender;
            Nominated(_board, _vouch);
            return;
        }
        if (appt == msg.sender) {
            return;
        }
        Nominated(_board, _vouch);
        candidate.membership |= BOARD;
        Board(_board);
    }

    function denounce(address _board, string _reason)
    external {
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage board = accounts[_board];
        if (board.membership & BOARD == 0) {
            return;
        }
        address dncr = board.denouncer;
        if (accounts[dncr].membership & BOARD == 0) {
            board.denouncer = msg.sender;
            Denounced(_board, _reason);
            return;
        }
        if (dncr == msg.sender) {
            return;
        }
        Denounced(_board, _reason);
        board.membership ^= BOARD;
        Revoked(_board);
    }

    function vouchProposer(address _proposer, string _vouch)
    external {
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage candidate = accounts[_proposer];
        if (candidate.membership & PROPOSER != 0) {
            return;
        }
        address appt = candidate.voucher;
        if (accounts[appt].membership & BOARD == 0) {
            candidate.voucher = msg.sender;
            Vouch(_proposer, _vouch);
            return;
        }
        if (appt == msg.sender) {
            return;
        }
        Vouch(_proposer, _vouch);
        candidate.membership |= PROPOSER;
        Proposer(_proposer);
    }

    function devouchProposer(address _proposer, string _devouch)
    external {
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage candidate = accounts[_proposer];
        if (candidate.membership & PROPOSER == 0) {
            return;
        }
        address appt = candidate.devoucher;
        if (accounts[appt].membership & BOARD == 0) {
            candidate.devoucher = msg.sender;
            Devouch(_proposer, _devouch);
            return;
        }
        if (appt == msg.sender) {
            return;
        }
        Devouch(_proposer, _devouch);
        candidate.membership &= ~PROPOSER;
        Shutdown(_proposer);
    }

    function proposeProper(bytes _resolution)
    external
    returns (ProposalInterface)
    {
        ProperProposal proposal = new ProperProposal();
        proposal.init(msg.sender, _resolution);
        accounts[proposal].membership |= PROPOSAL;
        Proposal(proposal);
        return proposal;
    }

    function proposeProxy(bytes _resolution)
    external
    returns (ProposalInterface)
    {
        ProperProposal proposal;
        bytes memory clone = hex"600034603b57602f80600f833981f3600036818037808036816f5fbe2cc9b1b684ec445caf176042348e5af415602c573d81803e3d81f35b80fd";
        assembly {
            let data := add(clone, 0x20)
            proposal := create(0, data, 58)
        }
        proposal.init(msg.sender, _resolution);
        accounts[proposal].membership |= PROPOSAL;
        Proposal(proposal);
        return proposal;
    }

    function sudoPropose(ProposalInterface _proposal)
    external {
        require(accounts[msg.sender].membership & PROPOSER != 0);
        uint8 membership = accounts[_proposal].membership;
        require(membership == 0);
        accounts[_proposal].membership = PROPOSAL;
        Proposal(_proposal);
    }

    // To submit an outside proposal contract, you must:
    // - ensure it conforms to ProposalInterface
    // - ensure it properly transfers the VOTE token, calling Vote.voteX
    // - open-source it using Etherscan or equivalent
    function proposeExternal(ProposalInterface _proposal)
    external
    {
        Account storage account = accounts[_proposal];
        require(account.membership & (PENDING_PROPOSAL | PROPOSAL) == 0);
        account.membership |= PENDING_PROPOSAL;
    }

    function confirmProposal(ProposalInterface _proposal)
    external
    {
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage account = accounts[_proposal];
        require(account.membership & PENDING_PROPOSAL != 0);
        account.membership ^= (PROPOSAL | PENDING_PROPOSAL);
        Proposal(_proposal);
    }

    // bans prevent accounts from voting through this proposal
    // this should only be used to stop a proposal that is abusing the VOTE token
    // the burn is to penalize bans, so that they cannot suppress ideas
    function banProposal(ProposalInterface _proposal, string _reason)
    external payable
    {
        require(msg.value == proposalCensorshipFee);
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage account = accounts[_proposal];
        require(account.membership & PROPOSAL != 0);
        account.membership &= ~PROPOSAL;
        burn.transfer(proposalCensorshipFee);
        BannedProposal(_proposal, _reason);
    }

    // board members reserve the right to reject outside proposals for any reason
    function rejectProposal(ProposalInterface _proposal)
    external
    {
        require(accounts[msg.sender].membership & BOARD != 0);
        Account storage account = accounts[_proposal];
        require(account.membership & PENDING_PROPOSAL != 0);
        account.membership &= PENDING_PROPOSAL;
    }

    // this code lives here instead of in the token so that it can be upgraded with account registry migration
    function faucet()
    external {
        Account storage account = accounts[msg.sender];
        require(account.membership & VOTER != 0);
        uint256 lastAccess = account.lastAccess;
        uint256 grant = (now - lastAccess) / 72 minutes;
        if (grant > 40) {
            grant = 40;
            account.lastAccess = now;
        } else {
            account.lastAccess = lastAccess + grant * 72 minutes;
        }
        token.grant(msg.sender, grant);
    }

    function availableFaucet(address _account)
    external view
    returns (uint256) {
        uint256 grant = (now - accounts[_account].lastAccess) / 72 minutes;
        if (grant > 40) {
            grant = 40;
        }
        return grant;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"rescueToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_grant","type":"uint256"}],"name":"grant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_voter","type":"address"},{"name":"_votee","type":"address"}],"name":"vote1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_voter","type":"address"},{"name":"_votee","type":"address"}],"name":"vote9","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accountRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_voter","type":"address"},{"name":"_votee","type":"address"}],"name":"vote5","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAccountRegistry","type":"address"}],"name":"migrateAccountRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"Owner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"registry","type":"address"}],"name":"Registry","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"}]

606060409081526000805560018054600160a060020a03199081166f2bb43c83ece652d161ad0fa862129a2c1790915560028054909116734a6f6b9ff1fc974096f9063a45fd12bd5b928ad11790558051908101604052600281527f4656000000000000000000000000000000000000000000000000000000000000602082015260039080516100939291602001906100ec565b5060408051908101604052600a81527f46696e6e6579566f746500000000000000000000000000000000000000000000602082015260049080516100db9291602001906100ec565b5034156100e757600080fd5b610187565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061012d57805160ff191683800117855561015a565b8280016001018555821561015a579182015b8281111561015a57825182559160200191906001019061013f565b5061016692915061016a565b5090565b61018491905b808211156101665760008155600101610170565b90565b610df2806101966000396000f3006060604052600436106100e25763ffffffff60e060020a60003504166306fdde0381146100e7578063095ea7b31461017157806318160ddd146101a757806323b872dd146101cc578063313ce567146101f45780634460d3cf1461021d5780636370920e1461023e5780636b11b20d1461026057806370a08231146102855780638b236271146102a45780638da5cb5b146102c957806395d89b41146102f8578063a9059cbb1461030b578063d089e11a1461032d578063da7b482714610340578063dd62ed3e14610365578063dec32e931461038a578063f2fde38b146103a9575b600080fd5b34156100f257600080fd5b6100fa6103c8565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561013657808201518382015260200161011e565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b610193600160a060020a0360043516602435610466565b604051901515815260200160405180910390f35b34156101b257600080fd5b6101ba6104d3565b60405190815260200160405180910390f35b34156101d757600080fd5b610193600160a060020a03600435811690602435166044356104d9565b34156101ff57600080fd5b6102076105b8565b60405160ff909116815260200160405180910390f35b341561022857600080fd5b61023c600160a060020a03600435166105bd565b005b341561024957600080fd5b61023c600160a060020a03600435166024356106a0565b341561026b57600080fd5b61023c600160a060020a0360043581169060243516610705565b341561029057600080fd5b6101ba600160a060020a0360043516610859565b34156102af57600080fd5b61023c600160a060020a0360043581169060243516610874565b34156102d457600080fd5b6102dc6109c8565b604051600160a060020a03909116815260200160405180910390f35b341561030357600080fd5b6100fa6109d7565b341561031657600080fd5b610193600160a060020a0360043516602435610a42565b341561033857600080fd5b6102dc610ac7565b341561034b57600080fd5b61023c600160a060020a0360043581169060243516610ad6565b341561037057600080fd5b6101ba600160a060020a0360043581169060243516610c27565b341561039557600080fd5b61023c600160a060020a0360043516610c52565b34156103b457600080fd5b61023c600160a060020a0360043516610cc7565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b505050505081565b600160a060020a03338116600081815260066020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005490565b600160a060020a038316600090815260056020526040812054829010806105265750600160a060020a03808516600090815260066020908152604080832033909416835292905220548290105b8061052f575081155b1561053c575060006105b1565b600160a060020a03808516600081815260066020908152604080832033861684528252808320805488900390558383526005909152808220805487900390559286168082529083902080548601905591600080516020610da78339815191529085905190815260200160405180910390a35060015b9392505050565b600181565b600160a060020a03811663a9059cbb33826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561061b57600080fd5b6102c65a03f1151561062c57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561068257600080fd5b6102c65a03f1151561069357600080fd5b5050506040518051505050565b60015433600160a060020a039081169116146106bb57600080fd5b600160a060020a038216600081815260056020526040808220805485019055815484018255600080516020610da78339815191529084905190815260200160405180910390a35050565b600160a060020a038216600090815260056020526040902054600a90101561072c57600080fd5b600154600160a060020a03166395156c96833360006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561078d57600080fd5b6102c65a03f1151561079e57600080fd5b5050506040518051905015156107b357600080fd5b600160a060020a038083166000818152600560205260408082208054600919019055600280548516835281832080546009908101909155868616845292829020805460010190555490931692600080516020610da783398151915291905190815260200160405180910390a380600160a060020a031682600160a060020a0316600080516020610da7833981519152600160405190815260200160405180910390a35050565b600160a060020a031660009081526005602052604090205490565b600160a060020a038216600090815260056020526040902054600a90101561089b57600080fd5b600154600160a060020a03166395156c96833360006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156108fc57600080fd5b6102c65a03f1151561090d57600080fd5b50505060405180519050151561092257600080fd5b600160a060020a038083166000818152600560205260408082208054600919019055600280548516835281832080546001908101909155868616845292829020805460090190555490931692600080516020610da783398151915291905190815260200160405180910390a380600160a060020a031682600160a060020a0316600080516020610da7833981519152600960405190815260200160405180910390a35050565b600254600160a060020a031681565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561045e5780601f106104335761010080835404028352916020019161045e565b600160a060020a03331660009081526005602052604081205482901015610a6b575060006104cd565b600160a060020a03338116600081815260056020526040808220805487900390559286168082529083902080548601905591600080516020610da78339815191529085905190815260200160405180910390a350600192915050565b600154600160a060020a031681565b600160a060020a038216600090815260056020526040902054600a901015610afd57600080fd5b600154600160a060020a03166395156c96833360006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b1515610b5e57600080fd5b6102c65a03f11515610b6f57600080fd5b505050604051805190501515610b8457600080fd5b600160a060020a03808316600081815260056020819052604080832080546009190190556002805486168452818420805484019055868616845292819020805483019055915490931692600080516020610da7833981519152915190815260200160405180910390a380600160a060020a031682600160a060020a0316600080516020610da7833981519152600560405190815260200160405180910390a35050565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b60025433600160a060020a03908116911614610c6d57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383169081179091557f77ef9581150690a5caca1de816c50c822d4ea88fb86fe334603379ec2d6f969760405160405180910390a250565b60025460009033600160a060020a03908116911614610ce557600080fd5b5060028054600160a060020a039081166000908152600560205260408082205485841680845282842080548301905585548516845282842093909355935491929190911690600080516020610da78339815191529084905190815260200160405180910390a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384169081179091557fa5e220c2c27d986cc8efeafa8f34ba6ea6bf96a34e146b29b6bdd8587771b13060405160405180910390a250505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058204db46905862241e5efc5adf6a266f4db261db49cec5d86d04bb87ef3ef408e2d0029

Deployed Bytecode

0x6060604052600436106100e25763ffffffff60e060020a60003504166306fdde0381146100e7578063095ea7b31461017157806318160ddd146101a757806323b872dd146101cc578063313ce567146101f45780634460d3cf1461021d5780636370920e1461023e5780636b11b20d1461026057806370a08231146102855780638b236271146102a45780638da5cb5b146102c957806395d89b41146102f8578063a9059cbb1461030b578063d089e11a1461032d578063da7b482714610340578063dd62ed3e14610365578063dec32e931461038a578063f2fde38b146103a9575b600080fd5b34156100f257600080fd5b6100fa6103c8565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561013657808201518382015260200161011e565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b610193600160a060020a0360043516602435610466565b604051901515815260200160405180910390f35b34156101b257600080fd5b6101ba6104d3565b60405190815260200160405180910390f35b34156101d757600080fd5b610193600160a060020a03600435811690602435166044356104d9565b34156101ff57600080fd5b6102076105b8565b60405160ff909116815260200160405180910390f35b341561022857600080fd5b61023c600160a060020a03600435166105bd565b005b341561024957600080fd5b61023c600160a060020a03600435166024356106a0565b341561026b57600080fd5b61023c600160a060020a0360043581169060243516610705565b341561029057600080fd5b6101ba600160a060020a0360043516610859565b34156102af57600080fd5b61023c600160a060020a0360043581169060243516610874565b34156102d457600080fd5b6102dc6109c8565b604051600160a060020a03909116815260200160405180910390f35b341561030357600080fd5b6100fa6109d7565b341561031657600080fd5b610193600160a060020a0360043516602435610a42565b341561033857600080fd5b6102dc610ac7565b341561034b57600080fd5b61023c600160a060020a0360043581169060243516610ad6565b341561037057600080fd5b6101ba600160a060020a0360043581169060243516610c27565b341561039557600080fd5b61023c600160a060020a0360043516610c52565b34156103b457600080fd5b61023c600160a060020a0360043516610cc7565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b505050505081565b600160a060020a03338116600081815260066020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005490565b600160a060020a038316600090815260056020526040812054829010806105265750600160a060020a03808516600090815260066020908152604080832033909416835292905220548290105b8061052f575081155b1561053c575060006105b1565b600160a060020a03808516600081815260066020908152604080832033861684528252808320805488900390558383526005909152808220805487900390559286168082529083902080548601905591600080516020610da78339815191529085905190815260200160405180910390a35060015b9392505050565b600181565b600160a060020a03811663a9059cbb33826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561061b57600080fd5b6102c65a03f1151561062c57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561068257600080fd5b6102c65a03f1151561069357600080fd5b5050506040518051505050565b60015433600160a060020a039081169116146106bb57600080fd5b600160a060020a038216600081815260056020526040808220805485019055815484018255600080516020610da78339815191529084905190815260200160405180910390a35050565b600160a060020a038216600090815260056020526040902054600a90101561072c57600080fd5b600154600160a060020a03166395156c96833360006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561078d57600080fd5b6102c65a03f1151561079e57600080fd5b5050506040518051905015156107b357600080fd5b600160a060020a038083166000818152600560205260408082208054600919019055600280548516835281832080546009908101909155868616845292829020805460010190555490931692600080516020610da783398151915291905190815260200160405180910390a380600160a060020a031682600160a060020a0316600080516020610da7833981519152600160405190815260200160405180910390a35050565b600160a060020a031660009081526005602052604090205490565b600160a060020a038216600090815260056020526040902054600a90101561089b57600080fd5b600154600160a060020a03166395156c96833360006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156108fc57600080fd5b6102c65a03f1151561090d57600080fd5b50505060405180519050151561092257600080fd5b600160a060020a038083166000818152600560205260408082208054600919019055600280548516835281832080546001908101909155868616845292829020805460090190555490931692600080516020610da783398151915291905190815260200160405180910390a380600160a060020a031682600160a060020a0316600080516020610da7833981519152600960405190815260200160405180910390a35050565b600254600160a060020a031681565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561045e5780601f106104335761010080835404028352916020019161045e565b600160a060020a03331660009081526005602052604081205482901015610a6b575060006104cd565b600160a060020a03338116600081815260056020526040808220805487900390559286168082529083902080548601905591600080516020610da78339815191529085905190815260200160405180910390a350600192915050565b600154600160a060020a031681565b600160a060020a038216600090815260056020526040902054600a901015610afd57600080fd5b600154600160a060020a03166395156c96833360006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b1515610b5e57600080fd5b6102c65a03f11515610b6f57600080fd5b505050604051805190501515610b8457600080fd5b600160a060020a03808316600081815260056020819052604080832080546009190190556002805486168452818420805484019055868616845292819020805483019055915490931692600080516020610da7833981519152915190815260200160405180910390a380600160a060020a031682600160a060020a0316600080516020610da7833981519152600560405190815260200160405180910390a35050565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b60025433600160a060020a03908116911614610c6d57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383169081179091557f77ef9581150690a5caca1de816c50c822d4ea88fb86fe334603379ec2d6f969760405160405180910390a250565b60025460009033600160a060020a03908116911614610ce557600080fd5b5060028054600160a060020a039081166000908152600560205260408082205485841680845282842080548301905585548516845282842093909355935491929190911690600080516020610da78339815191529084905190815260200160405180910390a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384169081179091557fa5e220c2c27d986cc8efeafa8f34ba6ea6bf96a34e146b29b6bdd8587771b13060405160405180910390a250505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058204db46905862241e5efc5adf6a266f4db261db49cec5d86d04bb87ef3ef408e2d0029

Swarm Source

bzzr://4db46905862241e5efc5adf6a266f4db261db49cec5d86d04bb87ef3ef408e2d

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.