Ethereum 检查合同中有哪些代币

Ethereum 检查合同中有哪些代币,ethereum,solidity,Ethereum,Solidity,坚固性。如何检查哪些代币已发送到合同?如何检查USDT代币 contract DEX { event Bought(uint256 amount); event Sold(uint256 amount); IERC20 public token; constructor() public { token = new ERC20Basic(); } function buy() payable public { uin

坚固性。如何检查哪些代币已发送到合同?如何检查USDT代币

contract DEX {
    event Bought(uint256 amount);
    event Sold(uint256 amount);
    IERC20 public token;
    constructor() public {
        token = new ERC20Basic();
    }
    function buy() payable public {
        uint256 amountTobuy = msg.value;
        uint256 dexBalance = token.balanceOf(address(this));
        require(amountTobuy > 0, "You need to send some Ether");
        require(amountTobuy <= dexBalance, "Not enough tokens in the reserve");
        token.transfer(msg.sender, amountTobuy);
        emit Bought(amountTobuy);
    }
    function sell(uint256 amount) public {
        require(amount > 0, "You need to sell at least some tokens");
        uint256 allowance = token.allowance(msg.sender, address(this));
        require(allowance >= amount, "Check the token allowance");
        token.transferFrom(msg.sender, address(this), amount);
        msg.sender.transfer(amount);
        emit Sold(amount);
    }
}
合同索引{
购买的活动(uint256金额);
已售出事件(uint256金额);
IERC20公共代币;
构造函数()公共{
令牌=新的ERC20Basic();
}
函数buy()可支付公共{
uint256 amountTobuy=msg.value;
uint256 dexBalance=token.balanceOf(地址(本));
需要(amountTobuy>0,“您需要发送一些以太”);
require(amountTobuy 0,“您至少需要出售一些代币”);
uint256余量=令牌.余量(msg.sender,地址(本));
要求(津贴>=金额,“检查代币津贴”);
token.transferFrom(msg.sender、地址(this)、金额);
消息发送方转账(金额);
排放量(数量);
}
}

您正在寻找
平衡功能,您也可以使用此功能

uint balance=token.balanceOf(账户);
对于要检查的每个令牌,还需要令牌地址。因此,对于USDT,您需要USDT的令牌地址。然后您可以执行以下操作(nodejs语法):

pragma solidity ^0.6.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

contract GetBalance{
  constructor() public {
  }
  function getBalanceOfToken(address _USDT_ADDRESS) public returns (uint){
    usdt = IERC20(_USDT_ADDRESS);
    uint balance = usdt.balanceOf(address(this));
    return balance;
  }
}