ETH Price: $3,351.57 (+1.09%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Parent Transaction Hash Block From To
218132262024-10-31 23:03:19443 days ago1730415799  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TipManager

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC20 {
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

contract TipManager {
    mapping(address => uint256) public nativeBalance;
    mapping(address => mapping(address => uint256)) public tokenBalance;
    address[] public supportedTokens;
    mapping(address => bool) private isTokenSupported;
    address public owner;
    uint256 public constant FEE_PERCENTAGE = 3;

    struct Tip {
        address sender;
        string senderName;
        string message;
        uint256 amount;
        address token; // address(0) for native currency
        uint256 timestamp;
    }

    mapping(address => Tip[]) public tips;

    event TipReceived(
        address indexed sender,
        address indexed recipient,
        address indexed token,
        uint256 amount,
        string senderName,
        string message
    );
    event Withdrawn(address indexed user, uint256 amount, address token);
    event AllBalancesWithdrawn(address indexed user);

    error InsufficientTip();
    error NoBalanceToWithdraw();
    error TokenTransferFailed();
    error CannotTipZeroAddress();

    constructor() {
        owner = msg.sender;
    }

    function tipNative(
        address recipient,
        string memory senderName,
        string memory message
    ) external payable {
        if (recipient == address(0)) {
            revert CannotTipZeroAddress();
        }

        if (msg.value == 0) {
            revert InsufficientTip();
        }

        uint256 fee = (msg.value * FEE_PERCENTAGE) / 100;
        uint256 remainingTip = msg.value - fee;

        nativeBalance[recipient] += remainingTip;
        nativeBalance[owner] += fee;

        tips[recipient].push(
            Tip({
                sender: msg.sender,
                senderName: senderName,
                message: message,
                amount: remainingTip,
                token: address(0),
                timestamp: block.timestamp
            })
        );

        emit TipReceived(
            msg.sender,
            recipient,
            address(0),
            remainingTip,
            senderName,
            message
        );
    }

    function tipToken(
        address token,
        address recipient,
        uint256 amount,
        string memory senderName,
        string memory message
    ) external {
        if (recipient == address(0)) {
            revert CannotTipZeroAddress();
        }

        if (amount == 0) {
            revert InsufficientTip();
        }

        uint256 fee = (amount * FEE_PERCENTAGE) / 100;
        uint256 remainingTip = amount - fee;

        bool success = IERC20(token).transferFrom(
            msg.sender,
            address(this),
            amount
        );
        if (!success) {
            revert TokenTransferFailed();
        }

        tokenBalance[recipient][token] += remainingTip;
        tokenBalance[owner][token] += fee;

        if (!isTokenSupported[token]) {
            supportedTokens.push(token);
            isTokenSupported[token] = true;
        }

        tips[recipient].push(
            Tip({
                sender: msg.sender,
                senderName: senderName,
                message: message,
                amount: remainingTip,
                token: token,
                timestamp: block.timestamp
            })
        );

        emit TipReceived(
            msg.sender,
            recipient,
            token,
            remainingTip,
            senderName,
            message
        );
    }

    function withdrawNative() external {
        uint256 amount = nativeBalance[msg.sender];
        if (amount == 0) {
            revert NoBalanceToWithdraw();
        }

        nativeBalance[msg.sender] = 0;
        payable(msg.sender).transfer(amount);

        emit Withdrawn(msg.sender, amount, address(0));
    }

    function withdrawToken(address token) external {
        uint256 amount = tokenBalance[msg.sender][token];
        if (amount == 0) {
            revert NoBalanceToWithdraw();
        }

        tokenBalance[msg.sender][token] = 0;
        bool success = IERC20(token).transfer(msg.sender, amount);
        if (!success) {
            revert TokenTransferFailed();
        }

        emit Withdrawn(msg.sender, amount, token);
    }

    function withdrawAll() external {
        uint256 nativeAmount = nativeBalance[msg.sender];
        if (nativeAmount > 0) {
            nativeBalance[msg.sender] = 0;
            payable(msg.sender).transfer(nativeAmount);
            emit Withdrawn(msg.sender, nativeAmount, address(0));
        }

        for (uint256 i = 0; i < supportedTokens.length; i++) {
            address token = supportedTokens[i];
            uint256 tokenAmount = tokenBalance[msg.sender][token];
            if (tokenAmount > 0) {
                tokenBalance[msg.sender][token] = 0;
                bool success = IERC20(token).transfer(msg.sender, tokenAmount);
                if (!success) {
                    revert TokenTransferFailed();
                }
                emit Withdrawn(msg.sender, tokenAmount, token);
            }
        }

        emit AllBalancesWithdrawn(msg.sender);
    }

    receive() external payable {}

    function getNativeBalance(address user) external view returns (uint256) {
        return nativeBalance[user];
    }

    function getTokenBalances(
        address user
    ) external view returns (address[] memory, uint256[] memory) {
        uint256 tokenCount = supportedTokens.length;
        address[] memory tokens = new address[](tokenCount);
        uint256[] memory balances = new uint256[](tokenCount);

        for (uint256 i = 0; i < tokenCount; i++) {
            address token = supportedTokens[i];
            tokens[i] = token;
            balances[i] = tokenBalance[user][token];
        }

        return (tokens, balances);
    }

    function getTips(address recipient) external view returns (Tip[] memory) {
        return tips[recipient];
    }

    function getTipCount(address recipient) external view returns (uint256) {
        return tips[recipient].length;
    }

    function getTipsPaginated(
        address recipient,
        uint256 startIndex,
        uint256 endIndex
    ) external view returns (Tip[] memory) {
        require(startIndex < endIndex, "Invalid index range");
        require(endIndex <= tips[recipient].length, "End index out of bounds");

        uint256 count = endIndex - startIndex;
        Tip[] memory paginatedTips = new Tip[](count);

        for (uint256 i = 0; i < count; i++) {
            paginatedTips[i] = tips[recipient][startIndex + i];
        }

        return paginatedTips;
    }
}

Settings
{
  "remappings": [
    "forge-std/=lib/forge-std/src/",
    "solady/=lib/solady/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotTipZeroAddress","type":"error"},{"inputs":[],"name":"InsufficientTip","type":"error"},{"inputs":[],"name":"NoBalanceToWithdraw","type":"error"},{"inputs":[],"name":"TokenTransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"AllBalancesWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"senderName","type":"string"},{"indexed":false,"internalType":"string","name":"message","type":"string"}],"name":"TipReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"FEE_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNativeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"getTipCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"getTips","outputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string","name":"senderName","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct TipManager.Tip[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"startIndex","type":"uint256"},{"internalType":"uint256","name":"endIndex","type":"uint256"}],"name":"getTipsPaginated","outputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string","name":"senderName","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct TipManager.Tip[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getTokenBalances","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nativeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"supportedTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"string","name":"senderName","type":"string"},{"internalType":"string","name":"message","type":"string"}],"name":"tipNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"senderName","type":"string"},{"internalType":"string","name":"message","type":"string"}],"name":"tipToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tips","outputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"string","name":"senderName","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"tokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052348015600f57600080fd5b50600480546001600160a01b03191633179055611b8f806100316000396000f3fe6080604052600436106100f65760003560e01c8063853828b61161008a578063c625562611610059578063c6255626146102d3578063cf8b2086146102f3578063d145ffbf14610329578063efd8be621461034957600080fd5b8063853828b614610246578063894760691461025b5780638da5cb5b1461027b578063aabd6f11146102b357600080fd5b806350431ce4116100c657806350431ce4146101bc57806360e8b98b146101d357806373574461146101e6578063764f3aa81461021857600080fd5b80620b46f8146101025780631049334f1461012a578063403e3158146101625780634ffdcd331461018f57600080fd5b366100fd57005b600080fd5b34801561010e57600080fd5b50610117600381565b6040519081526020015b60405180910390f35b34801561013657600080fd5b50610117610145366004611495565b600160209081526000928352604080842090915290825290205481565b34801561016e57600080fd5b5061011761017d3660046114c8565b60006020819052908152604090205481565b34801561019b57600080fd5b506101af6101aa3660046114c8565b61037f565b6040516101219190611530565b3480156101c857600080fd5b506101d161055b565b005b6101d16101e136600461169d565b6105f4565b3480156101f257600080fd5b50610206610201366004611716565b6107ee565b60405161012196959493929190611740565b34801561022457600080fd5b506102386102333660046114c8565b61096a565b60405161012192919061179e565b34801561025257600080fd5b506101d1610abd565b34801561026757600080fd5b506101d16102763660046114c8565b610cae565b34801561028757600080fd5b5060045461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610121565b3480156102bf57600080fd5b506101d16102ce366004611829565b610dd8565b3480156102df57600080fd5b5061029b6102ee3660046118bd565b611109565b3480156102ff57600080fd5b5061011761030e3660046114c8565b6001600160a01b031660009081526005602052604090205490565b34801561033557600080fd5b506101af6103443660046118d6565b611133565b34801561035557600080fd5b506101176103643660046114c8565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b0381166000908152600560209081526040808320805482518185028101850190935280835260609492939192909184015b828210156105505760008481526020908190206040805160c081019091526006850290910180546001600160a01b03168252600181018054929391929184019161040090611909565b80601f016020809104026020016040519081016040528092919081815260200182805461042c90611909565b80156104795780601f1061044e57610100808354040283529160200191610479565b820191906000526020600020905b81548152906001019060200180831161045c57829003601f168201915b5050505050815260200160028201805461049290611909565b80601f01602080910402602001604051908101604052809291908181526020018280546104be90611909565b801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050509183525050600382015460208083019190915260048301546001600160a01b0316604083015260059092015460609091015290825260019290920191016103b7565b505050509050919050565b336000908152602081905260408120549081900361058c5760405163177b02e160e31b815260040160405180910390fd5b336000818152602081905260408082208290555183156108fc0291849190818181858888f193505050501580156105c7573d6000803e3d6000fd5b5060408051828152600060208201523391600080516020611b3a833981519152910160405180910390a250565b6001600160a01b03831661061b5760405163e3d50be960e01b815260040160405180910390fd5b3460000361063c57604051630139d04f60e31b815260040160405180910390fd5b6000606461064b600334611959565b6106559190611976565b905060006106638234611998565b905080600080876001600160a01b03166001600160a01b03168152602001908152602001600020600082825461069991906119ab565b90915550506004546001600160a01b0316600090815260208190526040812080548492906106c89084906119ab565b90915550506001600160a01b038581166000908152600560209081526040808320815160c0810183523381528084018a815292810189905260608101879052608081018590524260a082015281546001808201845592865293909420845160069094020180546001600160a01b0319169390951692909217845551919291908201906107549082611a0d565b50604082015160028201906107699082611a0d565b506060820151600382015560808201516004820180546001600160a01b0319166001600160a01b0392831617905560a09092015160059091015560405160009187169033907fd70d5ee55be5acb7ce76d7019ed2352e9c18fdd3b0da09032222d0b1fe22626b906107df9086908a908a90611acc565b60405180910390a45050505050565b6005602052816000526040600020818154811061080a57600080fd5b6000918252602090912060069091020180546001820180546001600160a01b03909216945091925061083b90611909565b80601f016020809104026020016040519081016040528092919081815260200182805461086790611909565b80156108b45780601f10610889576101008083540402835291602001916108b4565b820191906000526020600020905b81548152906001019060200180831161089757829003601f168201915b5050505050908060020180546108c990611909565b80601f01602080910402602001604051908101604052809291908181526020018280546108f590611909565b80156109425780601f1061091757610100808354040283529160200191610942565b820191906000526020600020905b81548152906001019060200180831161092557829003601f168201915b5050505060038301546004840154600590940154929390926001600160a01b03909116915086565b600254606090819060008167ffffffffffffffff81111561098d5761098d6115f8565b6040519080825280602002602001820160405280156109b6578160200160208202803683370190505b50905060008267ffffffffffffffff8111156109d4576109d46115f8565b6040519080825280602002602001820160405280156109fd578160200160208202803683370190505b50905060005b83811015610ab157600060028281548110610a2057610a20611b01565b9060005260206000200160009054906101000a90046001600160a01b0316905080848381518110610a5357610a53611b01565b6001600160a01b03928316602091820292909201810191909152898216600090815260018252604080822093851682529290915220548351849084908110610a9d57610a9d611b01565b602090810291909101015250600101610a03565b50909590945092505050565b336000908152602081905260409020548015610b3957336000818152602081905260408082208290555183156108fc0291849190818181858888f19350505050158015610b0e573d6000803e3d6000fd5b5060408051828152600060208201523391600080516020611b3a833981519152910160405180910390a25b60005b600254811015610c7f57600060028281548110610b5b57610b5b611b01565b60009182526020808320909101543383526001825260408084206001600160a01b03909216808552919092529120549091508015610c75573360008181526001602090815260408083206001600160a01b03871680855292528083208390555163a9059cbb60e01b8152600481019390935260248301849052909163a9059cbb906044016020604051808303816000875af1158015610bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c229190611b17565b905080610c425760405163022e258160e11b815260040160405180910390fd5b604080518381526001600160a01b03851660208201523391600080516020611b3a833981519152910160405180910390a2505b5050600101610b3c565b5060405133907f9e7a99d1ff9a9ef9700c5f86d095ffb4650749eb7f2b555065a33444ac284a0690600090a250565b3360009081526001602090815260408083206001600160a01b038516845290915281205490819003610cf35760405163177b02e160e31b815260040160405180910390fd5b3360008181526001602090815260408083206001600160a01b03871680855292528083208390555163a9059cbb60e01b8152600481019390935260248301849052909163a9059cbb906044016020604051808303816000875af1158015610d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d829190611b17565b905080610da25760405163022e258160e11b815260040160405180910390fd5b604080518381526001600160a01b03851660208201523391600080516020611b3a833981519152910160405180910390a2505050565b6001600160a01b038416610dff5760405163e3d50be960e01b815260040160405180910390fd5b82600003610e2057604051630139d04f60e31b815260040160405180910390fd5b60006064610e2f600386611959565b610e399190611976565b90506000610e478286611998565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506000906001600160a01b038916906323b872dd906064016020604051808303816000875af1158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611b17565b905080610ee45760405163022e258160e11b815260040160405180910390fd5b6001600160a01b038088166000908152600160209081526040808320938c1683529290529081208054849290610f1b9084906119ab565b90915550506004546001600160a01b039081166000908152600160209081526040808320938c1683529290529081208054859290610f5a9084906119ab565b90915550506001600160a01b03881660009081526003602052604090205460ff16610fe3576002805460018082019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038b169081179091556000908152600360205260409020805460ff191690911790555b6001600160a01b038781166000908152600560209081526040808320815160c0810183523381528084018b81529281018a9052606081018890528d861660808201524260a082015281546001808201845592865293909420845160069094020180546001600160a01b03191693909516929092178455519192919082019061106b9082611a0d565b50604082015160028201906110809082611a0d565b506060820151600382015560808201516004820180546001600160a01b0319166001600160a01b0392831617905560a0909201516005909101556040518982169189169033907fd70d5ee55be5acb7ce76d7019ed2352e9c18fdd3b0da09032222d0b1fe22626b906110f79087908b908b90611acc565b60405180910390a45050505050505050565b6002818154811061111957600080fd5b6000918252602090912001546001600160a01b0316905081565b606081831061117f5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420696e6465782072616e676560681b60448201526064015b60405180910390fd5b6001600160a01b0384166000908152600560205260409020548211156111e75760405162461bcd60e51b815260206004820152601760248201527f456e6420696e646578206f7574206f6620626f756e64730000000000000000006044820152606401611176565b60006111f38484611998565b905060008167ffffffffffffffff811115611210576112106115f8565b60405190808252806020026020018201604052801561128c57816020015b6112796040518060c0016040528060006001600160a01b0316815260200160608152602001606081526020016000815260200160006001600160a01b03168152602001600081525090565b81526020019060019003908161122e5790505b50905060005b8281101561146f576001600160a01b03871660009081526005602052604090206112bc82886119ab565b815481106112cc576112cc611b01565b60009182526020918290206040805160c0810190915260069092020180546001600160a01b03168252600181018054929391929184019161130c90611909565b80601f016020809104026020016040519081016040528092919081815260200182805461133890611909565b80156113855780601f1061135a57610100808354040283529160200191611385565b820191906000526020600020905b81548152906001019060200180831161136857829003601f168201915b5050505050815260200160028201805461139e90611909565b80601f01602080910402602001604051908101604052809291908181526020018280546113ca90611909565b80156114175780601f106113ec57610100808354040283529160200191611417565b820191906000526020600020905b8154815290600101906020018083116113fa57829003601f168201915b50505091835250506003820154602082015260048201546001600160a01b03166040820152600590910154606090910152825183908390811061145c5761145c611b01565b6020908102919091010152600101611292565b5095945050505050565b80356001600160a01b038116811461149057600080fd5b919050565b600080604083850312156114a857600080fd5b6114b183611479565b91506114bf60208401611479565b90509250929050565b6000602082840312156114da57600080fd5b6114e382611479565b9392505050565b6000815180845260005b81811015611510576020818501810151868301820152016114f4565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156115ec57868503603f19018452815180516001600160a01b0316865260208082015160c091880182905290611593908801826114ea565b9050604082015187820360408901526115ac82826114ea565b606084810151908a01526080808501516001600160a01b0316908a015260a093840151939098019290925250506020938401939190910190600101611558565b50929695505050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261161f57600080fd5b813567ffffffffffffffff811115611639576116396115f8565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611668576116686115f8565b60405281815283820160200185101561168057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156116b257600080fd5b6116bb84611479565b9250602084013567ffffffffffffffff8111156116d757600080fd5b6116e38682870161160e565b925050604084013567ffffffffffffffff81111561170057600080fd5b61170c8682870161160e565b9150509250925092565b6000806040838503121561172957600080fd5b61173283611479565b946020939093013593505050565b6001600160a01b038716815260c060208201819052600090611764908301886114ea565b828103604084015261177681886114ea565b606084019690965250506001600160a01b0392909216608083015260a0909101529392505050565b6040808252835190820181905260009060208501906060840190835b818110156117e15783516001600160a01b03168352602093840193909201916001016117ba565b50508381036020808601919091528551808352918101925085019060005b8181101561181d5782518452602093840193909201916001016117ff565b50919695505050505050565b600080600080600060a0868803121561184157600080fd5b61184a86611479565b945061185860208701611479565b935060408601359250606086013567ffffffffffffffff81111561187b57600080fd5b6118878882890161160e565b925050608086013567ffffffffffffffff8111156118a457600080fd5b6118b08882890161160e565b9150509295509295909350565b6000602082840312156118cf57600080fd5b5035919050565b6000806000606084860312156118eb57600080fd5b6118f484611479565b95602085013595506040909401359392505050565b600181811c9082168061191d57607f821691505b60208210810361193d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761197057611970611943565b92915050565b60008261199357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561197057611970611943565b8082018082111561197057611970611943565b601f821115611a0857806000526020600020601f840160051c810160208510156119e55750805b601f840160051c820191505b81811015611a0557600081556001016119f1565b50505b505050565b815167ffffffffffffffff811115611a2757611a276115f8565b611a3b81611a358454611909565b846119be565b6020601f821160018114611a6f5760008315611a575750848201515b600019600385901b1c1916600184901b178455611a05565b600084815260208120601f198516915b82811015611a9f5787850151825560209485019460019092019101611a7f565b5084821015611abd5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b838152606060208201526000611ae560608301856114ea565b8281036040840152611af781856114ea565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b2957600080fd5b815180151581146114e357600080fdfecbcdbdf10631a43cc99c80acace8232649421c3f4f73919f16013d47c83a687aa264697066735822122023df48cc12844a15279a31d52c9ac422f3be947e577e304043dc90358c9e8f6c64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106100f65760003560e01c8063853828b61161008a578063c625562611610059578063c6255626146102d3578063cf8b2086146102f3578063d145ffbf14610329578063efd8be621461034957600080fd5b8063853828b614610246578063894760691461025b5780638da5cb5b1461027b578063aabd6f11146102b357600080fd5b806350431ce4116100c657806350431ce4146101bc57806360e8b98b146101d357806373574461146101e6578063764f3aa81461021857600080fd5b80620b46f8146101025780631049334f1461012a578063403e3158146101625780634ffdcd331461018f57600080fd5b366100fd57005b600080fd5b34801561010e57600080fd5b50610117600381565b6040519081526020015b60405180910390f35b34801561013657600080fd5b50610117610145366004611495565b600160209081526000928352604080842090915290825290205481565b34801561016e57600080fd5b5061011761017d3660046114c8565b60006020819052908152604090205481565b34801561019b57600080fd5b506101af6101aa3660046114c8565b61037f565b6040516101219190611530565b3480156101c857600080fd5b506101d161055b565b005b6101d16101e136600461169d565b6105f4565b3480156101f257600080fd5b50610206610201366004611716565b6107ee565b60405161012196959493929190611740565b34801561022457600080fd5b506102386102333660046114c8565b61096a565b60405161012192919061179e565b34801561025257600080fd5b506101d1610abd565b34801561026757600080fd5b506101d16102763660046114c8565b610cae565b34801561028757600080fd5b5060045461029b906001600160a01b031681565b6040516001600160a01b039091168152602001610121565b3480156102bf57600080fd5b506101d16102ce366004611829565b610dd8565b3480156102df57600080fd5b5061029b6102ee3660046118bd565b611109565b3480156102ff57600080fd5b5061011761030e3660046114c8565b6001600160a01b031660009081526005602052604090205490565b34801561033557600080fd5b506101af6103443660046118d6565b611133565b34801561035557600080fd5b506101176103643660046114c8565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b0381166000908152600560209081526040808320805482518185028101850190935280835260609492939192909184015b828210156105505760008481526020908190206040805160c081019091526006850290910180546001600160a01b03168252600181018054929391929184019161040090611909565b80601f016020809104026020016040519081016040528092919081815260200182805461042c90611909565b80156104795780601f1061044e57610100808354040283529160200191610479565b820191906000526020600020905b81548152906001019060200180831161045c57829003601f168201915b5050505050815260200160028201805461049290611909565b80601f01602080910402602001604051908101604052809291908181526020018280546104be90611909565b801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050509183525050600382015460208083019190915260048301546001600160a01b0316604083015260059092015460609091015290825260019290920191016103b7565b505050509050919050565b336000908152602081905260408120549081900361058c5760405163177b02e160e31b815260040160405180910390fd5b336000818152602081905260408082208290555183156108fc0291849190818181858888f193505050501580156105c7573d6000803e3d6000fd5b5060408051828152600060208201523391600080516020611b3a833981519152910160405180910390a250565b6001600160a01b03831661061b5760405163e3d50be960e01b815260040160405180910390fd5b3460000361063c57604051630139d04f60e31b815260040160405180910390fd5b6000606461064b600334611959565b6106559190611976565b905060006106638234611998565b905080600080876001600160a01b03166001600160a01b03168152602001908152602001600020600082825461069991906119ab565b90915550506004546001600160a01b0316600090815260208190526040812080548492906106c89084906119ab565b90915550506001600160a01b038581166000908152600560209081526040808320815160c0810183523381528084018a815292810189905260608101879052608081018590524260a082015281546001808201845592865293909420845160069094020180546001600160a01b0319169390951692909217845551919291908201906107549082611a0d565b50604082015160028201906107699082611a0d565b506060820151600382015560808201516004820180546001600160a01b0319166001600160a01b0392831617905560a09092015160059091015560405160009187169033907fd70d5ee55be5acb7ce76d7019ed2352e9c18fdd3b0da09032222d0b1fe22626b906107df9086908a908a90611acc565b60405180910390a45050505050565b6005602052816000526040600020818154811061080a57600080fd5b6000918252602090912060069091020180546001820180546001600160a01b03909216945091925061083b90611909565b80601f016020809104026020016040519081016040528092919081815260200182805461086790611909565b80156108b45780601f10610889576101008083540402835291602001916108b4565b820191906000526020600020905b81548152906001019060200180831161089757829003601f168201915b5050505050908060020180546108c990611909565b80601f01602080910402602001604051908101604052809291908181526020018280546108f590611909565b80156109425780601f1061091757610100808354040283529160200191610942565b820191906000526020600020905b81548152906001019060200180831161092557829003601f168201915b5050505060038301546004840154600590940154929390926001600160a01b03909116915086565b600254606090819060008167ffffffffffffffff81111561098d5761098d6115f8565b6040519080825280602002602001820160405280156109b6578160200160208202803683370190505b50905060008267ffffffffffffffff8111156109d4576109d46115f8565b6040519080825280602002602001820160405280156109fd578160200160208202803683370190505b50905060005b83811015610ab157600060028281548110610a2057610a20611b01565b9060005260206000200160009054906101000a90046001600160a01b0316905080848381518110610a5357610a53611b01565b6001600160a01b03928316602091820292909201810191909152898216600090815260018252604080822093851682529290915220548351849084908110610a9d57610a9d611b01565b602090810291909101015250600101610a03565b50909590945092505050565b336000908152602081905260409020548015610b3957336000818152602081905260408082208290555183156108fc0291849190818181858888f19350505050158015610b0e573d6000803e3d6000fd5b5060408051828152600060208201523391600080516020611b3a833981519152910160405180910390a25b60005b600254811015610c7f57600060028281548110610b5b57610b5b611b01565b60009182526020808320909101543383526001825260408084206001600160a01b03909216808552919092529120549091508015610c75573360008181526001602090815260408083206001600160a01b03871680855292528083208390555163a9059cbb60e01b8152600481019390935260248301849052909163a9059cbb906044016020604051808303816000875af1158015610bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c229190611b17565b905080610c425760405163022e258160e11b815260040160405180910390fd5b604080518381526001600160a01b03851660208201523391600080516020611b3a833981519152910160405180910390a2505b5050600101610b3c565b5060405133907f9e7a99d1ff9a9ef9700c5f86d095ffb4650749eb7f2b555065a33444ac284a0690600090a250565b3360009081526001602090815260408083206001600160a01b038516845290915281205490819003610cf35760405163177b02e160e31b815260040160405180910390fd5b3360008181526001602090815260408083206001600160a01b03871680855292528083208390555163a9059cbb60e01b8152600481019390935260248301849052909163a9059cbb906044016020604051808303816000875af1158015610d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d829190611b17565b905080610da25760405163022e258160e11b815260040160405180910390fd5b604080518381526001600160a01b03851660208201523391600080516020611b3a833981519152910160405180910390a2505050565b6001600160a01b038416610dff5760405163e3d50be960e01b815260040160405180910390fd5b82600003610e2057604051630139d04f60e31b815260040160405180910390fd5b60006064610e2f600386611959565b610e399190611976565b90506000610e478286611998565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506000906001600160a01b038916906323b872dd906064016020604051808303816000875af1158015610ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec49190611b17565b905080610ee45760405163022e258160e11b815260040160405180910390fd5b6001600160a01b038088166000908152600160209081526040808320938c1683529290529081208054849290610f1b9084906119ab565b90915550506004546001600160a01b039081166000908152600160209081526040808320938c1683529290529081208054859290610f5a9084906119ab565b90915550506001600160a01b03881660009081526003602052604090205460ff16610fe3576002805460018082019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038b169081179091556000908152600360205260409020805460ff191690911790555b6001600160a01b038781166000908152600560209081526040808320815160c0810183523381528084018b81529281018a9052606081018890528d861660808201524260a082015281546001808201845592865293909420845160069094020180546001600160a01b03191693909516929092178455519192919082019061106b9082611a0d565b50604082015160028201906110809082611a0d565b506060820151600382015560808201516004820180546001600160a01b0319166001600160a01b0392831617905560a0909201516005909101556040518982169189169033907fd70d5ee55be5acb7ce76d7019ed2352e9c18fdd3b0da09032222d0b1fe22626b906110f79087908b908b90611acc565b60405180910390a45050505050505050565b6002818154811061111957600080fd5b6000918252602090912001546001600160a01b0316905081565b606081831061117f5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420696e6465782072616e676560681b60448201526064015b60405180910390fd5b6001600160a01b0384166000908152600560205260409020548211156111e75760405162461bcd60e51b815260206004820152601760248201527f456e6420696e646578206f7574206f6620626f756e64730000000000000000006044820152606401611176565b60006111f38484611998565b905060008167ffffffffffffffff811115611210576112106115f8565b60405190808252806020026020018201604052801561128c57816020015b6112796040518060c0016040528060006001600160a01b0316815260200160608152602001606081526020016000815260200160006001600160a01b03168152602001600081525090565b81526020019060019003908161122e5790505b50905060005b8281101561146f576001600160a01b03871660009081526005602052604090206112bc82886119ab565b815481106112cc576112cc611b01565b60009182526020918290206040805160c0810190915260069092020180546001600160a01b03168252600181018054929391929184019161130c90611909565b80601f016020809104026020016040519081016040528092919081815260200182805461133890611909565b80156113855780601f1061135a57610100808354040283529160200191611385565b820191906000526020600020905b81548152906001019060200180831161136857829003601f168201915b5050505050815260200160028201805461139e90611909565b80601f01602080910402602001604051908101604052809291908181526020018280546113ca90611909565b80156114175780601f106113ec57610100808354040283529160200191611417565b820191906000526020600020905b8154815290600101906020018083116113fa57829003601f168201915b50505091835250506003820154602082015260048201546001600160a01b03166040820152600590910154606090910152825183908390811061145c5761145c611b01565b6020908102919091010152600101611292565b5095945050505050565b80356001600160a01b038116811461149057600080fd5b919050565b600080604083850312156114a857600080fd5b6114b183611479565b91506114bf60208401611479565b90509250929050565b6000602082840312156114da57600080fd5b6114e382611479565b9392505050565b6000815180845260005b81811015611510576020818501810151868301820152016114f4565b506000602082860101526020601f19601f83011685010191505092915050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156115ec57868503603f19018452815180516001600160a01b0316865260208082015160c091880182905290611593908801826114ea565b9050604082015187820360408901526115ac82826114ea565b606084810151908a01526080808501516001600160a01b0316908a015260a093840151939098019290925250506020938401939190910190600101611558565b50929695505050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261161f57600080fd5b813567ffffffffffffffff811115611639576116396115f8565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611668576116686115f8565b60405281815283820160200185101561168057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156116b257600080fd5b6116bb84611479565b9250602084013567ffffffffffffffff8111156116d757600080fd5b6116e38682870161160e565b925050604084013567ffffffffffffffff81111561170057600080fd5b61170c8682870161160e565b9150509250925092565b6000806040838503121561172957600080fd5b61173283611479565b946020939093013593505050565b6001600160a01b038716815260c060208201819052600090611764908301886114ea565b828103604084015261177681886114ea565b606084019690965250506001600160a01b0392909216608083015260a0909101529392505050565b6040808252835190820181905260009060208501906060840190835b818110156117e15783516001600160a01b03168352602093840193909201916001016117ba565b50508381036020808601919091528551808352918101925085019060005b8181101561181d5782518452602093840193909201916001016117ff565b50919695505050505050565b600080600080600060a0868803121561184157600080fd5b61184a86611479565b945061185860208701611479565b935060408601359250606086013567ffffffffffffffff81111561187b57600080fd5b6118878882890161160e565b925050608086013567ffffffffffffffff8111156118a457600080fd5b6118b08882890161160e565b9150509295509295909350565b6000602082840312156118cf57600080fd5b5035919050565b6000806000606084860312156118eb57600080fd5b6118f484611479565b95602085013595506040909401359392505050565b600181811c9082168061191d57607f821691505b60208210810361193d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761197057611970611943565b92915050565b60008261199357634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561197057611970611943565b8082018082111561197057611970611943565b601f821115611a0857806000526020600020601f840160051c810160208510156119e55750805b601f840160051c820191505b81811015611a0557600081556001016119f1565b50505b505050565b815167ffffffffffffffff811115611a2757611a276115f8565b611a3b81611a358454611909565b846119be565b6020601f821160018114611a6f5760008315611a575750848201515b600019600385901b1c1916600184901b178455611a05565b600084815260208120601f198516915b82811015611a9f5787850151825560209485019460019092019101611a7f565b5084821015611abd5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b838152606060208201526000611ae560608301856114ea565b8281036040840152611af781856114ea565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b2957600080fd5b815180151581146114e357600080fdfecbcdbdf10631a43cc99c80acace8232649421c3f4f73919f16013d47c83a687aa264697066735822122023df48cc12844a15279a31d52c9ac422f3be947e577e304043dc90358c9e8f6c64736f6c634300081a0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.