msg.sender.balance和address(this).balance有什么区别?
当我运行代码时,输出
msg.sender.balance = 99
address(this).balance =0
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.1 <0.9.0;
contract test{
uint public myBalance1=msg.sender.balance;
uint public myBalance2=address(this).balance;
}发布于 2022-08-23 00:17:32
address(this).balance是智能契约本身的平衡。
msg.sender.balance是进行事务的用户的余额,如果msg.sender是另一个契约,那么它就是另一个契约的余额。
this引用正在执行的契约实例。msg.sender是刚刚调用另一个契约的用户或契约。
我打电话给合同,然后msg.sender是你,msg.sender.balance是你的地址余额,是你用来发送交易的地址。this,在一个合同中,是你刚刚调用的合同,而不是你。
如果您调用一个A,而该合同调用另一个契约B,那么B内部的msg.sender将不是您,而是A的S契约地址。在A中,msg.sender是您,因为您是调用它的人,但是在B中,msg.sender是A,因为被调用的B。
https://ethereum.stackexchange.com/questions/134172
复制相似问题