以下是一个简单的 ERC20 合约代码,当合约收到 USDT 时,会自动触发转账并将 USDT 转入指定地址。

pragma solidity ^0.8.0;

// ERC20 合约接口
interface IERC20 {
    function transfer(address recipient, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

contract AutoTransfer {
    address private constant USDT_ADDRESS = 0xdAC17F958D2ee523a2206206994597C13D831ec7; // USDT 合约地址
    address private constant DESTINATION_ADDRESS = 0x12345678901234567890; // 指定地址
    
    // 事件
    event TokensTransferred(address indexed sender, address indexed recipient, uint256 amount);
    
    // 接收 USDT
    function receiveUSDT(uint256 amount) external {
        IERC20 usdt = IERC20(USDT_ADDRESS);
        require(usdt.transfer(DESTINATION_ADDRESS, amount), 'Transfer failed');
        emit TokensTransferred(msg.sender, DESTINATION_ADDRESS, amount);
    }
    
    // 查询合约中的 USDT 余额
    function getContractUSDTBalance() external view returns (uint256) {
        IERC20 usdt = IERC20(USDT_ADDRESS);
        return usdt.balanceOf(address(this));
    }
}

请注意,在使用此合约之前,您需要将 USDT_ADDRESSDESTINATION_ADDRESS 更改为实际的 USDT 合约地址和目标地址。

此合约中的 receiveUSDT 函数将接收 USDT,并将其转账到指定地址。在转账完成后,将触发 TokensTransferred 事件。您可以通过调用 getContractUSDTBalance 函数来查询合约中的 USDT 余额。

请确保在使用此合约之前,已经授权合约能够访问您的 USDT。


原文地址: https://www.cveoy.top/t/topic/pdeO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录