50 合约使用外部账户签名后的交易data , 调用其他合约的方法 ,msg.sender是谁

其他合约的方法中,msg.sender是代理合约还是我的外部账户呢?
我想写个代理合约来交易,但是担心msg.sender不是我自己 。
我记得以前有看过类似的例子 。

请先 登录 后评论

最佳答案 2021-12-28 11:03

这取决于代理合约的实现, 如果代理合约对对具体合约的调用是使用普通的接口调用, 那么在具体的调用用合约来说 msg.sender 是 你的代理合约。

如果代理合约 和 目标调用合约地址自己实现的, 且使用了 delegatecall的方式来调用目标合约,那么msg.sender 就是外部账户。

这里有一篇文章介绍: https://learnblockchain.cn/article/1960

请先 登录 后评论

其它 1 个回答

mike

补充一下: 可以设置_msg.sender ,来返回address;
_msg.sender 逻辑
{

  1. msg.sender
  2. calldata 计算获取
  3. 其他逻辑

}

请先 登录 后评论
  • 2 关注
  • 0 收藏,3486 浏览
  • 嘟噜嘟噜 提出于 2021-12-28 10:06