首页 > 解决方案 > 为什么 msg.sender 有部署合约的账户地址(而不是与之交互的账户地址)?

问题描述

我目前正在以太坊上开发一个 dapp。据我所知 msg.sender 应该具有与之交互的帐户的价值。但是,它会保留部署者帐户的价值。

我正在使用 metamask 和solidity ^0.4.24。我正在使用 truffle 框架和 Ganache GUI 部署联系人作为我的虚拟节点

function getMe() public view returns(address){
        return msg.sender;
    }

所以,我希望这段代码返回与合约交互的账户的哈希值,但我取回的是部署它的账户的地址

标签: ethereumsolidity

解决方案


msg.sender包含调用者地址的值。您必须从同一个帐户进行部署和交互,可能使用accounts[0].


推荐阅读