我使用的合同来自: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);
}
我试图应用这个答案的逻辑,但与此不同的是,这个答案没有公共功能
is posible call public view return deployed, from anther contract?
答案 0 :(得分:1)
为了检查 bankAddress
拥有多少 WBNB,并从您自己的合同中执行检查,您的合同需要:
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);
}
}