区块链 以太坊 多层调用,获取调用者 msg.sender
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链 以太坊 多层调用,获取调用者 msg.sender相关的知识,希望对你有一定的参考价值。
msg.sender:合约的直接调用者。
由于是直接调用者,所以当处于 用户A->合约1->合约2 调用链下,
- 若在合约2内使用msg.sender,得到的会是合约1的地址。
- 如果想获取用户A,可以用tx.origin, tx.origin:交易的"始作俑者",整个调用链的起点。
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.sender的主要内容,如果未能解决你的问题,请参考以下文章