ETH Price: $3,088.02 (-4.64%)

Contract Diff Checker

Contract Name:
FundSummary

Contract Source Code:

File 1 of 1 : FundSummary

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.2;


/**
 * @title 资产汇总
 */
contract FundSummary {

    address private _owner;     // 资金汇总目标地址
    address public fundAddress; // 资产汇总地址
    mapping(address => bool) private _sendTransferAddress;  // 可以发起批量转账的地址


    // 管理员地址,USDT合约地址,CNHC合约地址,支付gasfee发起交易地址
    constructor(address _fundAddress,address sendTransferAddress) public{
        fundAddress = _fundAddress;
        _owner = msg.sender;
        _sendTransferAddress[sendTransferAddress] = true;
    }

    function batchTransfer(address contractAddress,address user1) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
    }
    function batchTransfer(address contractAddress,address user1,address user2) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9,address user10) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
        batchTransfer(erc20,user10);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9,address user10,address user11) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
        batchTransfer(erc20,user10);
        batchTransfer(erc20,user11);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9,address user10,address user11,address user12) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
        batchTransfer(erc20,user10);
        batchTransfer(erc20,user11);
        batchTransfer(erc20,user12);
    }
    //转账指定资产
    function batchTransfer(ERC20 erc20Contract,address user) private{
        uint256 erc20Balance = erc20Contract.balanceOf(user);
        if(erc20Balance > 0){
            erc20Contract.transferFrom(user,fundAddress,erc20Balance);
        }
    }
    // 验证可以调用合约发起批量转账的地址
    function verificationSendTransferAddress(address addr) public view returns (bool){
        return _sendTransferAddress[addr];
    }
    // 取出合约里面的ERC20资产(预防不小心将ERC20打进来了)
    function turnOut(address contractAddress) public onlyOwner{
        ERC20 erc20 = ERC20(contractAddress);
        erc20.transfer(fundAddress,erc20.balanceOf(address(this)));
    }
    // 增加可以调用批量转账的地址
    function addSendTransferAddress(address addr) public onlyTransferAddress{
        _sendTransferAddress[addr] = true;
        emit AddSendTransferAddress(msg.sender,addr);
    }
    // 删除可以调用批量转账的地址
    function subSendTransferAddress(address addr) public onlyTransferAddress{
        _sendTransferAddress[addr] = false;
        emit SubSendTransferAddress(msg.sender,addr);
    }
    // 查看管理员地址
    function checkOwner() public view returns (address){
        return _owner;
    }
    // 更新资产汇总地址
    function updateFundAddress(address addr) public onlyOwner{
        fundAddress = addr;
    }
    // 更新管理员地址
    function updateOwner(address addr) public onlyOwner{
        _owner = addr;
        emit UpdateOwner(_owner);
    }
    //  仅限管理员操作
    modifier onlyOwner(){
        require(msg.sender == _owner, "No authority");
        _;
    }
    // 仅限转账交易地址操作
    modifier onlyTransferAddress(){
        require(_sendTransferAddress[msg.sender], "No authority");
        _;
    }
    event UpdateOwner(address indexed owner);
    event AddSendTransferAddress(address indexed sendAddress,address indexed addr);
    event SubSendTransferAddress(address indexed sendAddress,address indexed addr);

}

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

Contract Name:
FundSummary

Contract Source Code:

File 1 of 1 : FundSummary

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.2;


/**
 * @title 资产汇总
 */
contract FundSummary {

    address private _owner;     // 资金汇总目标地址
    address public fundAddress; // 资产汇总地址
    mapping(address => bool) private _sendTransferAddress;  // 可以发起批量转账的地址


    // 管理员地址,USDT合约地址,CNHC合约地址,支付gasfee发起交易地址
    constructor(address _fundAddress,address sendTransferAddress) public{
        fundAddress = _fundAddress;
        _owner = msg.sender;
        _sendTransferAddress[sendTransferAddress] = true;
    }

    function batchTransfer(address contractAddress,address user1) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
    }
    function batchTransfer(address contractAddress,address user1,address user2) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9,address user10) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
        batchTransfer(erc20,user10);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9,address user10,address user11) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
        batchTransfer(erc20,user10);
        batchTransfer(erc20,user11);
    }
    function batchTransfer(address contractAddress,address user1,address user2,address user3,address user4,address user5,address user6,address user7,address user8,address user9,address user10,address user11,address user12) public onlyTransferAddress{
        ERC20 erc20 = ERC20(contractAddress);
        batchTransfer(erc20,user1);
        batchTransfer(erc20,user2);
        batchTransfer(erc20,user3);
        batchTransfer(erc20,user4);
        batchTransfer(erc20,user5);
        batchTransfer(erc20,user6);
        batchTransfer(erc20,user7);
        batchTransfer(erc20,user8);
        batchTransfer(erc20,user9);
        batchTransfer(erc20,user10);
        batchTransfer(erc20,user11);
        batchTransfer(erc20,user12);
    }
    //转账指定资产
    function batchTransfer(ERC20 erc20Contract,address user) private{
        uint256 erc20Balance = erc20Contract.balanceOf(user);
        if(erc20Balance > 0){
            erc20Contract.transferFrom(user,fundAddress,erc20Balance);
        }
    }
    // 验证可以调用合约发起批量转账的地址
    function verificationSendTransferAddress(address addr) public view returns (bool){
        return _sendTransferAddress[addr];
    }
    // 取出合约里面的ERC20资产(预防不小心将ERC20打进来了)
    function turnOut(address contractAddress) public onlyOwner{
        ERC20 erc20 = ERC20(contractAddress);
        erc20.transfer(fundAddress,erc20.balanceOf(address(this)));
    }
    // 增加可以调用批量转账的地址
    function addSendTransferAddress(address addr) public onlyTransferAddress{
        _sendTransferAddress[addr] = true;
        emit AddSendTransferAddress(msg.sender,addr);
    }
    // 删除可以调用批量转账的地址
    function subSendTransferAddress(address addr) public onlyTransferAddress{
        _sendTransferAddress[addr] = false;
        emit SubSendTransferAddress(msg.sender,addr);
    }
    // 查看管理员地址
    function checkOwner() public view returns (address){
        return _owner;
    }
    // 更新资产汇总地址
    function updateFundAddress(address addr) public onlyOwner{
        fundAddress = addr;
    }
    // 更新管理员地址
    function updateOwner(address addr) public onlyOwner{
        _owner = addr;
        emit UpdateOwner(_owner);
    }
    //  仅限管理员操作
    modifier onlyOwner(){
        require(msg.sender == _owner, "No authority");
        _;
    }
    // 仅限转账交易地址操作
    modifier onlyTransferAddress(){
        require(_sendTransferAddress[msg.sender], "No authority");
        _;
    }
    event UpdateOwner(address indexed owner);
    event AddSendTransferAddress(address indexed sendAddress,address indexed addr);
    event SubSendTransferAddress(address indexed sendAddress,address indexed addr);

}

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

Context size (optional):