gpt4 book ai didi

javascript - erc20 认领 token 转移功能不起作用

转载 作者:行者123 更新时间:2023-12-05 03:22:51 27 4
gpt4 key购买 nike

我有这个契约(Contract)并试图调用 claimFreeToken 函数。合约已经没有足够的 token ,但该函数没有返回错误,也没有收到 token 。我在哪里忽略了它?

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract TestToken is ERC20 {
constructor(uint256 initialSupply) ERC20("Test Token", "TET") {
_mint(msg.sender, initialSupply * (10**decimals()));
}

function claimFreeToken() public payable {
transfer(msg.sender, 1000 * (10**decimals()));
}
}

最佳答案

您的实现使代币在领取时从您的钱包转移到您的钱包,而不是从合约转移。

ERC20 中的transfer 函数将从msg.sender 发送到指定地址。因此,在这种情况下,您正在从 msg.sender 传输到 msg.sender

正确的实现应该是这样的,

function claimFreeToken() public payable {
_transfer(address(this), msg.sender, 1000 * (10**decimals()));
}

阅读更多:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol#L113

关于javascript - erc20 认领 token 转移功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72603836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com