Ethereum 检查合同中有哪些代币
坚固性。如何检查哪些代币已发送到合同?如何检查USDT代币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
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;
}
}