ETH Price: $2,636.01 (-1.02%)

Contract

0xf9e86010DC6A1105340efb3150f7Aa215177E188
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer My Toke...52685902018-03-17 0:59:482522 days ago1521248388IN
0xf9e86010...15177E188
0 ETH0.00222441
Transfer My Toke...51617952018-02-26 21:45:142540 days ago1519681514IN
0xf9e86010...15177E188
0 ETH0.00283941
Transfer My Toke...51617552018-02-26 21:37:142540 days ago1519681034IN
0xf9e86010...15177E188
0 ETH0.00283941
Transfer My Toke...51617302018-02-26 21:32:112540 days ago1519680731IN
0xf9e86010...15177E188
0 ETH0.00283941
Transfer My Toke...49386302018-01-20 4:46:172578 days ago1516423577IN
0xf9e86010...15177E188
0 ETH0.0006924410
Transfer My Toke...48987752018-01-13 0:21:002585 days ago1515802860IN
0xf9e86010...15177E188
0 ETH0.0027697640
Transfer My Toke...48980382018-01-12 21:14:432585 days ago1515791683IN
0xf9e86010...15177E188
0 ETH0.0014541221
Transfer My Toke...48973542018-01-12 18:16:362585 days ago1515780996IN
0xf9e86010...15177E188
0 ETH0.0062319690
Transfer My Toke...48933972018-01-12 0:34:552586 days ago1515717295IN
0xf9e86010...15177E188
0 ETH0.002787640
Transfer My Toke...48923282018-01-11 19:56:042586 days ago1515700564IN
0xf9e86010...15177E188
0 ETH0.0015926123
Transfer My Toke...48914622018-01-11 16:07:042586 days ago1515686824IN
0xf9e86010...15177E188
0 ETH0.0020773230
Transfer My Toke...48914292018-01-11 15:57:372586 days ago1515686257IN
0xf9e86010...15177E188
0 ETH0.0020773230
Transfer My Toke...48877292018-01-10 23:27:472587 days ago1515626867IN
0xf9e86010...15177E188
0 ETH0.00283941
Transfer My Toke...48877092018-01-10 23:22:132587 days ago1515626533IN
0xf9e86010...15177E188
0 ETH0.0042931262
Transfer My Toke...48873502018-01-10 21:46:102587 days ago1515620770IN
0xf9e86010...15177E188
0 ETH0.0041546460
Transfer My Toke...48872862018-01-10 21:28:272587 days ago1515619707IN
0xf9e86010...15177E188
0 ETH0.005193375
Transfer My Toke...48872422018-01-10 21:17:482587 days ago1515619068IN
0xf9e86010...15177E188
0 ETH0.0038084255
Transfer My Toke...48868332018-01-10 19:26:062587 days ago1515612366IN
0xf9e86010...15177E188
0 ETH0.0021465631
Transfer My Toke...48867812018-01-10 19:14:502587 days ago1515611690IN
0xf9e86010...15177E188
0 ETH0.00283941
Transfer My Toke...48867542018-01-10 19:08:202587 days ago1515611300IN
0xf9e86010...15177E188
0 ETH0.003462250
Transfer My Toke...48867422018-01-10 19:05:402587 days ago1515611140IN
0xf9e86010...15177E188
0 ETH0.0041546460
Transfer My Toke...48867192018-01-10 18:58:202587 days ago1515610700IN
0xf9e86010...15177E188
0 ETH0.0027697640
Transfer My Toke...48865412018-01-10 18:10:182587 days ago1515607818IN
0xf9e86010...15177E188
0 ETH0.0041546460
Transfer My Toke...48863022018-01-10 17:09:412587 days ago1515604181IN
0xf9e86010...15177E188
0 ETH0.002393175
Transfer My Toke...48863002018-01-10 17:09:052587 days ago1515604145IN
0xf9e86010...15177E188
0 ETH0.001595450
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
43842492017-10-18 16:47:302671 days ago1508345250
0xf9e86010...15177E188
454.25677677 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x34f762DE...44637C636
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
PresalePool

Compiler Version
v0.4.16+commit.d7661dd9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-09-26
*/

pragma solidity ^0.4.15;

// ERC20 Interface
contract ERC20 {
    function transfer(address _to, uint _value) returns (bool success);
    function balanceOf(address _owner) constant returns (uint balance);
}

contract PresalePool {
    enum State { Open, Failed, Closed, Paid }
    State public state;

    address[] public admins;

    uint public minContribution;
    uint public maxContribution;
    uint public maxPoolTotal;

    address[] public participants;

    bool public whitelistAll;

    struct ParticipantState {
        uint contribution;
        uint remaining;
        bool whitelisted;
        bool exists;
    }
    mapping (address => ParticipantState) public balances;
    uint public poolTotal;

    address presaleAddress;
    bool refundable;
    uint gasFundTotal;

    ERC20 public token;

    event Deposit(
        address indexed _from,
        uint _value
    );
    event Payout(
        address indexed _to,
        uint _value
    );
    event Withdrawl(
        address indexed _to,
        uint _value
    );

    modifier onlyAdmins() {
        require(isAdmin(msg.sender));
        _;
    }

    modifier onState(State s) {
        require(state == s);
        _;
    }

    modifier stateAllowsConfiguration() {
        require(state == State.Open || state == State.Closed);
        _;
    }

    bool locked;
    modifier noReentrancy() {
        require(!locked);
        locked = true;
        _;
        locked = false;
    }

    function PresalePool(uint _minContribution, uint _maxContribution, uint _maxPoolTotal, address[] _admins) payable {
        state = State.Open;
        admins.push(msg.sender);

        setContributionSettings(_minContribution, _maxContribution, _maxPoolTotal);

        whitelistAll = true;

        for (uint i = 0; i < _admins.length; i++) {
            var admin = _admins[i];
            if (!isAdmin(admin)) {
                admins.push(admin);
            }
        }

        deposit();
    }

    function () payable {
        deposit();
    }

    function close() public onlyAdmins onState(State.Open) {
        state = State.Closed;
    }

    function open() public onlyAdmins onState(State.Closed) {
        state = State.Open;
    }

    function fail() public onlyAdmins stateAllowsConfiguration {
        state = State.Failed;
    }

    function payToPresale(address _presaleAddress) public onlyAdmins onState(State.Closed) {
        state = State.Paid;
        presaleAddress = _presaleAddress;
        refundable = true;
        presaleAddress.transfer(poolTotal);
    }

    function refundPresale() payable public onState(State.Paid) {
        require(refundable && msg.value >= poolTotal);
        require(msg.sender == presaleAddress || isAdmin(msg.sender));
        gasFundTotal = msg.value - poolTotal;
        state = State.Failed;
    }

    function setToken(address tokenAddress) public onlyAdmins {
        token = ERC20(tokenAddress);
    }

    function withdrawAll() public {
        uint total = balances[msg.sender].remaining;
        balances[msg.sender].remaining = 0;

        if (state == State.Open || state == State.Failed) {
            total += balances[msg.sender].contribution;
            if (gasFundTotal > 0) {
                uint gasRefund = (balances[msg.sender].contribution * gasFundTotal) / (poolTotal);
                gasFundTotal -= gasRefund;
                total += gasRefund;
            }
            poolTotal -= balances[msg.sender].contribution;
            balances[msg.sender].contribution = 0;
        } else {
            require(state == State.Paid);
        }

        msg.sender.transfer(total);
        Withdrawl(msg.sender, total);
    }

    function withdraw(uint amount) public onState(State.Open) {
        uint total = balances[msg.sender].remaining + balances[msg.sender].contribution;
        require(total >= amount);
        uint debit = min(balances[msg.sender].remaining, amount);
        balances[msg.sender].remaining -= debit;
        debit = amount - debit;
        balances[msg.sender].contribution -= debit;
        poolTotal -= debit;

        (balances[msg.sender].contribution, balances[msg.sender].remaining) = getContribution(msg.sender, 0);
        // must respect the minContribution limit
        require(balances[msg.sender].remaining == 0 || balances[msg.sender].contribution > 0);
        msg.sender.transfer(amount);
        Withdrawl(msg.sender, amount);
    }

    function transferMyTokens() public onState(State.Paid) noReentrancy {
        uint tokenBalance = token.balanceOf(address(this));
        require(tokenBalance > 0);

        uint participantContribution = balances[msg.sender].contribution;
        uint participantShare = participantContribution * tokenBalance / poolTotal;

        poolTotal -= participantContribution;
        balances[msg.sender].contribution = 0;
        refundable = false;
        require(token.transfer(msg.sender, participantShare));

        Payout(msg.sender, participantShare);
    }

    address[] public failures;
    function transferAllTokens() public onlyAdmins onState(State.Paid) noReentrancy returns (address[]) {
        uint tokenBalance = token.balanceOf(address(this));
        require(tokenBalance > 0);
        delete failures;

        for (uint i = 0; i < participants.length; i++) {
            address participant = participants[i];
            uint participantContribution = balances[participant].contribution;

            if (participantContribution > 0) {
                uint participantShare = participantContribution * tokenBalance / poolTotal;

                poolTotal -= participantContribution;
                balances[participant].contribution = 0;

                if (token.transfer(participant, participantShare)) {
                    refundable = false;
                    Payout(participant, participantShare);
                    tokenBalance -= participantShare;
                    if (tokenBalance == 0) {
                        break;
                    }
                } else {
                    balances[participant].contribution = participantContribution;
                    poolTotal += participantContribution;
                    failures.push(participant);
                }
            }
        }

        return failures;
    }

    function modifyWhitelist(address[] toInclude, address[] toExclude) public onlyAdmins stateAllowsConfiguration {
        bool previous = whitelistAll;
        uint i;
        if (previous) {
            require(toExclude.length == 0);
            for (i = 0; i < participants.length; i++) {
                balances[participants[i]].whitelisted = false;
            }
            whitelistAll = false;
        }

        for (i = 0; i < toInclude.length; i++) {
            balances[toInclude[i]].whitelisted = true;
        }

        address excludedParticipant;
        uint contribution;
        if (previous) {
            for (i = 0; i < participants.length; i++) {
                excludedParticipant = participants[i];
                if (!balances[excludedParticipant].whitelisted) {
                    contribution = balances[excludedParticipant].contribution;
                    balances[excludedParticipant].contribution = 0;
                    balances[excludedParticipant].remaining += contribution;
                    poolTotal -= contribution;
                }
            }
        } else {
            for (i = 0; i < toExclude.length; i++) {
                excludedParticipant = toExclude[i];
                balances[excludedParticipant].whitelisted = false;
                contribution = balances[excludedParticipant].contribution;
                balances[excludedParticipant].contribution = 0;
                balances[excludedParticipant].remaining += contribution;
                poolTotal -= contribution;
            }
        }
    }

    function removeWhitelist() public onlyAdmins stateAllowsConfiguration {
        if (!whitelistAll) {
            whitelistAll = true;
            for (uint i = 0; i < participants.length; i++) {
                balances[participants[i]].whitelisted = true;
            }
        }
    }

    function setContributionSettings(uint _minContribution, uint _maxContribution, uint _maxPoolTotal) public onlyAdmins stateAllowsConfiguration {
        // we raised the minContribution threshold
        bool recompute = (minContribution < _minContribution);
        // we lowered the maxContribution threshold
        recompute = recompute || (maxContribution > _maxContribution);
        // we did not have a maxContribution threshold and now we do
        recompute = recompute || (maxContribution == 0 && _maxContribution > 0);
        // we want to make maxPoolTotal lower than the current pool total
        recompute = recompute || (poolTotal > _maxPoolTotal);

        minContribution = _minContribution;
        maxContribution = _maxContribution;
        maxPoolTotal = _maxPoolTotal;

        if (maxContribution > 0) {
            require(maxContribution >= minContribution);
        }
        if (maxPoolTotal > 0) {
            require(maxPoolTotal >= minContribution);
            require(maxPoolTotal >= maxContribution);
        }

        if (recompute) {
            poolTotal = 0;
            for (uint i = 0; i < participants.length; i++) {
                address participant = participants[i];
                var balance = balances[participant];
                (balance.contribution, balance.remaining) = getContribution(participant, 0);
                poolTotal += balance.contribution;
            }
        }
    }

    function getParticipantBalances() public returns(address[], uint[], uint[], bool[], bool[]) {
        uint[] memory contribution = new uint[](participants.length);
        uint[] memory remaining = new uint[](participants.length);
        bool[] memory whitelisted = new bool[](participants.length);
        bool[] memory exists = new bool[](participants.length);

        for (uint i = 0; i < participants.length; i++) {
            var balance = balances[participants[i]];
            contribution[i] = balance.contribution;
            remaining[i] = balance.remaining;
            whitelisted[i] = balance.whitelisted;
            exists[i] = balance.exists;
        }

        return (participants, contribution, remaining, whitelisted, exists);
    }

    function deposit() internal onState(State.Open) {
        if (msg.value > 0) {
            require(included(msg.sender));
            (balances[msg.sender].contribution, balances[msg.sender].remaining) = getContribution(msg.sender, msg.value);
            // must respect the maxContribution and maxPoolTotal limits
            require(balances[msg.sender].remaining == 0);
            balances[msg.sender].whitelisted = true;
            poolTotal += msg.value;
            if (!balances[msg.sender].exists) {
                balances[msg.sender].exists = true;
                participants.push(msg.sender);
            }
            Deposit(msg.sender, msg.value);
        }
    }

    function isAdmin(address addr) internal constant returns (bool) {
        for (uint i = 0; i < admins.length; i++) {
            if (admins[i] == addr) {
                return true;
            }
        }
        return false;
    }

    function included(address participant) internal constant returns (bool) {
        return whitelistAll || balances[participant].whitelisted || isAdmin(participant);
    }

    function getContribution(address participant, uint amount) internal constant returns (uint, uint) {
        var balance = balances[participant];
        uint total = balance.remaining + balance.contribution + amount;
        uint contribution = total;
        if (!included(participant)) {
            return (0, total);
        }
        if (maxContribution > 0) {
            contribution = min(maxContribution, contribution);
        }
        if (maxPoolTotal > 0) {
            contribution = min(maxPoolTotal - poolTotal, contribution);
        }
        if (contribution < minContribution) {
            return (0, total);
        }
        return (contribution, total - contribution);
    }

    function min(uint a, uint b) internal pure returns (uint _min) {
        if (a < b) {
            return a;
        }
        return b;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"admins","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"removeWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_presaleAddress","type":"address"}],"name":"payToPresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refundPresale","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"contribution","type":"uint256"},{"name":"remaining","type":"uint256"},{"name":"whitelisted","type":"bool"},{"name":"exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"participants","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getParticipantBalances","outputs":[{"name":"","type":"address[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"},{"name":"","type":"bool[]"},{"name":"","type":"bool[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"transferAllTokens","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whitelistAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxContribution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_minContribution","type":"uint256"},{"name":"_maxContribution","type":"uint256"},{"name":"_maxPoolTotal","type":"uint256"}],"name":"setContributionSettings","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"fail","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minContribution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"failures","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"toInclude","type":"address[]"},{"name":"toExclude","type":"address[]"}],"name":"modifyWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"transferMyTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxPoolTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"open","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_minContribution","type":"uint256"},{"name":"_maxContribution","type":"uint256"},{"name":"_maxPoolTotal","type":"uint256"},{"name":"_admins","type":"address[]"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Payout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Withdrawl","type":"event"}]

Deployed Bytecode

0x6060604052361561012d5763ffffffff60e060020a600035041663144fa6d7811461013957806314bfd6d01461015a57806317f708fb1461018c5780631fff2d8a146101a157806326bdd814146101c257806327e235e3146101cc5780632e1a7d4d1461021957806335c1d34914610231578063390a05a81461026357806343d726d6146103e35780634c96f0cc146103f85780635d54e6121461045f578063704d4db014610486578063853828b6146104ab5780638d3d6576146104c0578063a8083b74146104e5578063a9cc471814610503578063aaffadf314610518578063bf4d5af41461053d578063c19d93fb1461056f578063def86cbb146105a6578063f231647214610637578063f3cc24361461064c578063fc0c546a14610671578063fcfff16f146106a0575b5b6101366106b5565b5b005b341561014457600080fd5b610136600160a060020a0360043516610810565b005b341561016557600080fd5b610170600435610851565b604051600160a060020a03909116815260200160405180910390f35b341561019757600080fd5b610136610883565b005b34156101ac57600080fd5b610136600160a060020a0360043516610965565b005b610136610a21565b005b34156101d757600080fd5b6101eb600160a060020a0360043516610ab4565b6040519384526020840192909252151560408084019190915290151560608301526080909101905180910390f35b341561022457600080fd5b610136600435610ae1565b005b341561023c57600080fd5b610170600435610c62565b604051600160a060020a03909116815260200160405180910390f35b341561026e57600080fd5b610276610c94565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b838110156102c75780820151818401525b6020016102ae565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156103075780820151818401525b6020016102ee565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156103475780820151818401525b60200161032e565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156103875780820151818401525b60200161036e565b50505050905001868103825287818151815260200191508051906020019060200280838360005b838110156103c75780820151818401525b6020016103ae565b505050509050019a505050505050505050505060405180910390f35b34156103ee57600080fd5b610136610ed0565b005b341561040357600080fd5b61040b610f22565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561044b5780820151818401525b602001610432565b505050509050019250505060405180910390f35b341561046a57600080fd5b61047261127a565b604051901515815260200160405180910390f35b341561049157600080fd5b610499611283565b60405190815260200160405180910390f35b34156104b657600080fd5b610136611289565b005b34156104cb57600080fd5b6104996113ff565b60405190815260200160405180910390f35b34156104f057600080fd5b610136600435602435604435611405565b005b341561050e57600080fd5b610136611585565b005b341561052357600080fd5b6104996115ee565b60405190815260200160405180910390f35b341561054857600080fd5b6101706004356115f4565b604051600160a060020a03909116815260200160405180910390f35b341561057a57600080fd5b610582611626565b6040518082600381111561059257fe5b60ff16815260200191505060405180910390f35b34156105b157600080fd5b61013660046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061162f95505050505050565b005b341561064257600080fd5b6101366118a0565b005b341561065757600080fd5b610499611aac565b60405190815260200160405180910390f35b341561067c57600080fd5b610170611ab2565b604051600160a060020a03909116815260200160405180910390f35b34156106ab57600080fd5b610136611ac1565b005b6000805b60005460ff1660038111156106ca57fe5b146106d457600080fd5b600034111561080b576106e633611b11565b15156106f157600080fd5b6106fb3334611b58565b600160a060020a033316600090815260076020526040902060018101829055919091551561072857600080fd5b600160a060020a0333166000908152600760205260409020600201805460ff19166001178155600880543401905554610100900460ff1615156107cd57600160a060020a0333166000908152600760205260409020600201805461ff001916610100179055600580546001810161079f8382611c8b565b916000526020600020900160005b8154600160a060020a033381166101009390930a92830292021916179055505b33600160a060020a03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3460405190815260200160405180910390a25b5b5b50565b61081933611bfe565b151561082457600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600180548290811061085f57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600061088e33611bfe565b151561089957600080fd5b60005b60005460ff1660038111156108ad57fe5b14806108ca575060025b60005460ff1660038111156108c857fe5b145b15156108d557600080fd5b60065460ff16151561080b57506006805460ff1916600117905560005b60055481101561080b5760016007600060058481548110151561091157fe5b906000526020600020900160005b90546101009190910a9004600160a060020a031681526020810191909152604001600020600201805460ff19169115159190911790555b6001016108f2565b5b5b5b5b50565b61096e33611bfe565b151561097957600080fd5b6002805b60005460ff16600381111561098e57fe5b1461099857600080fd5b600080546003919060ff19166001835b02179055506009805460a060020a60ff0219600160a060020a0380861673ffffffffffffffffffffffffffffffffffffffff19909316929092171660a060020a179182905560085491169080156108fc0290604051600060405180830381858888f193505050501515610a1a57600080fd5b5b5b505b50565b6003805b60005460ff166003811115610a3657fe5b14610a4057600080fd5b60095460a060020a900460ff168015610a5b57506008543410155b1515610a6657600080fd5b60095433600160a060020a0390811691161480610a875750610a8733611bfe565b5b1515610a9357600080fd5b6008543403600a55600080546001919060ff191682805b02179055505b5b50565b60076020526000908152604090208054600182015460029092015490919060ff8082169161010090041684565b60008080805b60005460ff166003811115610af857fe5b14610b0257600080fd5b600160a060020a0333166000908152600760205260409020805460019091015401925083831015610b3257600080fd5b600160a060020a033316600090815260076020526040902060010154610b589085611c71565b33600160a060020a038116600090815260076020526040812060018101805485900390558054938803938490039055600880548490039055919350610b9c91611b58565b600160a060020a033316600090815260076020526040902060018101829055919091551580610be15750600160a060020a033316600090815260076020526040812054115b1515610bec57600080fd5b600160a060020a03331684156108fc0285604051600060405180830381858888f193505050501515610c1d57600080fd5b33600160a060020a03167f65ac0d8bb8cbc0e989ebd02ddc5161d7c499f7c21792e43fcf170314fe6bcc3f8560405190815260200160405180910390a25b5b50505050565b600580548290811061085f57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b610c9c611cb5565b610ca4611cb5565b610cac611cb5565b610cb4611cb5565b610cbc611cb5565b610cc4611cb5565b610ccc611cb5565b610cd4611cb5565b610cdc611cb5565b6005546000908190604051805910610cf15750595b908082528060200260200182016040525b50600554909650604051805910610d165750595b908082528060200260200182016040525b50600554909550604051805910610d3b5750595b908082528060200260200182016040525b50600554909450604051805910610d605750595b908082528060200260200182016040525b509250600091505b600554821015610e565760076000600584815481101515610d9657fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416815260208101919091526040016000208054909150868381518110610dd957fe5b602090810290910101526001810154858381518110610df457fe5b60209081029091010152600281015460ff16848381518110610e1257fe5b911515602092830290910190910152600281015460ff61010090910416838381518110610e3b57fe5b9115156020928302909101909101525b600190910190610d79565b60058686868684805480602002602001604051908101604052809291908181526020018280548015610eb157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610e93575b505050505094509a509a509a509a509a505b5050505050509091929394565b610ed933611bfe565b1515610ee457600080fd5b6000805b60005460ff166003811115610ef957fe5b14610f0357600080fd5b600080546002919060ff1916600183610aaa565b02179055505b5b505b565b610f2a611cb5565b6000806000806000610f3b33611bfe565b1515610f4657600080fd5b6003805b60005460ff166003811115610f5b57fe5b14610f6557600080fd5b600b5460a060020a900460ff1615610f7c57600080fd5b600b805460a060020a60ff02191660a060020a1790819055600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610fea57600080fd5b6102c65a03f11515610ffb57600080fd5b50505060405180519650506000861161101357600080fd5b61101f600c6000611ceb565b600094505b60055485101561120057600580548690811061103c57fe5b906000526020600020900160005b9054600160a060020a036101009290920a9004166000818152600760205260408120549195509093508311156111f35760085486840281151561108957fe5b600880548690039055600160a060020a03808716600090815260076020526040808220829055600b5494909304955092169163a9059cbb9187918691516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561110d57600080fd5b6102c65a03f1151561111e57600080fd5b5050506040518051905015611190576009805460a060020a60ff0219169055600160a060020a0384167f5afeca38b2064c23a692c4cf353015d80ab3ecc417b4f893f372690c11fbd9a68360405190815260200160405180910390a2948190039485151561118b57611200565b6111f3565b600160a060020a03841660009081526007602052604090208390556008805484019055600c8054600181016111c58382611c8b565b916000526020600020900160005b8154600160a060020a038089166101009390930a92830292021916179055505b5b5b600190940193611024565b600c80548060200260200160405190810160405280929190818152602001828054801561125657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611238575b505050505096505b600b805460a060020a60ff02191690555b5b505b505050505090565b60065460ff1681565b60085481565b600160a060020a033316600090815260076020526040812060010180549082905590805b60005460ff1660038111156112be57fe5b14806112db575060015b60005460ff1660038111156112d957fe5b145b1561136d57600160a060020a033316600090815260076020526040812054600a54930192111561134357600854600a54600160a060020a0333166000908152600760205260409020540281151561132e57fe5b600a8054929091049182900390559182019190505b600160a060020a03331660009081526007602052604081208054600880549190910390555561138b565b60035b60005460ff16600381111561138157fe5b1461138b57600080fd5b5b600160a060020a03331682156108fc0283604051600060405180830381858888f1935050505015156113bd57600080fd5b33600160a060020a03167f65ac0d8bb8cbc0e989ebd02ddc5161d7c499f7c21792e43fcf170314fe6bcc3f8360405190815260200160405180910390a25b5050565b60035481565b60008060008061141433611bfe565b151561141f57600080fd5b60005b60005460ff16600381111561143357fe5b1480611450575060025b60005460ff16600381111561144e57fe5b145b151561145b57600080fd5b86600254109350838061146f575085600354115b9350838061148857506003541580156114885750600086115b5b93508380611498575084600854115b600288905560038790556004869055935060008611156114c35760025460035410156114c357600080fd5b5b600060045411156114f15760025460045410156114e057600080fd5b60035460045410156114f157600080fd5b5b8315611578576000600881905592505b60055483101561157857600580548490811061151a57fe5b906000526020600020900160005b9054600160a060020a036101009290920a900416600081815260076020526040812091935090915061155b908390611b58565b60018301558082556008805490910190555b600190920191611502565b5b5b5b5b50505050505050565b61158e33611bfe565b151561159957600080fd5b60005b60005460ff1660038111156115ad57fe5b14806115ca575060025b60005460ff1660038111156115c857fe5b145b15156115d557600080fd5b600080546001919060ff191682805b02179055505b5b5b565b60025481565b600c80548290811061085f57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b60005460ff1681565b60008060008061163e33611bfe565b151561164957600080fd5b60005b60005460ff16600381111561165d57fe5b148061167a575060025b60005460ff16600381111561167857fe5b145b151561168557600080fd5b60065460ff169350831561171e5784511561169f57600080fd5b600092505b600554831015611713576000600760006005868154811015156116c357fe5b906000526020600020900160005b90546101009190910a9004600160a060020a031681526020810191909152604001600020600201805460ff19169115159190911790555b6001909201916116a4565b6006805460ff191690555b600092505b855183101561177f5760016007600088868151811061173e57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020600201805460ff19169115159190911790555b600190920191611723565b831561182457600092505b60055483101561181f5760058054849081106117a257fe5b906000526020600020900160005b9054600160a060020a036101009290920a90041660008181526007602052604090206002015490925060ff1615156118135750600160a060020a038116600090815260076020526040812080549181556001018054820190556008805482900390555b5b60019092019161178a565b611894565b600092505b84518310156118945784838151811061183e57fe5b90602001906020020151600160a060020a038116600090815260076020526040812060028101805460ff19169055805491815560010180548201905560088054829003905590925090505b600190920191611829565b5b5b5b5b505050505050565b600080806003805b60005460ff1660038111156118b957fe5b146118c357600080fd5b600b5460a060020a900460ff16156118da57600080fd5b600b805460a060020a60ff02191660a060020a1790819055600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561194857600080fd5b6102c65a03f1151561195957600080fd5b50505060405180519450506000841161197157600080fd5b600160a060020a03331660009081526007602052604090205460085490935084840281151561199c57fe5b60088054869003905533600160a060020a038181166000908152600760205260408082208290556009805460a060020a60ff0219169055600b5495909404965093169263a9059cbb92869190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611a3057600080fd5b6102c65a03f11515611a4157600080fd5b505050604051805190501515611a5657600080fd5b33600160a060020a03167f5afeca38b2064c23a692c4cf353015d80ab3ecc417b4f893f372690c11fbd9a68360405190815260200160405180910390a25b600b805460a060020a60ff02191690555b5b50505050565b60045481565b600b54600160a060020a031681565b611aca33611bfe565b1515611ad557600080fd5b6002805b60005460ff166003811115611aea57fe5b14611af457600080fd5b60008054819060ff1916600182610aaa565b02179055505b5b505b565b60065460009060ff1680611b405750600160a060020a03821660009081526007602052604090206002015460ff165b80611b4f5750611b4f82611bfe565b5b90505b919050565b600160a060020a03821660009081526007602052604081208054600182015483929101840180611b8787611b11565b1515611b9b57600094509092508290611bf4565b60006003541115611bb557611bb260035482611c71565b90505b60006004541115611bd357611bd06008546004540382611c71565b90505b600254811015611beb57600094509092508290611bf4565b80818303945094505b5050509250929050565b6000805b600154811015611c665782600160a060020a0316600182815481101515611c2557fe5b906000526020600020900160005b9054906101000a9004600160a060020a0316600160a060020a03161415611c5d5760019150611c6b565b5b600101611c02565b600091505b50919050565b600081831015611c82575081611c85565b50805b92915050565b815481835581811511611caf57600083815260209020611caf918101908301611d0d565b5b505050565b60206040519081016040526000815290565b60206040519081016040526000815290565b60206040519081016040526000815290565b508054600082559060005260206000209081019061080b9190611d0d565b5b50565b611d2b91905b80821115611d275760008155600101611d13565b5090565b905600a165627a7a72305820fa3372d264e6f716085c85bfa5952d5cf818fbea45d00ed1fa0a3f93e184d26d0029

Swarm Source

bzzr://fa3372d264e6f716085c85bfa5952d5cf818fbea45d00ed1fa0a3f93e184d26d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.