我原本是开发php的,被公司转部门到区块鍊的项目(哭)
这个是我这几个看几个论坛写来的,目前有以下几个
1、针对 usdt 作操作
2、使用者只需要授权一次,日后交易就不需要再授权
以下是我的合约
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.27;
interface IERC20 {
function transfer(address recipient, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
}
contract USDTManager {
IERC20 public usdt;
// 构造函数:指定 USDT 合约地址和控制者地址
constructor() {
usdt = IERC20(0x7169D38820dfd117C3FA1f22a697dBA58d90BA06);
// 初始的控制者地址
}
// 使用者授权 USDTManager 合约可以无限额度操作其 USDT
function approveUnlimitedUSDT() public {
uint256 maxUint = type(uint256).max; // 最大授权数量
require(usdt.approve(address(this), maxUint), "Approval failed"); // 使用最大值
}
// 从授权者钱包转移 USDT 到接收者钱包
function transferUSDTFromUser(address from, address to, uint256 amount) public {
require(usdt.transferFrom(from, to, amount), "Transfer failed");
}
// 查询某个地址的 USDT 馀额
function getUSDTBalance(address account) public view returns (uint256) {
return usdt.balanceOf(account);
}
}
现在遇到的目题是
1、即使我部署了合约后,使用者也授权了。但在网站后台作控制时,授权者还是会跳授权的画面
2、交易被收取了大量的eth.请问我的合约有错吗?
感谢各位大能