区块链 以太坊 全局变量 msg包括哪些字段
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链 以太坊 全局变量 msg包括哪些字段相关的知识,希望对你有一定的参考价值。
比较常用的全局变量是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;
}
}
以上是关于区块链 以太坊 全局变量 msg包括哪些字段的主要内容,如果未能解决你的问题,请参考以下文章
区块链--BitcoinEthereumHyperledger Fabric