在 solidity smartcontract ( ERC-20 ) 中使用 TransferFrom
use TransferFrom in solidity smartcontract ( ERC-20 )
我需要编写一个智能合约,在这个智能合约中,用户可以向 ERC-20 网络中的每个账户发送令牌。
sender
:0x5C2879Ec550e2F65D557b540B7DEAB3A6d478d62
recipient
: 0xB643992c9fBcb1Cb06b6C9eb278b2ac35e6a2711
token Address
: 0xa36085F69e2889c224210F603D836748e7dC0088
Kovan 测试网
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract DexB is ERC20("KiaDex","DEX") {
function SendTokenFromAddress(address token,address sender,address recipient,uint256 amount)
external {
IERC20 token = IERC20(token);
token.allowance(sender,address(token));
token.approve(sender,amount);
require(token.balanceOf(sender) >=amount , "your balance is low" ) ;
token.transferFrom(sender,recipient, amount);
}
}
当我想从这个地址 0x5C2879Ec550e2F65D557b540B7DEAB3A6d478d62
向这个地址 0xB643992c9fBcb1Cb06b6C9eb278b2ac35e6a2711
发送令牌时,它不起作用并向我显示此消息,然后显示交易不成功:
**有什么问题吗?我怎样才能可靠地从用户地址到用户地址发送令牌? **
发件人,在您的例子中是 0x5C2879Ec550e2F65D557b540B7DEAB3A6d478d62
,需要批准调用 sendTokenFromAddress
函数的钱包地址。合约不能代表需要发送代币的账户这样做。
我需要编写一个智能合约,在这个智能合约中,用户可以向 ERC-20 网络中的每个账户发送令牌。
sender
:0x5C2879Ec550e2F65D557b540B7DEAB3A6d478d62
recipient
: 0xB643992c9fBcb1Cb06b6C9eb278b2ac35e6a2711
token Address
: 0xa36085F69e2889c224210F603D836748e7dC0088
Kovan 测试网
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract DexB is ERC20("KiaDex","DEX") {
function SendTokenFromAddress(address token,address sender,address recipient,uint256 amount)
external {
IERC20 token = IERC20(token);
token.allowance(sender,address(token));
token.approve(sender,amount);
require(token.balanceOf(sender) >=amount , "your balance is low" ) ;
token.transferFrom(sender,recipient, amount);
}
}
当我想从这个地址 0x5C2879Ec550e2F65D557b540B7DEAB3A6d478d62
向这个地址 0xB643992c9fBcb1Cb06b6C9eb278b2ac35e6a2711
发送令牌时,它不起作用并向我显示此消息,然后显示交易不成功:
**有什么问题吗?我怎样才能可靠地从用户地址到用户地址发送令牌? **
发件人,在您的例子中是 0x5C2879Ec550e2F65D557b540B7DEAB3A6d478d62
,需要批准调用 sendTokenFromAddress
函数的钱包地址。合约不能代表需要发送代币的账户这样做。