本文主要是介绍区块链 以太坊 多层调用,获取调用者 msg.sender,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
msg.sender:合约的直接调用者。
由于是直接调用者,所以当处于 用户A->合约1->合约2 调用链下,
- 若在合约2内使用msg.sender,得到的会是合约1的地址。
- 如果想获取用户A,可以用tx.origin, tx.origin:交易的"始作俑者",整个调用链的起点。
pragma solidity ^0.4.25;
contract Sample{
//State variablesaddress private _admin;uint private _state;
//Modifiermodifier onlyAdmin(){require(msg.sender == _admin, "You are not admin"); _;}
//Eventsevent SetState(uint value);
//Constructorconstructor() public{_admin = msg.sender;}
//Functionsfunction setState(uint value) public onlyAdmin{_state = value;emit SetState(value);}
function getValue() public view returns (uint){return _state;}
}
这篇关于区块链 以太坊 多层调用,获取调用者 msg.sender的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!