Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x82B92B392c4732158A3cee7fe45f74F2ea5fF749
Balance 0.198197 ETH
Nonce 1
Code Size 5409 bytes
Indexed Transactions 1 (24,450,27424,450,274)
Gas Used (indexed) 100,279
External Etherscan · Sourcify

Contract Bytecode

5409 bytes
0x6080604052600436106100595760003560e01c80631be19560146100b35780636f074e32146100dc5780638da5cb5b146100f8578063909b19d914610123578063d47f68771461014c578063f2fde38b14610163576100ae565b366100ae573373ffffffffffffffffffffffffffffffffffffffff167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874346040516100a49190610e86565b60405180910390a2005b600080fd5b3480156100bf57600080fd5b506100da60048036038101906100d59190610f09565b61018c565b005b6100f660048036038101906100f19190610ff1565b6103a5565b005b34801561010457600080fd5b5061010d61075d565b60405161011a91906110e9565b60405180910390f35b34801561012f57600080fd5b5061014a60048036038101906101459190611104565b610781565b005b34801561015857600080fd5b506101616109b0565b005b34801561016f57600080fd5b5061018a60048036038101906101859190610f09565b610b4c565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610211576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610277906111ae565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102bb91906110e9565b602060405180830381865afa1580156102d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fc91906111fa565b905060008111156103a15761035260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610cf49092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fc36b5179cb9c303b200074996eab2b3473eac370fdd7eba3bec636fe35109696826040516103989190610e86565b60405180910390a25b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461042a576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000888890509050808787905014801561044657508085859050145b801561045457508083839050145b610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048a90611273565b60405180910390fd5b60005b818110156107515760008a8a838181106104b3576104b2611293565b5b90506020020160208101906104c89190610f09565b905060008989848181106104df576104de611293565b5b90506020020135905060008111156105ed5760008273ffffffffffffffffffffffffffffffffffffffff1682604051610517906112f3565b60006040518083038185875af1925050503d8060008114610554576040519150601f19603f3d011682016040523d82523d6000602084013e610559565b606091505b505090508061059d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059490611354565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f78f5cdad99320ec2ba57132d7dffb1d125775c823239e60ff5e9300fd4ac898c836040516105e39190610e86565b60405180910390a2505b600086868581811061060257610601611293565b5b90506020020135905060008989868181106106205761061f611293565b5b90506020020160208101906106359190610f09565b9050600082111561074057600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a6906111ae565b60405180910390fd5b6106da84838373ffffffffffffffffffffffffffffffffffffffff16610cf49092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3ddb739c68dd901671f09fbe0bc2344c179ed55f8e8110a7c7a3c5665bd9518d846040516107379190610e86565b60405180910390a35b505050508080600101915050610496565b50505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610806576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b828290508110156109ab57600083838381811061082957610828611293565b5b905060200201602081019061083e9190610f09565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361087a575061099e565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108b591906110e9565b602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f691906111fa565b9050600081111561099b5761094c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610cf49092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fc36b5179cb9c303b200074996eab2b3473eac370fdd7eba3bec636fe35109696826040516109929190610e86565b60405180910390a25b50505b8080600101915050610809565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a35576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60004790506000811115610b495760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610a8a906112f3565b60006040518083038185875af1925050503d8060008114610ac7576040519150601f19603f3d011682016040523d82523d6000602084013e610acc565b606091505b5050905080610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b07906113c0565b60405180910390fd5b7fe0d60934ad2c40b286046d31bd439e4b96453ca892e20c135b277b57ea726ed382604051610b3f9190610e86565b60405180910390a1505b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c37576040517fe043ab3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401610d299291906113e0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d93919061146f565b6000604051808303816000865af19150503d8060008114610dd0576040519150601f19603f3d011682016040523d82523d6000602084013e610dd5565b606091505b509150915081610e11576040517f3f409f9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081511115610e665780806020019051810190610e2f91906114be565b610e65576040517f3f409f9a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050505050565b6000819050919050565b610e8081610e6d565b82525050565b6000602082019050610e9b6000830184610e77565b92915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ed682610eab565b9050919050565b610ee681610ecb565b8114610ef157600080fd5b50565b600081359050610f0381610edd565b92915050565b600060208284031215610f1f57610f1e610ea1565b5b6000610f2d84828501610ef4565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f5b57610f5a610f36565b5b8235905067ffffffffffffffff811115610f7857610f77610f3b565b5b602083019150836020820283011115610f9457610f93610f40565b5b9250929050565b60008083601f840112610fb157610fb0610f36565b5b8235905067ffffffffffffffff811115610fce57610fcd610f3b565b5b602083019150836020820283011115610fea57610fe9610f40565b5b9250929050565b6000806000806000806000806080898b03121561101157611010610ea1565b5b600089013567ffffffffffffffff81111561102f5761102e610ea6565b5b61103b8b828c01610f45565b9850985050602089013567ffffffffffffffff81111561105e5761105d610ea6565b5b61106a8b828c01610f9b565b9650965050604089013567ffffffffffffffff81111561108d5761108c610ea6565b5b6110998b828c01610f45565b9450945050606089013567ffffffffffffffff8111156110bc576110bb610ea6565b5b6110c88b828c01610f9b565b92509250509295985092959890939650565b6110e381610ecb565b82525050565b60006020820190506110fe60008301846110da565b92915050565b6000806020838503121561111b5761111a610ea1565b5b600083013567ffffffffffffffff81111561113957611138610ea6565b5b61114585828601610f45565b92509250509250929050565b600082825260208201905092915050565b7f746f6b656e3d3000000000000000000000000000000000000000000000000000600082015250565b6000611198600783611151565b91506111a382611162565b602082019050919050565b600060208201905081810360008301526111c78161118b565b9050919050565b6111d781610e6d565b81146111e257600080fd5b50565b6000815190506111f4816111ce565b92915050565b6000602082840312156112105761120f610ea1565b5b600061121e848285016111e5565b91505092915050565b7f6c656e677468206d69736d617463680000000000000000000000000000000000600082015250565b600061125d600f83611151565b915061126882611227565b602082019050919050565b6000602082019050818103600083015261128c81611250565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b50565b60006112dd6000836112c2565b91506112e8826112cd565b600082019050919050565b60006112fe826112d0565b9150819050919050565b7f4554482073656e64206661696c65640000000000000000000000000000000000600082015250565b600061133e600f83611151565b915061134982611308565b602082019050919050565b6000602082019050818103600083015261136d81611331565b9050919050565b7f737765657020455448206661696c656400000000000000000000000000000000600082015250565b60006113aa601083611151565b91506113b582611374565b602082019050919050565b600060208201905081810360008301526113d98161139d565b9050919050565b60006040820190506113f560008301856110da565b6114026020830184610e77565b9392505050565b600081519050919050565b60005b83811015611432578082015181840152602081019050611417565b60008484015250505050565b600061144982611409565b61145381856112c2565b9350611463818560208601611414565b80840191505092915050565b600061147b828461143e565b915081905092915050565b60008115159050919050565b61149b81611486565b81146114a657600080fd5b50565b6000815190506114b881611492565b92915050565b6000602082840312156114d4576114d3610ea1565b5b60006114e2848285016114a9565b9150509291505056fea26469706673582212205ff98fe33832eb7370db3206ba1646ddd2aa2c188455e85fd08948effdb8ee5d64736f6c634300081a0033

Verified Source Code Partial Match

Compiler: v0.8.26+commit.8a97fa7a EVM: london Optimization: No
test.sol 165 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
//20260126 1840
/**
 * @title BatchTreasuryDistributor
 * @notice 通用的资金托管 + 批量分发合约(ETH + ERC20)
 * @dev 设计目标:可读、可审计、兼容非标准 ERC20、减少误用风险
 */
interface IERC20Like {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
}

/**
 * @dev 简化版 SafeERC20:兼容“返回 bool”与“无返回值”的 ERC20
 *      - 某些老币(典型如 USDT)transfer 不返回 bool(或返回值不规范)
 *      - 这里用 low-level call 判断成功与返回数据
 */
library SafeERC20Lite {
    error TokenCallFailed();

    function safeTransfer(address token, address to, uint256 amount) internal {
        // selector: transfer(address,uint256)
        (bool ok, bytes memory data) = token.call(
            abi.encodeWithSelector(IERC20Like.transfer.selector, to, amount)
        );

        // ok 必须为 true;若 data 有内容,则必须能解码为 true
        if (!ok) revert TokenCallFailed();
        if (data.length > 0) {
            // 有返回值的 token:要求返回 true
            if (!abi.decode(data, (bool))) revert TokenCallFailed();
        }
    }
}

/**
 * @dev 最小 Ownable(避免引入外部库)
 */
abstract contract OwnableLite {
    address public owner;

    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);

    error NotOwner();
    error NewOwnerIsZero();

    constructor() {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    modifier onlyOwner() {
        if (msg.sender != owner) revert NotOwner();
        _;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        if (newOwner == address(0)) revert NewOwnerIsZero();
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

contract BatchTreasuryDistributor is OwnableLite {
    using SafeERC20Lite for address;

    event Received(address indexed from, uint256 amount);
    event EthSent(address indexed to, uint256 amount);
    event TokenSent(address indexed token, address indexed to, uint256 amount);
    event Swept(address indexed token, uint256 amount);
    event SweptETH(uint256 amount);

    receive() external payable {
        emit Received(msg.sender, msg.value);
    }

    /**
     * @notice 批量分发:每个 index 可以选择发 ETH、发指定 ERC20
     * @param recipients   收款地址列表
     * @param ethAmounts   每个地址对应要发送的 ETH 数量(可为 0)
     * @param tokens       每个地址对应要发送的 token 地址(可为 address(0) 表示不发 token)
     * @param tokenAmounts 每个地址对应要发送的 token 数量(可为 0)
     *
     * @dev 重要约束:
     *      - 四个数组长度必须完全一致
     *      - ETH 使用 call 发送(兼容合约地址),失败则 revert
     *      - ERC20 使用 safeTransfer(兼容不返回 bool 的 token)
     */
    function batchSend(
        address[] calldata recipients,
        uint256[] calldata ethAmounts,
        address[] calldata tokens,
        uint256[] calldata tokenAmounts
    ) external payable onlyOwner {
        uint256 n = recipients.length;
        require(
            ethAmounts.length == n &&
            tokens.length == n &&
            tokenAmounts.length == n,
            "length mismatch"
        );

        for (uint256 i = 0; i < n; i++) {
            address to = recipients[i];

            // 1) 发 ETH(可选)
            uint256 ethAmt = ethAmounts[i];
            if (ethAmt > 0) {
                (bool ok, ) = payable(to).call{value: ethAmt}("");
                require(ok, "ETH send failed");
                emit EthSent(to, ethAmt);
            }

            // 2) 发 Token(可选)
            uint256 tokAmt = tokenAmounts[i];
            address token = tokens[i];
            if (tokAmt > 0) {
                require(token != address(0), "token=0");
                token.safeTransfer(to, tokAmt);
                emit TokenSent(token, to, tokAmt);
            }
        }
    }

    /**
     * @notice 把合约里所有 ETH 提走给 owner
     */
    function sweepETH() external onlyOwner {
        uint256 bal = address(this).balance;
        if (bal > 0) {
            (bool ok, ) = payable(owner).call{value: bal}("");
            require(ok, "sweep ETH failed");
            emit SweptETH(bal);
        }
    }

    /**
     * @notice 把合约里指定 token 的全部余额提走给 owner
     * @param token token 合约地址
     */
    function sweepToken(address token) external onlyOwner {
        require(token != address(0), "token=0");
        uint256 bal = IERC20Like(token).balanceOf(address(this));
        if (bal > 0) {
            token.safeTransfer(owner, bal);
            emit Swept(token, bal);
        }
    }

    /**
     * @notice 一次性提走多个 token(便于运维)
     */
    function sweepTokens(address[] calldata tokens) external onlyOwner {
        for (uint256 i = 0; i < tokens.length; i++) {
            address t = tokens[i];
            if (t == address(0)) continue;
            uint256 bal = IERC20Like(t).balanceOf(address(this));
            if (bal > 0) {
                t.safeTransfer(owner, bal);
                emit Swept(t, bal);
            }
        }
    }
}

Read Contract

owner 0x8da5cb5b → address

Write Contract 5 functions

These functions modify contract state and require a wallet transaction to execute.

batchSend 0x6f074e32
address[] recipients
uint256[] ethAmounts
address[] tokens
uint256[] tokenAmounts
sweepETH 0xd47f6877
No parameters
sweepToken 0x1be19560
address token
sweepTokens 0x909b19d9
address[] tokens
transferOwnership 0xf2fde38b
address newOwner

Top Interactions

AddressTxnsSentReceived
0xb947A5A0...9422 1 1

Recent Transactions

CSV
|
Hash Method Block Age From/To Value Txn Fee Type
0x79170907...93f2cb 0x6f074e32 24,450,274 IN 0xb947A5A0...9422 0 ETH EIP-1559