[英]How do I see what is tr balance of a smart contract?
如果我向智能合约地址发送一些以太币,我可以使用什么功能来检查智能合约的总余额?
要从智能合约向智能其他钱包地址发送以太币,solidity 是否有任何特殊功能或仅发送/转移功能有效?
接受 ETH 的合约需要实现receive()
或fallback()
特殊功能。
它的当前余额在address(this)
的属性.balance
中返回,因此您可以将其包装在一个函数中以检索余额。
pragma solidity ^0.8;
contract MyContract {
receive() external payable {}
function getBalance() external view returns (uint256) {
return address(this).balance;
}
}
第一个问题答案:
contractAddress.balance
web3.eth.getBalance(accounts[0])
第二题答案:
您有多种方法可以将余额从智能合约转移到另一个(我将列出其中的 5 种):
contractAddress.transfer(1 ethers)
contractAddress.send(1 ethers)
contractAddress.call{value: msg.value}("");
要检查这些方法之间的差异, 请查看这篇文章。
前 3 种方法要求,如果接收方是智能合约,则需要实现receive()
函数或fallback()
函数,两者都是明确支付的。
推荐的方法是使用呼叫(不是转移或发送)。 要知道为什么要检查为什么在以前的网络分叉中添加了访问列表功能。
最后两个考虑因素非常重要,因为即使没有实现receive()
或fallback()
函数,智能合约也可以接收资金。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.