ethereum - 为什么 msg.sender 有部署合约的账户地址(而不是与之交互的账户地址)?
问题描述
我目前正在以太坊上开发一个 dapp。据我所知 msg.sender 应该具有与之交互的帐户的价值。但是,它会保留部署者帐户的价值。
我正在使用 metamask 和solidity ^0.4.24。我正在使用 truffle 框架和 Ganache GUI 部署联系人作为我的虚拟节点
function getMe() public view returns(address){
return msg.sender;
}
所以,我希望这段代码返回与合约交互的账户的哈希值,但我取回的是部署它的账户的地址
解决方案
msg.sender
包含调用者地址的值。您必须从同一个帐户进行部署和交互,可能使用accounts[0]
.
推荐阅读
- c# - 无法打开 DBML 文件 - 缺少 .Net 数据提供程序?
- date - 搜索一行日期,确定开始日期和结束日期,合并从开始日期到结束日期的行中的单元格
- sql - 使用 @ 符号在 netezza SQL 中声明变量
- c++ - 创建单独的实现和头文件
- spring-batch - Spring批量分区示例
- c# - 在未迁移第三方的情况下将 .net 项目迁移到 .net Core
- javascript - Laravel 使用 ajax 将多个复选框插入数据库
- django - 基于 Django url 的多数据库
- c - SHA1 消息摘要到纯文本
- ibm-cloud - 如何在 Bluemix 上为 Node-RED 安装 node-red-contrib-cep