微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Solidity 智能合约:收到自定义令牌后功能未完全运行

如何解决Solidity 智能合约:收到自定义令牌后功能未完全运行

我的智能合约收到自定义令牌时出现问题:

uint256 private privatePrice = 20;
uint256 public totalCollected;
uint256 public prevIoUsCollected = 0;
uint256 public walletLimit = 4*10**(18);
uint256 public softCap = 5*10**(18);
uint256 public hardCap;
uint256 public txCount;
bool public privateOpen;
uint256 private txCollected;
mapping(address => presaleWallet) inPresale;

struct presaleWallet {
    bool isWhiteListed;
    uint256 amount;
    uint256 txCount;
    uint256 tokenAmount;
    uint256 newAmount;
    bool tgeCollect;
    uint256 numOfCollectTX;
    uint256 nextCollect;
}

IERC20 private immutable _depositToken = IERC20(0xeD24FC36d5Ee211Ea25A80239Fb8C4Cfd80f12Ee);

 function privateRound() public payable {
    require(privateOpen == true,"PrivateRound: Private Round is Closed");
    txCollected = depositToken().balanceOf(address(this)) - prevIoUsCollected;
    prevIoUsCollected = depositToken().balanceOf(address(this));

    require(txCollected > 0,"PrivateRound: You sent 0 BUSD");
    require(inPresale[msg.sender].amount + txCollected <= walletLimit,"PrivateRound: Wallet limit has been reached");

    totalCollected += txCollected;
    txCount ++;
    inPresale[msg.sender].isWhiteListed = true;
    inPresale[msg.sender].amount += txCollected;
    inPresale[msg.sender].txCount ++;
    inPresale[msg.sender].tokenAmount += (txCollected*10**2)/privatePrice;

    emit DepositSuccesful(msg.sender,txCollected,inPresale[msg.sender].amount);
}

我编写了一个函数显示 sc 地址的令牌余额,它做得很好,但是由于某种原因,当令牌发送到这个函数时,映射不起作用,其他任何东西也没有,比如 txCount++。此外,它甚至不运行 require 语句(如果 privateRound 为假,它不会停止)。

知道代码可能有什么问题以及为什么它没有按预期运行吗?

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。