問題一覧に戻る
中級実践的な機能
問題65: Msgオブジェクト
Solidityのmsgグローバルオブジェクトを学習します - トランザクションコンテキスト情報へのアクセスです。msg.senderは関数を呼び出すアドレス(コントラクトまたはEOA)です。msg.valueはpayable関数で送信されたETHを含みます。msg.dataは完全なcalldataを保持します。msg.sigは関数セレクタを含みます。これらのプロパティはアクセス制御、支払い処理、低レベル操作に不可欠です。msgオブジェクトの理解は安全なコントラクトの構築に基本的です - msg.senderはDeFiと所有権システムでのほとんどの認証パターンの基礎です。
pragma solidity ^0.8.0;
contract MsgObject {
address public owner;
mapping(address => uint256) public deposits;
constructor() {
// 送信者をオーナーに設定
owner = ;
}
// ETHを預ける関数
function deposit() public payable {
require( > 0, "No ETH sent");
deposits[] += msg.value;
}
}