ETH Price: $3,387.18 (+3.30%)

Contract

0x2b78a837C37549539C62ab54A235a8E19Fea812F
 

Overview

ETH Balance

38.820242678360842553 ETH

Eth Value

$131,491.17 (@ $3,387.18/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw210896212024-11-01 1:50:4753 days ago1730425847IN
Cent.co: Wallet
0 ETH0.000328466.0280464
Withdraw210895582024-11-01 1:38:1153 days ago1730425091IN
Cent.co: Wallet
0 ETH0.000284676.86011934
Settle210895132024-11-01 1:29:1153 days ago1730424551IN
Cent.co: Wallet
0 ETH0.000341966.78879546
Debit210895062024-11-01 1:27:4753 days ago1730424467IN
Cent.co: Wallet
0 ETH0.000452426.42276806
Link210895042024-11-01 1:27:2353 days ago1730424443IN
Cent.co: Wallet
0 ETH0.000698957.71146185
Debit210894082024-11-01 1:07:5953 days ago1730423279IN
Cent.co: Wallet
0 ETH0.000525066
Link210894052024-11-01 1:07:2353 days ago1730423243IN
Cent.co: Wallet
0 ETH0.000920926
Add Admin210655332024-10-28 17:10:2356 days ago1730135423IN
Cent.co: Wallet
0 ETH0.0019209525.97749443
Withdraw206886792024-09-06 2:50:59108 days ago1725591059IN
Cent.co: Wallet
0 ETH0.000179863.20880807
Withdraw206886352024-09-06 2:42:11108 days ago1725590531IN
Cent.co: Wallet
0 ETH0.000111733.0118303
Settle206886322024-09-06 2:41:35108 days ago1725590495IN
Cent.co: Wallet
0 ETH0.000166683.02179785
Debit206886292024-09-06 2:40:59108 days ago1725590459IN
Cent.co: Wallet
0 ETH0.000268743.06954222
Link206886212024-09-06 2:39:23108 days ago1725590363IN
Cent.co: Wallet
0 ETH0.000475733.09925788
Withdraw204736272024-08-07 2:11:59138 days ago1722996719IN
Cent.co: Wallet
0 ETH0.000096181.84959224
Settle204736212024-08-07 2:10:47138 days ago1722996647IN
Cent.co: Wallet
0 ETH0.000068152.04843933
Settle204736082024-08-07 2:08:11138 days ago1722996491IN
Cent.co: Wallet
0 ETH0.000124682.2598713
Debit204735812024-08-07 2:02:47139 days ago1722996167IN
Cent.co: Wallet
0 ETH0.002010832.24634573
Link204735582024-08-07 1:58:11139 days ago1722995891IN
Cent.co: Wallet
0 ETH0.004429542.03283695
Debit204734572024-08-07 1:37:47139 days ago1722994667IN
Cent.co: Wallet
0 ETH0.013932011.79752477
Link204734152024-08-07 1:29:11139 days ago1722994151IN
Cent.co: Wallet
0 ETH0.010332651.36183747
Link204733572024-08-07 1:17:35139 days ago1722993455IN
Cent.co: Wallet
0 ETH0.011861531.93115963
Debit204725832024-08-06 22:42:11139 days ago1722984131IN
Cent.co: Wallet
0 ETH0.003952432.50101874
Debit204725712024-08-06 22:39:47139 days ago1722983987IN
Cent.co: Wallet
0 ETH0.073779812.7938708
Link204724672024-08-06 22:18:47139 days ago1722982727IN
Cent.co: Wallet
0 ETH0.005126513.86544217
Link204724572024-08-06 22:16:47139 days ago1722982607IN
Cent.co: Wallet
0 ETH0.081998393.67109494
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
210896212024-11-01 1:50:4753 days ago1730425847
Cent.co: Wallet
0.05632786 ETH
206886792024-09-06 2:50:59108 days ago1725591059
Cent.co: Wallet
0.04747 ETH
204736272024-08-07 2:11:59138 days ago1722996719
Cent.co: Wallet
22.92074834 ETH
204722412024-08-06 21:33:35139 days ago1722980015
Cent.co: Wallet
0.31013633 ETH
193574772024-03-03 21:59:23295 days ago1709503163
Cent.co: Wallet
1.6049 ETH
187181292023-12-05 5:41:59384 days ago1701754919
Cent.co: Wallet
0.0969 ETH
185634912023-11-13 14:11:47406 days ago1699884707
Cent.co: Wallet
0.0132 ETH
182371262023-09-28 22:10:59452 days ago1695939059
Cent.co: Wallet
0.17998 ETH
179712992023-08-22 15:59:23489 days ago1692719963
Cent.co: Wallet
0.0027 ETH
177745872023-07-26 3:31:11516 days ago1690342271
Cent.co: Wallet
0.2696 ETH
177569352023-07-23 16:14:35519 days ago1690128875
Cent.co: Wallet
0.1705 ETH
176158512023-07-03 20:36:35539 days ago1688416595
Cent.co: Wallet
150.6477 ETH
176018072023-07-01 21:15:35541 days ago1688246135
Cent.co: Wallet
0.0305 ETH
173151472023-05-22 13:32:11581 days ago1684762331
Cent.co: Wallet
0.109 ETH
167008312023-02-24 21:23:59668 days ago1677273839
Cent.co: Wallet
0.0598 ETH
163868512023-01-11 23:30:23712 days ago1673479823
Cent.co: Wallet
0.0171 ETH
162195552022-12-19 15:11:35735 days ago1671462695
Cent.co: Wallet
0.2367 ETH
160261402022-11-22 14:27:47762 days ago1669127267
Cent.co: Wallet
0.0447 ETH
158890872022-11-03 11:05:23781 days ago1667473523
Cent.co: Wallet
0.186 ETH
157744002022-10-18 10:28:59797 days ago1666088939
Cent.co: Wallet
0.006 ETH
156759332022-10-04 16:22:59811 days ago1664900579
Cent.co: Wallet
0.1942 ETH
155980462022-09-23 19:10:35822 days ago1663960235
Cent.co: Wallet
0.2274 ETH
153973102022-08-23 15:04:43853 days ago1661267083
Cent.co: Wallet
0.2736 ETH
151742612022-07-19 16:58:48888 days ago1658249928
Cent.co: Wallet
0.0042 ETH
150361642022-06-27 20:33:11910 days ago1656361991
Cent.co: Wallet
0.0214 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CentWallet

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.25;

contract CentWallet {

    struct Wallet {
        uint256 balance;
        mapping(address => bool) linked;
        // prevent signature replay:
        uint64 debitNonce;
        uint64 withdrawNonce;
    }

    address[] public admins;

    mapping(bytes32 => Wallet) private wallets;
    mapping(address => bool) private isAdmin;

    uint256 private escrowBalance;

    modifier onlyAdmin {
        require(isAdmin[msg.sender]);
        _;
    }

    modifier onlyRootAdmin {
        require(msg.sender == admins[0]);
        _;
    }

    event Deposit(
        bytes32 indexed walletID,
        address indexed sender,
        uint256 indexed value
    );

    event Link(
        bytes32 indexed walletID,
        address indexed agent
    );

    event Debit(
        bytes32 indexed walletID,
        uint256 indexed nonce,
        uint256 indexed value
    );

    event Settle(
        bytes32 indexed walletID,
        uint256 indexed requestID,
        uint256 indexed value
    );

    event Withdraw(
        bytes32 indexed walletID,
        uint256 indexed nonce,
        uint256 indexed value,
        address recipient
    );

    constructor() public
    {
        admins.push(msg.sender);
        isAdmin[msg.sender] = true;
    }

//  PUBLIC CALLABLE BY ANYONE
    /**
     * Add funds to the wallet associated with an address + username
     * Create a wallet if none exists.
     */
    function deposit(
        bytes32 walletID) payable public
    {
        wallets[walletID].balance += msg.value;

        emit Deposit(walletID, msg.sender, msg.value);
    }

//  PUBLIC CALLABLE BY ADMIN
    /**
     * Add an authorized signer to a wallet.
     */
    function link(
        bytes32[] walletIDs,
        bytes32[] nameIDs,
        address[] agents,
        uint8[] v, bytes32[] r, bytes32[] s) onlyAdmin public
    {
        require(
            walletIDs.length == nameIDs.length &&
            walletIDs.length == agents.length &&
            walletIDs.length == v.length &&
            walletIDs.length == r.length &&
            walletIDs.length == s.length
        );

        for (uint i = 0; i < walletIDs.length; i++) {
            bytes32 walletID = walletIDs[i];
            address agent = agents[i];

            address signer = getMessageSigner(
                getLinkDigest(walletID, agent), v[i], r[i], s[i]
            );

            Wallet storage wallet = wallets[walletID];

            if (wallet.linked[signer] || walletID == getWalletDigest(nameIDs[i], signer)) {
                wallet.linked[agent] = true;

                emit Link(walletID, agent);
            }
        }
    }

    /**
     * Debit funds from a user's balance and add them to the escrow balance.
     */
    function debit(
        bytes32[] walletIDs,
        uint256[] values,
        uint64[] nonces,
        uint8[] v, bytes32[] r, bytes32[] s) onlyAdmin public
    {
        require(
            walletIDs.length == values.length &&
            walletIDs.length == nonces.length &&
            walletIDs.length == v.length &&
            walletIDs.length == r.length &&
            walletIDs.length == s.length
        );

        uint256 additionalEscrow = 0;

        for (uint i = 0; i < walletIDs.length; i++) {
            bytes32 walletID = walletIDs[i];
            uint256 value = values[i];
            uint64 nonce = nonces[i];

            address signer = getMessageSigner(
                getDebitDigest(walletID, value, nonce), v[i], r[i], s[i]
            );

            Wallet storage wallet = wallets[walletID];

            if (
                wallet.debitNonce < nonce &&
                wallet.balance >= value &&
                wallet.linked[signer]
            ) {
                wallet.debitNonce = nonce;
                wallet.balance -= value;

                emit Debit(walletID, nonce, value);

                additionalEscrow += value;
            }
        }

        escrowBalance += additionalEscrow;
    }

    /**
     * Withdraws funds from this contract, debiting the user's wallet.
     */
    function withdraw(
        bytes32[] walletIDs,
        address[] recipients,
        uint256[] values,
        uint64[] nonces,
        uint8[] v, bytes32[] r, bytes32[] s) onlyAdmin public
    {
        require(
            walletIDs.length == recipients.length &&
            walletIDs.length == values.length &&
            walletIDs.length == nonces.length &&
            walletIDs.length == v.length &&
            walletIDs.length == r.length &&
            walletIDs.length == s.length
        );

        for (uint i = 0; i < walletIDs.length; i++) {
            bytes32 walletID = walletIDs[i];
            address recipient = recipients[i];
            uint256 value = values[i];
            uint64 nonce = nonces[i];

            address signer = getMessageSigner(
                getWithdrawDigest(walletID, recipient, value, nonce), v[i], r[i], s[i]
            );

            Wallet storage wallet = wallets[walletID];

            if (
                wallet.withdrawNonce < nonce &&
                wallet.balance >= value &&
                wallet.linked[signer] &&
                recipient.send(value)
            ) {
                wallet.withdrawNonce = nonce;
                wallet.balance -= value;

                emit Withdraw(walletID, nonce, value, recipient);
            }
        }
    }

    /**
     * Settles funds from admin escrow into user wallets.
     */
    function settle(
        bytes32[] walletIDs,
        uint256[] requestIDs,
        uint256[] values) onlyAdmin public
    {
        require(
            walletIDs.length == requestIDs.length &&
            walletIDs.length == values.length
        );

        uint256 remainingEscrow = escrowBalance;

        for (uint i = 0; i < walletIDs.length; i++) {
            bytes32 walletID = walletIDs[i];
            uint256 value = values[i];

            require(value <= remainingEscrow);

            wallets[walletID].balance += value;
            remainingEscrow -= value;

            emit Settle(walletID, requestIDs[i], value);
        }

        escrowBalance = remainingEscrow;
    }

//  PURE GETTERS - FOR SIGNATURE GENERATION / VERIFICATION
    function getMessageSigner(
        bytes32 message,
        uint8 v, bytes32 r, bytes32 s) public pure returns(address)
    {
        bytes memory prefix = "\x19Ethereum Signed Message:\n32";
        bytes32 prefixedMessage = keccak256(
            abi.encodePacked(prefix, message)
        );
        return ecrecover(prefixedMessage, v, r, s);
    }

    function getNameDigest(
        string name) public pure returns (bytes32)
    {
        return keccak256(abi.encodePacked(name));
    }

    function getWalletDigest(
        bytes32 name,
        address root) public pure returns (bytes32)
    {
        return keccak256(abi.encodePacked(
            name, root
        ));
    }

    function getLinkDigest(
        bytes32 walletID,
        address agent) public pure returns (bytes32)
    {
        return keccak256(abi.encodePacked(
            walletID, agent
        ));
    }

    function getDebitDigest(
        bytes32 walletID,
        uint256 value,
        uint64 nonce) public pure returns (bytes32)
    {
        return keccak256(abi.encodePacked(
            walletID, value, nonce
        ));
    }

    function getWithdrawDigest(
        bytes32 walletID,
        address recipient,
        uint256 value,
        uint64 nonce) public pure returns (bytes32)
    {
        return keccak256(abi.encodePacked(
            walletID, recipient, value, nonce
        ));
    }

//  VIEW GETTERS - READ WALLET STATE
    function getDebitNonce(
        bytes32 walletID) public view returns (uint256)
    {
        return wallets[walletID].debitNonce + 1;
    }

    function getWithdrawNonce(
        bytes32 walletID) public view returns (uint256)
    {
        return wallets[walletID].withdrawNonce + 1;
    }

    function getLinkStatus(
        bytes32 walletID,
        address member) public view returns (bool)
    {
        return wallets[walletID].linked[member];
    }

    function getBalance(
        bytes32 walletID) public view returns (uint256)
    {
        return wallets[walletID].balance;
    }

    function getEscrowBalance() public view returns (uint256)
    {
      return escrowBalance;
    }

//  ADMIN MANAGEMENT
    function addAdmin(
        address newAdmin) onlyRootAdmin public
    {
        require(!isAdmin[newAdmin]);

        isAdmin[newAdmin] = true;
        admins.push(newAdmin);
    }

    function removeAdmin(
        address oldAdmin) onlyRootAdmin public
    {
        require(isAdmin[oldAdmin] && admins[0] != oldAdmin);

        bool found = false;
        for (uint i = 1; i < admins.length - 1; i++) {
            if (!found && admins[i] == oldAdmin) {
                found = true;
            }
            if (found) {
                admins[i] = admins[i + 1];
            }
        }

        admins.length--;
        isAdmin[oldAdmin] = false;
    }

    function changeRootAdmin(
        address newRootAdmin) onlyRootAdmin public
    {
        if (isAdmin[newRootAdmin] && admins[0] != newRootAdmin) {
            // Remove them & shorten the array so long as they are not currently root
            removeAdmin(newRootAdmin);
        }
        admins[0] = newRootAdmin;
        isAdmin[newRootAdmin] = true;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"walletIDs","type":"bytes32[]"},{"name":"requestIDs","type":"uint256[]"},{"name":"values","type":"uint256[]"}],"name":"settle","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":"oldAdmin","type":"address"}],"name":"removeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"walletIDs","type":"bytes32[]"},{"name":"values","type":"uint256[]"},{"name":"nonces","type":"uint64[]"},{"name":"v","type":"uint8[]"},{"name":"r","type":"bytes32[]"},{"name":"s","type":"bytes32[]"}],"name":"debit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"message","type":"bytes32"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"getMessageSigner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"walletID","type":"bytes32"},{"name":"agent","type":"address"}],"name":"getLinkDigest","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"walletIDs","type":"bytes32[]"},{"name":"recipients","type":"address[]"},{"name":"values","type":"uint256[]"},{"name":"nonces","type":"uint64[]"},{"name":"v","type":"uint8[]"},{"name":"r","type":"bytes32[]"},{"name":"s","type":"bytes32[]"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"}],"name":"getNameDigest","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"newRootAdmin","type":"address"}],"name":"changeRootAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"walletID","type":"bytes32"},{"name":"recipient","type":"address"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint64"}],"name":"getWithdrawDigest","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"addAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"walletID","type":"bytes32"},{"name":"value","type":"uint256"},{"name":"nonce","type":"uint64"}],"name":"getDebitDigest","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"walletID","type":"bytes32"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"bytes32"},{"name":"root","type":"address"}],"name":"getWalletDigest","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"walletID","type":"bytes32"}],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"walletIDs","type":"bytes32[]"},{"name":"nameIDs","type":"bytes32[]"},{"name":"agents","type":"address[]"},{"name":"v","type":"uint8[]"},{"name":"r","type":"bytes32[]"},{"name":"s","type":"bytes32[]"}],"name":"link","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"walletID","type":"bytes32"}],"name":"getDebitNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEscrowBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"walletID","type":"bytes32"}],"name":"getWithdrawNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"walletID","type":"bytes32"},{"name":"member","type":"address"}],"name":"getLinkStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"walletID","type":"bytes32"},{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"walletID","type":"bytes32"},{"indexed":true,"name":"agent","type":"address"}],"name":"Link","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"walletID","type":"bytes32"},{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"value","type":"uint256"}],"name":"Debit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"walletID","type":"bytes32"},{"indexed":true,"name":"requestID","type":"uint256"},{"indexed":true,"name":"value","type":"uint256"}],"name":"Settle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"walletID","type":"bytes32"},{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"value","type":"uint256"},{"indexed":false,"name":"recipient","type":"address"}],"name":"Withdraw","type":"event"}]

608060405234801561001057600080fd5b5060008054600181810183557f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639091018054600160a060020a03191633908117909155825260026020526040909120805460ff1916909117905561190e806100796000396000f3006080604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303612cb5811461011657806314bfd6d0146101df5780631785f53c146102135780632a856fcf146102345780632bfd91d4146103a65780633d44c476146103ca5780634eb933bf1461040057806362502fe7146105ab57806366eb463f146106045780636e7c1c2b14610625578063704802751461065957806371eb97101461067a5780638e739461146106a25780639dc4ca42146103ca578063b214faa5146106ba578063b5a030d8146106c5578063bb0c08b614610837578063c56e610e1461084f578063de9b33f914610864578063f8dcc3e01461087c575b600080fd5b34801561012257600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506108b49650505050505050565b005b3480156101eb57600080fd5b506101f76004356109bd565b60408051600160a060020a039092168252519081900360200190f35b34801561021f57600080fd5b506101dd600160a060020a03600435166109e5565b34801561024057600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b789650505050505050565b3480156103b257600080fd5b506101f760043560ff60243516604435606435610d7f565b3480156103d657600080fd5b506103ee600435600160a060020a0360243516610ee0565b60408051918252519081900360200190f35b34801561040c57600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610f7e9650505050505050565b3480156105b757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103ee9436949293602493928401919081908401838280828437509497506111f19650505050505050565b34801561061057600080fd5b506101dd600160a060020a03600435166112bb565b34801561063157600080fd5b506103ee600435600160a060020a036024351660443567ffffffffffffffff606435166113ac565b34801561066557600080fd5b506101dd600160a060020a036004351661147e565b34801561068657600080fd5b506103ee60043560243567ffffffffffffffff60443516611543565b3480156106ae57600080fd5b506103ee6004356115f6565b6101dd600435611608565b3480156106d157600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061164e9650505050505050565b34801561084357600080fd5b506103ee60043561180a565b34801561085b57600080fd5b506103ee611832565b34801561087057600080fd5b506103ee600435611839565b34801561088857600080fd5b506108a0600435600160a060020a036024351661186d565b604080519115158252519081900360200190f35b3360009081526002602052604081205481908190819060ff1615156108d857600080fd5b855187511480156108ea575084518751145b15156108f557600080fd5b6003549350600092505b86518310156109b257868381518110151561091657fe5b906020019060200201519150848381518110151561093057fe5b6020908102909101015190508381111561094957600080fd5b600082815260016020526040902080548201905585519381900393819087908590811061097257fe5b6020908102909101015160405184907f0cd738c9c0bbe501d6da72544aaef2b26bfdcbffa10507ff2755918321897c5690600090a46001909201916108ff565b505050600355505050565b60008054829081106109cb57fe5b600091825260209091200154600160a060020a0316905081565b6000806000808154811015156109f757fe5b600091825260209091200154600160a060020a03163314610a1757600080fd5b600160a060020a03831660009081526002602052604090205460ff168015610a6b575082600160a060020a0316600080815481101515610a5357fe5b600091825260209091200154600160a060020a031614155b1515610a7657600080fd5b506000905060015b60005460001901811015610b415781158015610ac5575082600160a060020a0316600082815481101515610aae57fe5b600091825260209091200154600160a060020a0316145b15610acf57600191505b8115610b39576000805460018301908110610ae657fe5b60009182526020822001548154600160a060020a03909116919083908110610b0a57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600101610a7e565b6000805490610b5490600019830161189b565b505050600160a060020a03166000908152600260205260409020805460ff19169055565b3360009081526002602052604081205481908190819081908190819060ff161515610ba257600080fd5b8b518d51148015610bb457508a518d51145b8015610bc1575089518d51145b8015610bce575088518d51145b8015610bdb575087518d51145b1515610be657600080fd5b60009650600095505b8c51861015610d67578c86815181101515610c0657fe5b9060200190602002015194508b86815181101515610c2057fe5b9060200190602002015193508a86815181101515610c3a57fe5b906020019060200201519250610ca1610c54868686611543565b8b88815181101515610c6257fe5b906020019060200201518b89815181101515610c7a57fe5b906020019060200201518b8a815181101515610c9257fe5b90602001906020020151610d7f565b60008681526001602052604090206002810154919350915067ffffffffffffffff8085169116108015610cd5575080548411155b8015610cfb5750600160a060020a038216600090815260018201602052604090205460ff165b15610d5c5760028101805467ffffffffffffffff191667ffffffffffffffff85169081179091558154859003825560405185919087907f7268e507839e4153e67d3077766172d7413186c098053936a070dc179ad7938290600090a4958301955b600190950194610bef565b50506003805490950190945550505050505050505050565b604080518082018252601c8082527f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208084019182529351600094859385938b939092019182918083835b60208310610dea5780518252601f199092019160209182019101610dcb565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b60208310610e4a5780518252601f199092019160209182019101610e2b565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080845283830180875282905260ff8e1684870152606084018d9052608084018c905294519097506001965060a080840196509194601f19820194509281900390910191865af1158015610eca573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6040805160208082018590526c01000000000000000000000000600160a060020a0385160282840152825160348184030181526054909201928390528151600093918291908401908083835b60208310610f4b5780518252601f199092019160209182019101610f2c565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b3360009081526002602052604081205481908190819081908190819060ff161515610fa857600080fd5b8c518e51148015610fba57508b518e51145b8015610fc757508a518e51145b8015610fd4575089518e51145b8015610fe1575088518e51145b8015610fee575087518e51145b1515610ff957600080fd5b600096505b8d518710156111e1578d8781518110151561101557fe5b9060200190602002015195508c8781518110151561102f57fe5b9060200190602002015194508b8781518110151561104957fe5b9060200190602002015193508a8781518110151561106357fe5b9060200190602002015192506110bc61107e878787876113ac565b8b8981518110151561108c57fe5b906020019060200201518b8a8151811015156110a457fe5b906020019060200201518b8b815181101515610c9257fe5b60008781526001602052604090206002810154919350915067ffffffffffffffff80851668010000000000000000909204161080156110fc575080548411155b80156111225750600160a060020a038216600090815260018201602052604090205460ff165b801561114f5750604051600160a060020a0386169085156108fc029086906000818181858888f193505050505b156111d65760028101805467ffffffffffffffff85166801000000000000000081026fffffffffffffffff000000000000000019909216919091179091558154859003825560408051600160a060020a0388168152905186929189917f7b840614242a6f8bab9f3a654f6ce3aa212f8a4e3f3d3a9845a91bb891394cbc9181900360200190a45b600190960195610ffe565b5050505050505050505050505050565b6000816040516020018082805190602001908083835b602083106112265780518252601f199092019160209182019101611207565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106112895780518252601f19909201916020918201910161126a565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b60008054819081106112c957fe5b600091825260209091200154600160a060020a031633146112e957600080fd5b600160a060020a03811660009081526002602052604090205460ff16801561133d575080600160a060020a031660008081548110151561132557fe5b600091825260209091200154600160a060020a031614155b1561134b5761134b816109e5565b8060008081548110151561135b57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03948516179055929091168152600290915260409020805460ff19166001179055565b6040805160208082018790526c01000000000000000000000000600160a060020a038716028284015260548201859052780100000000000000000000000000000000000000000000000067ffffffffffffffff85160260748301528251605c818403018152607c909201928390528151600093918291908401908083835b602083106114495780518252601f19909201916020918201910161142a565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b600080548190811061148c57fe5b600091825260209091200154600160a060020a031633146114ac57600080fd5b600160a060020a03811660009081526002602052604090205460ff16156114d257600080fd5b600160a060020a03166000818152600260205260408120805460ff19166001908117909155815490810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b604080516020808201869052818301859052780100000000000000000000000000000000000000000000000067ffffffffffffffff8516026060830152825160488184030181526068909201928390528151600093918291908401908083835b602083106115c25780518252601f1990920191602091820191016115a3565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b60009081526001602052604090205490565b60008181526001602052604080822080543490810190915590519091339184917f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac91a450565b33600090815260026020526040812054819081908190819060ff16151561167457600080fd5b89518b51148015611686575088518b51145b8015611693575087518b51145b80156116a0575086518b51145b80156116ad575085518b51145b15156116b857600080fd5b600094505b8a518510156117fd578a858151811015156116d457fe5b90602001906020020151935088858151811015156116ee57fe5b9060200190602002015192506117456117078585610ee0565b898781518110151561171557fe5b90602001906020020151898881518110151561172d57fe5b906020019060200201518989815181101515610c9257fe5b6000858152600160208181526040808420600160a060020a038616855292830190915290912054919350915060ff168061179e575061179b8a8681518110151561178b57fe5b9060200190602002015183610ee0565b84145b156117f257600160a060020a038316600081815260018381016020526040808320805460ff19169092179091555186917fe96896758b540353b26660205100e2756a7e5495f07920d72859afc60e5f913691a35b6001909401936116bd565b5050505050505050505050565b60009081526001602081905260409091206002015467ffffffffffffffff9081169091011690565b6003545b90565b60009081526001602081905260409091206002015468010000000000000000900467ffffffffffffffff9081169091011690565b6000828152600160208181526040808420600160a060020a0386168552909201905290205460ff1692915050565b8154818355818111156118bf576000838152602090206118bf9181019083016118c4565b505050565b61183691905b808211156118de57600081556001016118ca565b50905600a165627a7a723058200c0c159cab950b01532c66a895c1a4da49a0fb8fc725f7a5d7a4871ad47b60ce0029

Deployed Bytecode

0x6080604052600436106101115763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303612cb5811461011657806314bfd6d0146101df5780631785f53c146102135780632a856fcf146102345780632bfd91d4146103a65780633d44c476146103ca5780634eb933bf1461040057806362502fe7146105ab57806366eb463f146106045780636e7c1c2b14610625578063704802751461065957806371eb97101461067a5780638e739461146106a25780639dc4ca42146103ca578063b214faa5146106ba578063b5a030d8146106c5578063bb0c08b614610837578063c56e610e1461084f578063de9b33f914610864578063f8dcc3e01461087c575b600080fd5b34801561012257600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506108b49650505050505050565b005b3480156101eb57600080fd5b506101f76004356109bd565b60408051600160a060020a039092168252519081900360200190f35b34801561021f57600080fd5b506101dd600160a060020a03600435166109e5565b34801561024057600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610b789650505050505050565b3480156103b257600080fd5b506101f760043560ff60243516604435606435610d7f565b3480156103d657600080fd5b506103ee600435600160a060020a0360243516610ee0565b60408051918252519081900360200190f35b34801561040c57600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610f7e9650505050505050565b3480156105b757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103ee9436949293602493928401919081908401838280828437509497506111f19650505050505050565b34801561061057600080fd5b506101dd600160a060020a03600435166112bb565b34801561063157600080fd5b506103ee600435600160a060020a036024351660443567ffffffffffffffff606435166113ac565b34801561066557600080fd5b506101dd600160a060020a036004351661147e565b34801561068657600080fd5b506103ee60043560243567ffffffffffffffff60443516611543565b3480156106ae57600080fd5b506103ee6004356115f6565b6101dd600435611608565b3480156106d157600080fd5b50604080516020600480358082013583810280860185019096528085526101dd95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061164e9650505050505050565b34801561084357600080fd5b506103ee60043561180a565b34801561085b57600080fd5b506103ee611832565b34801561087057600080fd5b506103ee600435611839565b34801561088857600080fd5b506108a0600435600160a060020a036024351661186d565b604080519115158252519081900360200190f35b3360009081526002602052604081205481908190819060ff1615156108d857600080fd5b855187511480156108ea575084518751145b15156108f557600080fd5b6003549350600092505b86518310156109b257868381518110151561091657fe5b906020019060200201519150848381518110151561093057fe5b6020908102909101015190508381111561094957600080fd5b600082815260016020526040902080548201905585519381900393819087908590811061097257fe5b6020908102909101015160405184907f0cd738c9c0bbe501d6da72544aaef2b26bfdcbffa10507ff2755918321897c5690600090a46001909201916108ff565b505050600355505050565b60008054829081106109cb57fe5b600091825260209091200154600160a060020a0316905081565b6000806000808154811015156109f757fe5b600091825260209091200154600160a060020a03163314610a1757600080fd5b600160a060020a03831660009081526002602052604090205460ff168015610a6b575082600160a060020a0316600080815481101515610a5357fe5b600091825260209091200154600160a060020a031614155b1515610a7657600080fd5b506000905060015b60005460001901811015610b415781158015610ac5575082600160a060020a0316600082815481101515610aae57fe5b600091825260209091200154600160a060020a0316145b15610acf57600191505b8115610b39576000805460018301908110610ae657fe5b60009182526020822001548154600160a060020a03909116919083908110610b0a57fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a031602179055505b600101610a7e565b6000805490610b5490600019830161189b565b505050600160a060020a03166000908152600260205260409020805460ff19169055565b3360009081526002602052604081205481908190819081908190819060ff161515610ba257600080fd5b8b518d51148015610bb457508a518d51145b8015610bc1575089518d51145b8015610bce575088518d51145b8015610bdb575087518d51145b1515610be657600080fd5b60009650600095505b8c51861015610d67578c86815181101515610c0657fe5b9060200190602002015194508b86815181101515610c2057fe5b9060200190602002015193508a86815181101515610c3a57fe5b906020019060200201519250610ca1610c54868686611543565b8b88815181101515610c6257fe5b906020019060200201518b89815181101515610c7a57fe5b906020019060200201518b8a815181101515610c9257fe5b90602001906020020151610d7f565b60008681526001602052604090206002810154919350915067ffffffffffffffff8085169116108015610cd5575080548411155b8015610cfb5750600160a060020a038216600090815260018201602052604090205460ff165b15610d5c5760028101805467ffffffffffffffff191667ffffffffffffffff85169081179091558154859003825560405185919087907f7268e507839e4153e67d3077766172d7413186c098053936a070dc179ad7938290600090a4958301955b600190950194610bef565b50506003805490950190945550505050505050505050565b604080518082018252601c8082527f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208084019182529351600094859385938b939092019182918083835b60208310610dea5780518252601f199092019160209182019101610dcb565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b60208310610e4a5780518252601f199092019160209182019101610e2b565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080845283830180875282905260ff8e1684870152606084018d9052608084018c905294519097506001965060a080840196509194601f19820194509281900390910191865af1158015610eca573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b6040805160208082018590526c01000000000000000000000000600160a060020a0385160282840152825160348184030181526054909201928390528151600093918291908401908083835b60208310610f4b5780518252601f199092019160209182019101610f2c565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b3360009081526002602052604081205481908190819081908190819060ff161515610fa857600080fd5b8c518e51148015610fba57508b518e51145b8015610fc757508a518e51145b8015610fd4575089518e51145b8015610fe1575088518e51145b8015610fee575087518e51145b1515610ff957600080fd5b600096505b8d518710156111e1578d8781518110151561101557fe5b9060200190602002015195508c8781518110151561102f57fe5b9060200190602002015194508b8781518110151561104957fe5b9060200190602002015193508a8781518110151561106357fe5b9060200190602002015192506110bc61107e878787876113ac565b8b8981518110151561108c57fe5b906020019060200201518b8a8151811015156110a457fe5b906020019060200201518b8b815181101515610c9257fe5b60008781526001602052604090206002810154919350915067ffffffffffffffff80851668010000000000000000909204161080156110fc575080548411155b80156111225750600160a060020a038216600090815260018201602052604090205460ff165b801561114f5750604051600160a060020a0386169085156108fc029086906000818181858888f193505050505b156111d65760028101805467ffffffffffffffff85166801000000000000000081026fffffffffffffffff000000000000000019909216919091179091558154859003825560408051600160a060020a0388168152905186929189917f7b840614242a6f8bab9f3a654f6ce3aa212f8a4e3f3d3a9845a91bb891394cbc9181900360200190a45b600190960195610ffe565b5050505050505050505050505050565b6000816040516020018082805190602001908083835b602083106112265780518252601f199092019160209182019101611207565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106112895780518252601f19909201916020918201910161126a565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b60008054819081106112c957fe5b600091825260209091200154600160a060020a031633146112e957600080fd5b600160a060020a03811660009081526002602052604090205460ff16801561133d575080600160a060020a031660008081548110151561132557fe5b600091825260209091200154600160a060020a031614155b1561134b5761134b816109e5565b8060008081548110151561135b57fe5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03948516179055929091168152600290915260409020805460ff19166001179055565b6040805160208082018790526c01000000000000000000000000600160a060020a038716028284015260548201859052780100000000000000000000000000000000000000000000000067ffffffffffffffff85160260748301528251605c818403018152607c909201928390528151600093918291908401908083835b602083106114495780518252601f19909201916020918201910161142a565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912098975050505050505050565b600080548190811061148c57fe5b600091825260209091200154600160a060020a031633146114ac57600080fd5b600160a060020a03811660009081526002602052604090205460ff16156114d257600080fd5b600160a060020a03166000818152600260205260408120805460ff19166001908117909155815490810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b604080516020808201869052818301859052780100000000000000000000000000000000000000000000000067ffffffffffffffff8516026060830152825160488184030181526068909201928390528151600093918291908401908083835b602083106115c25780518252601f1990920191602091820191016115a3565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b60009081526001602052604090205490565b60008181526001602052604080822080543490810190915590519091339184917f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac91a450565b33600090815260026020526040812054819081908190819060ff16151561167457600080fd5b89518b51148015611686575088518b51145b8015611693575087518b51145b80156116a0575086518b51145b80156116ad575085518b51145b15156116b857600080fd5b600094505b8a518510156117fd578a858151811015156116d457fe5b90602001906020020151935088858151811015156116ee57fe5b9060200190602002015192506117456117078585610ee0565b898781518110151561171557fe5b90602001906020020151898881518110151561172d57fe5b906020019060200201518989815181101515610c9257fe5b6000858152600160208181526040808420600160a060020a038616855292830190915290912054919350915060ff168061179e575061179b8a8681518110151561178b57fe5b9060200190602002015183610ee0565b84145b156117f257600160a060020a038316600081815260018381016020526040808320805460ff19169092179091555186917fe96896758b540353b26660205100e2756a7e5495f07920d72859afc60e5f913691a35b6001909401936116bd565b5050505050505050505050565b60009081526001602081905260409091206002015467ffffffffffffffff9081169091011690565b6003545b90565b60009081526001602081905260409091206002015468010000000000000000900467ffffffffffffffff9081169091011690565b6000828152600160208181526040808420600160a060020a0386168552909201905290205460ff1692915050565b8154818355818111156118bf576000838152602090206118bf9181019083016118c4565b505050565b61183691905b808211156118de57600081556001016118ca565b50905600a165627a7a723058200c0c159cab950b01532c66a895c1a4da49a0fb8fc725f7a5d7a4871ad47b60ce0029

Swarm Source

bzzr://0c0c159cab950b01532c66a895c1a4da49a0fb8fc725f7a5d7a4871ad47b60ce

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.