为什么 msg.sender 有部署者的地址(地址不是调用者)
Why msg.sender has the address of the deployer (address isnt the caller)
我目前正在为以太坊区块链开发一个简单的命名服务。
msg.sender
有来自合约而非调用者的部署者地址。
address public caller;
constructor() {
caller = msg.sender;
}
使用 remix.ethereum.org
和 pragma solidity >=0.7.0 <0.9.0;
并部署在 JavaScript VM(伦敦)上。
谁能解释一下为什么?
现在 caller
将等于部署合约的地址,因为那是 msg.sender
将引用的地址。如果你试图让 caller
成为合约地址,那么你需要做 caller = address(this);
。 address(this)
为实际合约地址
我目前正在为以太坊区块链开发一个简单的命名服务。
msg.sender
有来自合约而非调用者的部署者地址。
address public caller;
constructor() {
caller = msg.sender;
}
使用 remix.ethereum.org
和 pragma solidity >=0.7.0 <0.9.0;
并部署在 JavaScript VM(伦敦)上。
谁能解释一下为什么?
现在 caller
将等于部署合约的地址,因为那是 msg.sender
将引用的地址。如果你试图让 caller
成为合约地址,那么你需要做 caller = address(this);
。 address(this)
为实际合约地址