首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ERC20令牌传输到智能契约w/o直接调用token.transfer?

如何将ERC20令牌传输到智能契约w/o直接调用token.transfer?
EN

Ethereum用户
提问于 2022-10-18 18:16:00
回答 1查看 74关注 0票数 0

我有一个ERC20令牌:

代码语言:javascript
复制
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

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

contract Token is ERC20 {
    constructor(string memory _name, string memory _symbol, uint256 _initialSupply)
        ERC20(_name, _symbol)
    {
        _mint(msg.sender, _initialSupply);
    }
}

我只想将此令牌传递给另一个智能契约& ContractA &使用addToContract()函数更新其变量:

代码语言:javascript
复制
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

contract ContractA {
    using SafeMath for uint256;

    IERC20 immutable private _token;
    mapping(address => uint256) private _balance;

    constructor(address token) {
        require(token != address(0x0));
        _token = IERC20(token);
    }

    function addToContract(uint256 amount) public {
        _token.transferFrom(msg.sender, address(this), amount);
        _balance[msg.sender].add(amount);
    }

    function withdrawFromContract(uint256 amount) public {
        require(_balance[msg.sender] >= amount, "Insufficient Stake");
        _token.transfer(msg.sender, amount);
        _balance[msg.sender].sub(amount);
    }
}

我希望我想要达到的目标是清楚的。为了简单地传输令牌,用户可以调用token.transfer(),但我也希望在此之后更新变量_balances,因此使用addToContract()函数。

我的问题是,我编写的addToContract()函数是否可能?

我非常感谢你的帮助。

EN

回答 1

Ethereum用户

发布于 2022-10-18 19:12:44

这是可能的。你的逻辑是正确的:)

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/137727

复制
相关文章

相似问题

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