为什么我不能将 USDT 转入我的智能合约?
Why can't I transfer USDT to my smartcontract?
当我调用转账 USDT 时,我得到了 'BEP20: transfer amount exceeds balance' 但我知道我有足够的资金。我想我在我的智能合约中遗漏了一些东西。这里是 bscscan 上的错误:
https://testnet.bscscan.com/tx/0x3a253a8c32ed19bdbed66499ec2f888eae5114d44eba7c2f28a185258e91641f
pragma solidity >=0.7.0 <0.9.0;
abstract contract IUSDT{
function approve(address _spender, uint _value) virtual external returns (bool);
function transferFrom(address _from, address _to, uint _value) virtual public;
function transfer(address recipient, uint256 amount) virtual external returns (bool);
}
contract usdtTransfer{
IUSDT TetherContract;
function transferUSDT(uint256 amount) public {
TetherContract.transfer(address(this),amount);
}
constructor(address _tetherAddress){
TetherContract=IUSDT(_tetherAddress);
}
}
TetherContract.transfer(address(this),amount);
此代码段试图将 amount
(第二个参数)的代币转移到 address(this)
(第一个参数)地址——这是 usdtTransfer
合约的地址。
并且由于它是从 usdtTransfer
合约执行的,它正试图从 发送代币 来自完全相同的 usdtTransfer
地址。
如果您的目标是将代币从用户发送到您的合约,用户需要首先在代币合约上执行 approve()
函数(从他们的地址,将您的地址作为 spender
参数).
当我调用转账 USDT 时,我得到了 'BEP20: transfer amount exceeds balance' 但我知道我有足够的资金。我想我在我的智能合约中遗漏了一些东西。这里是 bscscan 上的错误:
https://testnet.bscscan.com/tx/0x3a253a8c32ed19bdbed66499ec2f888eae5114d44eba7c2f28a185258e91641f
pragma solidity >=0.7.0 <0.9.0;
abstract contract IUSDT{
function approve(address _spender, uint _value) virtual external returns (bool);
function transferFrom(address _from, address _to, uint _value) virtual public;
function transfer(address recipient, uint256 amount) virtual external returns (bool);
}
contract usdtTransfer{
IUSDT TetherContract;
function transferUSDT(uint256 amount) public {
TetherContract.transfer(address(this),amount);
}
constructor(address _tetherAddress){
TetherContract=IUSDT(_tetherAddress);
}
}
TetherContract.transfer(address(this),amount);
此代码段试图将 amount
(第二个参数)的代币转移到 address(this)
(第一个参数)地址——这是 usdtTransfer
合约的地址。
并且由于它是从 usdtTransfer
合约执行的,它正试图从 发送代币 来自完全相同的 usdtTransfer
地址。
如果您的目标是将代币从用户发送到您的合约,用户需要首先在代币合约上执行 approve()
函数(从他们的地址,将您的地址作为 spender
参数).