msg.sender (address):消息的发送方(当前呼叫)。
考虑用户使用智能契约并尝试执行事务的场景。对于该特定用户,msg.sender是该用户的地址。
这个地址对那个特定的用户有变化吗?
给来电者的地址是什么?它是如何产生的?
发布于 2020-07-28 07:28:42
msg.sender始终是调用当前合同的实体的地址。当合同调用另一个契约时,msg.sender将发生更改。让我举几个例子。
假设我们有一个EOA (外部拥有的帐户)A和合同B和C。当A调用B时,B中的msg.sender是A的公共地址。如果合同B也调用合同C,则合同C中的msg.sender是B(合同)地址。
因此,用户的地址永远不会改变(假设他使用相同的帐户),但是msg.sender在契约中的变化是基于哪个实体启动了对该契约的调用。
在前面的示例中,也有始终是A的tx.origin (在事务中从A调用的每个契约中),但是这通常不应该被使用。
https://ethereum.stackexchange.com/questions/85340
复制相似问题