我正在尝试创建一个函数来返回我的 sepolia 测试网元掩码钱包的余额。
我写了这个函数:
function getBalance() external view onlyOwner returns (uint256) {
return address(this).balance;
}
但它始终返回0。 请注意,我的智能合约已经连接到我的 Metamask 钱包,并且其他功能运行良好。
address(this)
返回合约地址。
执行该函数的人的地址是
msg.sender
。所以在这种情况下:return msg.sender.balance;
一些注意事项:
msg.sender
反映了执行该函数的人。它可能是最终用户,也可能是调用此函数的其他合约。view
修饰符,这使其成为只读函数。某些应用程序(例如没有连接 MetaMask 钱包的 Etherscan)如果不知道实际的呼叫者地址,可能会从零地址 (msg.sender == address(0)
) 进行呼叫。onlyOwner
修饰符。假设它来自 OpenZeppelin Ownable 库,如果不是从 owner
地址调用,该函数将恢复并且不返回任何值(甚至不返回零)。