区块链 以太坊 全局变量 msg包括哪些字段
  DJsdk34H4Gbu 2023年11月02日 59 0


比较常用的全局变量是msg变量,表示调用上下文,常见的全局变量有以下几种:

  • msg.sender​:合约的直接调用者。


    由于是直接调用者,所以当处于 用户A->合约1->合约2 调用链下,若在合约2内使用msg.sender,得到的会是合约1的地址。如果想获取用户A,可以用tx.origin.

  • msg.calldata​:包含完整的调用信息,包括函数标识、参数等。calldata的前4字节就是函数标识,与msg.sig相同。

  • msg.sig​:msg.calldata的前4字节,用于标识函数。

pragma solidity ^0.4.25;
contract Sample{

//State variables
address private _admin;
uint private _state;

//Modifier
modifier onlyAdmin(){
require(msg.sender == _admin, "You are not admin");
_;
}

//Events
event SetState(uint value);

//Constructor
constructor() public{
_admin = msg.sender;
}

//Functions
function setState(uint value) public onlyAdmin{
_state = value;
emit SetState(value);
}

function getValue() public view returns (uint){
return _state;
}

}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
DJsdk34H4Gbu