Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xF80C7797bE05dfe4886475424178AbF6b9DD4b33
Balance 0 ETH
Nonce 1
Code Size 7734 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

7734 bytes
0x60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b14610122578063c054ce8d1461014d578063e2aafa2114610176578063f2fde38b146101b357610086565b8063285ce8f81461008b578063397f145f146100b457806375debd2a146100dd57806382fd34a3146100f957610086565b3661008657005b600080fd5b34801561009757600080fd5b506100b260048036038101906100ad9190611279565b6101dc565b005b3480156100c057600080fd5b506100db60048036038101906100d691906112f1565b61051b565b005b6100f760048036038101906100f291906113ec565b6106c1565b005b34801561010557600080fd5b50610120600480360381019061011b91906114ab565b6109e1565b005b34801561012e57600080fd5b50610137610be0565b60405161014491906114e7565b60405180910390f35b34801561015957600080fd5b50610174600480360381019061016f9190611502565b610c04565b005b34801561018257600080fd5b5061019d600480360381019061019891906115b6565b611037565b6040516101aa91906115f2565b60405180910390f35b3480156101bf57600080fd5b506101da60048036038101906101d591906115b6565b611057565b005b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f90611690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036102d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ce906116fc565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031291906114e7565b6020604051808303816000875af1158015610331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103559190611752565b90506000811115610516576000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b858560405160240161039592919061178e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103ff9190611828565b6000604051808303816000865af19150503d806000811461043c576040519150601f19603f3d011682016040523d82523d6000602084013e610441565b606091505b509150915081801561046f575060008151148061046e57508080602001905181019061046d9190611854565b5b5b6104ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a5906118cd565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faca8fb252cde442184e5f10e0f2e6e4029e8cd7717cae63559079610702436aa8560405161050b91906118ed565b60405180910390a350505b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a09061197a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060f906119e6565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8776d6560d2629249f1d4afc57d820a5922a1e746a0575f938f06b6e38cd0d1a826040516106b591906115f2565b60405180910390a25050565b818190508484905014610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070090611a52565b60405180910390fd5b600080600090505b838390508110156107565783838281811061072f5761072e611a72565b5b90506020020135826107419190611ad0565b9150808061074e90611b04565b915050610711565b50348114610799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079090611b98565b60405180910390fd5b60005b858590508110156109d95760008686838181106107bc576107bb611a72565b5b90506020020160208101906107d191906115b6565b73ffffffffffffffffffffffffffffffffffffffff168585848181106107fa576107f9611a72565b5b9050602002013560405161080d90611bde565b60006040518083038185875af1925050503d806000811461084a576040519150601f19603f3d011682016040523d82523d6000602084013e61084f565b606091505b50509050806109c55786868381811061086b5761086a611a72565b5b905060200201602081019061088091906115b6565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f3210e1d948b58506bf3f32748522a3f40b04d2ca2849c85fe177d3bed7a654238787868181106108e2576108e1611a72565b5b905060200201356040516108f691906118ed565b60405180910390a360003373ffffffffffffffffffffffffffffffffffffffff1686868581811061092a57610929611a72565b5b9050602002013560405161093d90611bde565b60006040518083038185875af1925050503d806000811461097a576040519150601f19603f3d011682016040523d82523d6000602084013e61097f565b606091505b50509050806109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90611c3f565b60405180910390fd5b505b5080806109d190611b04565b91505061079c565b505050505050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490611690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad3906116fc565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff1682604051610b0790611bde565b60006040518083038185875af1925050503d8060008114610b44576040519150601f19603f3d011682016040523d82523d6000602084013e610b49565b606091505b5050905080610b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b84906118cd565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167fd73748ee2c6d69d51f525b0f3a0941575ba2da27fc1e0ea890f866410c23196583604051610bd391906118ed565b60405180910390a2505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b838390508686905014610c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4390611a52565b60405180910390fd5b818190508484905014610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b90611a52565b60405180910390fd5b60005b8484905081101561102e57600073ffffffffffffffffffffffffffffffffffffffff16858583818110610ccd57610ccc611a72565b5b9050602002016020810190610ce291906115b6565b73ffffffffffffffffffffffffffffffffffffffff1603610d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2f90611cab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16878783818110610d6357610d62611a72565b5b9050602002016020810190610d7891906115b6565b73ffffffffffffffffffffffffffffffffffffffff1603610dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc590611d3d565b60405180910390fd5b6000878783818110610de357610de2611a72565b5b9050602002016020810190610df891906115b6565b90506000808273ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b338a8a88818110610e3057610e2f611a72565b5b9050602002016020810190610e4591906115b6565b898989818110610e5857610e57611a72565b5b90506020020135604051602401610e7193929190611d5d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610edb9190611828565b6000604051808303816000865af19150503d8060008114610f18576040519150601f19603f3d011682016040523d82523d6000602084013e610f1d565b606091505b5091509150811580610f4657506000151581806020019051810190610f429190611854565b1515145b1561101857878785818110610f5e57610f5d611a72565b5b9050602002016020810190610f7391906115b6565b73ffffffffffffffffffffffffffffffffffffffff168a8a86818110610f9c57610f9b611a72565b5b9050602002016020810190610fb191906115b6565b73ffffffffffffffffffffffffffffffffffffffff167f3210e1d948b58506bf3f32748522a3f40b04d2ca2849c85fe177d3bed7a65423888888818110610ffb57610ffa611a72565b5b9050602002013560405161100f91906118ed565b60405180910390a35b505050808061102690611b04565b915050610c97565b50505050505050565b60016020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc9061197a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b90611de0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112468261121b565b9050919050565b6112568161123b565b811461126157600080fd5b50565b6000813590506112738161124d565b92915050565b600080604083850312156112905761128f611211565b5b600061129e85828601611264565b92505060206112af85828601611264565b9150509250929050565b60008115159050919050565b6112ce816112b9565b81146112d957600080fd5b50565b6000813590506112eb816112c5565b92915050565b6000806040838503121561130857611307611211565b5b600061131685828601611264565b9250506020611327858286016112dc565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261135657611355611331565b5b8235905067ffffffffffffffff81111561137357611372611336565b5b60208301915083602082028301111561138f5761138e61133b565b5b9250929050565b60008083601f8401126113ac576113ab611331565b5b8235905067ffffffffffffffff8111156113c9576113c8611336565b5b6020830191508360208202830111156113e5576113e461133b565b5b9250929050565b6000806000806040858703121561140657611405611211565b5b600085013567ffffffffffffffff81111561142457611423611216565b5b61143087828801611340565b9450945050602085013567ffffffffffffffff81111561145357611452611216565b5b61145f87828801611396565b925092505092959194509250565b60006114788261121b565b9050919050565b6114888161146d565b811461149357600080fd5b50565b6000813590506114a58161147f565b92915050565b6000602082840312156114c1576114c0611211565b5b60006114cf84828501611496565b91505092915050565b6114e18161123b565b82525050565b60006020820190506114fc60008301846114d8565b92915050565b6000806000806000806060878903121561151f5761151e611211565b5b600087013567ffffffffffffffff81111561153d5761153c611216565b5b61154989828a01611340565b9650965050602087013567ffffffffffffffff81111561156c5761156b611216565b5b61157889828a01611340565b9450945050604087013567ffffffffffffffff81111561159b5761159a611216565b5b6115a789828a01611396565b92509250509295509295509295565b6000602082840312156115cc576115cb611211565b5b60006115da84828501611264565b91505092915050565b6115ec816112b9565b82525050565b600060208201905061160760008301846115e3565b92915050565b600082825260208201905092915050565b7f4f6e6c79207468652077686974656c69737465722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b600061167a602b8361160d565b91506116858261161e565b604082019050919050565b600060208201905081810360008301526116a98161166d565b9050919050565b7f43616e6e6f742073656e6420746f207a65726f20616464726573730000000000600082015250565b60006116e6601b8361160d565b91506116f1826116b0565b602082019050919050565b60006020820190508181036000830152611715816116d9565b9050919050565b6000819050919050565b61172f8161171c565b811461173a57600080fd5b50565b60008151905061174c81611726565b92915050565b60006020828403121561176857611767611211565b5b60006117768482850161173d565b91505092915050565b6117888161171c565b82525050565b60006040820190506117a360008301856114d8565b6117b0602083018461177f565b9392505050565b600081519050919050565b600081905092915050565b60005b838110156117eb5780820151818401526020810190506117d0565b60008484015250505050565b6000611802826117b7565b61180c81856117c2565b935061181c8185602086016117cd565b80840191505092915050565b600061183482846117f7565b915081905092915050565b60008151905061184e816112c5565b92915050565b60006020828403121561186a57611869611211565b5b60006118788482850161183f565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b60006118b7600f8361160d565b91506118c282611881565b602082019050919050565b600060208201905081810360008301526118e6816118aa565b9050919050565b6000602082019050611902600083018461177f565b92915050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b6000611964602e8361160d565b915061196f82611908565b604082019050919050565b6000602082019050818103600083015261199381611957565b9050919050565b7f5a65726f20616464726573730000000000000000000000000000000000000000600082015250565b60006119d0600c8361160d565b91506119db8261199a565b602082019050919050565b600060208201905081810360008301526119ff816119c3565b9050919050565b7f4172726179206c656e6774687320646f206e6f74206d61746368000000000000600082015250565b6000611a3c601a8361160d565b9150611a4782611a06565b602082019050919050565b60006020820190508181036000830152611a6b81611a2f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611adb8261171c565b9150611ae68361171c565b9250828201905080821115611afe57611afd611aa1565b5b92915050565b6000611b0f8261171c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b4157611b40611aa1565b5b600182019050919050565b7f4d73672e76616c756520646f6573206e6f74206d617463680000000000000000600082015250565b6000611b8260188361160d565b9150611b8d82611b4c565b602082019050919050565b60006020820190508181036000830152611bb181611b75565b9050919050565b50565b6000611bc86000836117c2565b9150611bd382611bb8565b600082019050919050565b6000611be982611bbb565b9150819050919050565b7f526566756e64206661696c656400000000000000000000000000000000000000600082015250565b6000611c29600d8361160d565b9150611c3482611bf3565b602082019050919050565b60006020820190508181036000830152611c5881611c1c565b9050919050565b7f43616e6e6f74207472616e7366657220746f207a65726f206164647265737300600082015250565b6000611c95601f8361160d565b9150611ca082611c5f565b602082019050919050565b60006020820190508181036000830152611cc481611c88565b9050919050565b7f43616e6e6f74207472616e7366657220746f6b656e206174207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611d2760258361160d565b9150611d3282611ccb565b604082019050919050565b60006020820190508181036000830152611d5681611d1a565b9050919050565b6000606082019050611d7260008301866114d8565b611d7f60208301856114d8565b611d8c604083018461177f565b949350505050565b7f4e6577206f776e657220697320746865207a65726f2061646472657373000000600082015250565b6000611dca601d8361160d565b9150611dd582611d94565b602082019050919050565b60006020820190508181036000830152611df981611dbd565b905091905056fea2646970667358221220c9e09afe722b7aac0bcedf79d1b79e5d602358e6b6a4b00340c64e2446a2ea9e64736f6c63430008130033

Verified Source Code Partial Match

Compiler: v0.8.19+commit.7dd6d404 EVM: paris Optimization: No
BulkTransfer.sol 124 lines
// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.19;


interface IERC20 {
    function transfer(address to, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function balanceOf(address account) external returns (uint256);
}


contract BulkTransfer {
    address public owner;
    mapping(address => bool) public inWhitelist;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event InWhitelist(address indexed addr, bool status);
    event FailedTransfer(address indexed token, address indexed to, uint256 value);
    event BNBRecovered(address indexed recipient, uint256 amount);
    event ERC20Recovered(address indexed token, address indexed recipient, uint256 amount);


    modifier onlyOwner {
        require(msg.sender == owner, "Only the contract owner can call this function");
        _;
    }

    modifier onlyWhitelist {
        require(inWhitelist[msg.sender], "Only the whitelister can call this function");
        _;
    }

    constructor() {
        owner = msg.sender;
        inWhitelist[msg.sender] = true;
        emit InWhitelist(msg.sender, true);
    }

    receive() external payable {
        // This function allows the contract to receive BNB
    }


    function transferBNB(address[] calldata recipients, uint256[] calldata amounts) public payable {
        require(recipients.length == amounts.length, "Array lengths do not match");

        uint256 total;
        for (uint256 i = 0; i < amounts.length; i++) {
            total += amounts[i];
        }
        require(total == msg.value, "Msg.value does not match");
      
        for (uint256 i = 0; i < recipients.length; i++) {
            (bool success, ) = recipients[i].call{value: amounts[i]}("");
            if (!success) {
                emit FailedTransfer(address(0), recipients[i], amounts[i]);
                // Refund the amount to the sender if the transfer fails
                (bool refundSuccess, ) = payable(msg.sender).call{value: amounts[i]}("");
                require(refundSuccess, "Refund failed");
            }
        }
    }

    // Bulk transfer tokens
    function transferTokens(address[] calldata tokens, address[] calldata recipients, uint256[] calldata amounts) public {
        require(tokens.length == recipients.length, "Array lengths do not match");
        require(recipients.length == amounts.length, "Array lengths do not match");

        for (uint256 i = 0; i < recipients.length; i++) {
            require(recipients[i] != address(0), "Cannot transfer to zero address");
            require(tokens[i] != address(0), "Cannot transfer token at zero address");

            IERC20 token = IERC20(tokens[i]);
            (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(token.transferFrom.selector, msg.sender, recipients[i], amounts[i]));
            if (!success || abi.decode(data, (bool)) == false) {
                emit FailedTransfer(tokens[i], recipients[i], amounts[i]);
            }
        }
    }


    // Transfer ownership
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "New owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }


    // Manage whitelist
    function manageWhitelist(address addr, bool status) public onlyOwner {
        require(addr != address(0), "Zero address");
        inWhitelist[addr] = status;
        emit InWhitelist(addr, status);
    }


    // Recover BNB
    function recoverBNB(address payable recipient) external onlyWhitelist {
        require(recipient != address(0), "Cannot send to zero address");
        uint256 balance = address(this).balance;
        (bool success, ) = payable(recipient).call{value: balance}("");
        require(success, "Transfer failed");
        emit BNBRecovered(recipient, balance);
    }

    // Recover ERC20 tokens
    function recoverERC20Tokens(address token, address recipient) external onlyWhitelist {
        require(recipient != address(0), "Cannot send to zero address");
        
        uint256 amount = IERC20(token).balanceOf(address(this));
        if (amount > 0) {
            // Low-level call to the transfer function to ensure compatibility with transfer functions that have or do not have a return value.
            (bool success, bytes memory data) = token.call(
                abi.encodeWithSelector(IERC20(token).transfer.selector, recipient, amount)
            );
            require(success && (data.length == 0 || abi.decode(data, (bool))), "Transfer failed");

            emit ERC20Recovered(token, recipient, amount);
        }
    }
}

Read Contract

inWhitelist 0xe2aafa21 → bool
owner 0x8da5cb5b → address

Write Contract 6 functions

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

manageWhitelist 0x397f145f
address addr
bool status
recoverBNB 0x82fd34a3
address recipient
recoverERC20Tokens 0x285ce8f8
address token
address recipient
transferBNB 0x75debd2a
address[] recipients
uint256[] amounts
transferOwnership 0xf2fde38b
address newOwner
transferTokens 0xc054ce8d
address[] tokens
address[] recipients
uint256[] amounts

Recent Transactions

No transactions found for this address