【发布时间】:2021-12-29 06:52:49
【问题描述】:
我正在尝试实现一个 Solidity 智能合约,它将部署的代币从地址 A 发送到地址 B。
地址 A - 应该是调用合约函数“stake”的当前用户。 地址 B - 应该是来自外部的自定义钱包地址。
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol";
contract TokenTransfer {
IERC20 _token;
constructor(address token) public {
_token = IERC20(token);
}
function stake(address to, uint amount) public {
_token.approve(address(this), amount);
require(_token.allowance(msg.sender, address(this)) >= amount, "Token allowance too low");
bool sent = _token.transferFrom(msg.sender, to, amount);
require(sent, "Token transfer failed");
}
}
当前实施返回限额错误: “代币额度太低”
我正在使用 MetaMask(注入 web3)运行它。我希望 MetaMask 用我的令牌打开一个简单的传输窗口。
【问题讨论】:
标签: blockchain solidity erc20