首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测发送到合同ERC20的-令牌?

检测发送到合同ERC20的-令牌?
EN

Stack Overflow用户
提问于 2022-09-27 07:05:55
回答 1查看 40关注 0票数 0

我在开发一个游戏。能源将用我自己的象征来购买。

例如,要购买能源,您将使用之前购买的"X“令牌。这就像为1000 "X“代币购买1能源一样。

我搜了很多遍,却找不到答案。

我正在寻找一个像接收()一样的函数。

我想添加发送到契约的XXXX令牌的数量和发送这些令牌到映射的钱包地址,并更新能量计数。

例如,用户发送了1000 X令牌(X仅具有代表性)。发送的X令牌数量将用发送钱包记录:例如:mapping(address => uint) xTokenInfo;

每1000个X代币中,就会有能量分配给发送令牌的钱包。

例如:假设发送了10,000 (10K) X令牌。这意味着10种能量。

样本:

代码语言:javascript
运行
复制
address currentTokenAddress = 0xTOKEN;

mapping(address => uint) energyBalance;

function sendToken_and_ConvertEnergys(uint _tokenAmount){
  if(sentToken == currentTokenAddress){
    energyBalance[msg.sender] = (_tokenAmount/1000);
  } else {
    revert("Only X TOKENs are accepted");
 }
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-27 08:13:50

您需要在合同中使用标准ERC20接口来传输X令牌,为此,您需要让用户在此之前批准相同数量的令牌(批准通常通过UI进行)。

试试这个:

代码语言:javascript
运行
复制
interface IERC20 {
   function transferFrom(address sender, address recipient, uint amount) external returns(bool);
   /* rest of the method */
}

contract Energy {
   address currentTokenAddress public = 0xTOKEN;
   mapping(address => uint) energyBalance;

   function sendToken_and_ConvertEnergys(uint _tokenAmount) external {
       uint calculatedEnergy = _tokenAmount/1000;
       IERC20(currentTokenAddress ).transferFrom(msg.sender,address(this),calculatedEnergy);
       energyBalance[msg.sender] += _calculatedEnergy;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73863605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档