在合约构造函数中调用的函数中 msg.sender 的值是多少?

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

我读到,在合约部署期间,在构造函数内,合约地址尚未定义。因此,如果这个构造函数调用另一个合约的函数,这个函数会得到什么作为 msg.sender ?

谢谢!

constructor solidity smartcontracts
3个回答
0
投票

构造函数是在区块链上启动合约时运行的。 msg.sender 是变量指针,即正在启动或与合约交互的钱包地址。


0
投票

所以我在虚拟网络上测试了我的问题,似乎在部署合约期间,构造函数内部调用的函数将收到与部署后的最终地址不同的地址,并且无法将这个部署地址检测为合约的地址地址与最终地址相反。


0
投票

在 Solidity 中,在构造函数执行期间,

msg.sender
变量保存正在部署合约的账户或合约的地址。

举个例子来说明:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyContract {
    address public owner;

    constructor() {
        owner = msg.sender;
    }
}

在此示例中,构造函数将

owner
变量设置为部署
MyContract
合约的账户或合约的地址。这通常是外部拥有的帐户 (EOA) 或创建
MyContract
新实例的合约地址。

© www.soinside.com 2019 - 2024. All rights reserved.