You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity基础疑问:msg.sender代表的含义是什么?

关于Solidity中msg.sender的清晰解释

嘿,首先得给你点个赞——作为非开发者开启Solidity学习挑战真的超棒,这一路肯定会有不少小疑问,但每解决一个都是实打实的进步!

你的猜测完全正确!msg.sender在Solidity里就是触发当前智能合约函数调用的账户地址,绝大多数日常场景下,它就是发起交易的用户钱包地址。不过为了让你理解得更全面,我再补充几个关键场景:

  • 当你用MetaMask(或其他钱包)直接调用合约的某个函数时,msg.sender就是你的钱包公钥地址
  • 如果是一个智能合约A调用另一个智能合约B的函数,那此时合约B里的msg.sender就是合约A的地址,而非最初发起交易的用户地址

举个简单的代码例子,能帮你更直观地理解:

// 一个极简的合约示例
contract SimpleContract {
    address public lastCaller;

    function recordCaller() public {
        // 将调用此函数的地址存入lastCaller变量
        lastCaller = msg.sender;
    }
}

当你用自己的钱包调用recordCaller()后,lastCaller就会变成你的钱包地址;如果是另一个合约调用这个函数,lastCaller就会是那个合约的地址。

慢慢摸索,你已经走在正确的路上啦!

内容的提问来源于stack exchange,提问作者Sumak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:08:56