solidity - 如何查看地址的代币余额?
问题描述
我使用的合同来自:https ://bscscan.com/address/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c#readContract
我已经看到它有一个公共变量,它是:
mapping (address => uint) public balanceOf;
我正在尝试调用我的合同,但我不太清楚如何使用它,是通过接口还是以什么方式
contract checkBalanceOf {
mapping (address => uint) public balanceOf;
function balanceOf() public returns (uint256) {
address ERC20Address = targetInterface(0x18895B2a605CdAb301482d8F96E59FaDc17964C3);
return ERC20Address.balanceOf(bankAddress);
}
我试图应用这个答案的逻辑,但不同的是,这个答案没有公共功能
解决方案
为了检查拥有多少WBNB,bankAddress
并从您自己的合同中执行检查,您的合同需要:
balanceOf()
在接口中定义函数- 实例化指向
WBNB
合约地址的接口 - 调用传递它的
WBNB
函数balanceOf()
bankAddress
- 推荐:将调用包装在一个
view
函数中,以便在某些客户端应用程序中默认使用调用而不是事务。
pragma solidity ^0.8;
interface IBEP20 {
// mind the `view` modifier
function balanceOf(address _owner) external view returns (uint256);
}
contract checkBalanceOf {
address bankAddress = address(0x123);
// mind the `view` modifier
function balanceOf() external view returns (uint256) {
// creating a pointer to the WBNB contract
IBEP20 WBNBContract = IBEP20(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);
// getting balance of `bankAddress` on the WBNB contract
return WBNBContract.balanceOf(bankAddress);
}
}
推荐阅读
- spartacus-storefront - 如何使用自定义解析器添加自定义元数据,如 PageTitleResolver 、 PageDescriptionResolver 等
- c - 为什么这个表达式在 C 中变成 4?
- asp.net-core - 在 .NET Core 3.1 控制台中托管 SignalR 集线器
- excel - ActiveX 文本框在单击设计视图之前不会更新
- reporting-services - SSRS 报告:要导出到 1 张 PowerPoint 幻灯片的多个图表
- c - tmpname 函数在 Sun Solaris 环境中将临时文件写入何处?
- python - matplotlib 没有 pyplot 的全局状态
- java - Selenium java如何从第二个引号“”中的元素获取文本
- php - PHP 动态定义的变量(在有两个条件的 while 循环中使用)
- c# - 为什么在 datagridview 的列中按日期过滤时会出错?'System.NotSupportedException' DataGridViewAutoFilter.dll