返还钱包余额功能

问题描述 投票:0回答:1

我正在尝试创建一个函数来返回我的 sepolia 测试网元掩码钱包的余额。

我写了这个函数:

    function getBalance() external view onlyOwner returns (uint256) {
        return address(this).balance;
    }

但它始终返回0。 请注意,我的智能合约已经连接到我的 Metamask 钱包,并且其他功能运行良好。

ethereum blockchain solidity smartcontracts wallet
1个回答
0
投票

address(this)
返回合约地址。

执行该函数的人的地址是

msg.sender
。所以在这种情况下:
return msg.sender.balance;

一些注意事项:

  • msg.sender
    反映了执行该函数的人。它可能是最终用户,也可能是调用此函数的其他合约。
  • 您的函数具有
    view
    修饰符,这使其成为只读函数。某些应用程序(例如没有连接 MetaMask 钱包的 Etherscan)如果不知道实际的呼叫者地址,可能会从零地址 (
    msg.sender == address(0)
    ) 进行呼叫。
  • 您的函数具有
    onlyOwner
    修饰符。假设它来自 OpenZeppelin Ownable 库,如果不是从
    owner
    地址调用,该函数将恢复并且不返回任何值(甚至不返回零)。
© www.soinside.com 2019 - 2024. All rights reserved.