区块链 以太坊 全局变量 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包括哪些字段的主要内容,如果未能解决你的问题,请参考以下文章

区块链 以太坊 多层调用,获取调用者 msg.sender

区块链--BitcoinEthereumHyperledger Fabric

一文读懂︱比特币和以太坊都有哪些区块?

区块链 以太坊 Solidity状态变量局部变量与memory storage

区块链开发以太坊系统下truffle构建智能合约

[Ethereum] 以太坊区块链搭建与使用-私有链