私は誤解していたので、皆さん気をつけましょう。
スマートコントラクトを実装する際によく msg.sender
を使っていますが、漠然として トランザクションの送信者アドレス
と思っていました。とあるソースを読んだら、誤解していたことを気づきました。Solidity のドキュメントを振返て確認してみたら、見事に書かれてありました。
ドキュメント solidity.org v0.8.19 Block and Transaction Properties に下記の説明とノートがあります。
msg.sender (address): sender of the message (current call)
Note: The values of all members of msg, including msg.sender and msg.value can change for every external function call. This includes calls to library functions.