【问题标题】:exchange own ERC20 token to another token in smart contract for Game将自己的 ERC20 代币兑换成游戏智能合约中的另一个代币
【发布时间】:2022-01-07 15:01:26
【问题描述】:

我想为游戏部署一个智能合约(ERC20), 所以目的是为了保分。

  • 当有人进入游戏时,我们会要求一些加密硬币(例如 ETH)并给出一些我们自己的积分
  • 在玩游戏时,用户会获得一些积分。
  • 然后该用户可以从该点获得加密硬币(例如 ETH)。

我可以编写智能合约来管理积分。 但我想知道我是否可以在我们的智能合约中将我们的积分兑换成现有的加密货币(例如 ETH)。

有人知道正确的做法吗?

【问题讨论】:

    标签: game-engine smartcontracts erc20 nft


    【解决方案1】:

    您可以根据价格计算出ETH的数量,然后使用address payable类型的transfer()原生函数。

    mapping (address => uint256) pointBalances;
    
    // 1 point for 100 wei, assuming the points have 0 decimals
    uint256 price = 100;
    
    function sellPoints(uint256 _amount) external {
        require(pointBalances[msg.sender] >= _amount, "Insufficient balance");
        pointBalances[msg.sender] -= _amount;
        uint256 weiAmount = _amount * price;
        payable(msg.sender).transfer(weiAmount);
    }
    

    【讨论】:

    • 我们不能转移其他代币,例如 MIM 或 ADA 吗?
    • @Talent 你可以。一种简单的方法是调用代币合约的.transfer() 函数(不是答案中的address payable 类型),这会将代币从您的合约地址发送到指定的收件人。
    猜你喜欢
    • 2021-09-17
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2021-07-17
    • 2017-08-03
    • 2020-01-23
    • 2021-08-10
    相关资源
    最近更新 更多