看下面这个简单实例(单个合约中,不同账户调用):
pragma solidity ^0.4.25;
contract TestMSG_SENDER{
function show() public view returns(address){
return msg.sender;
}
}
我们在本地测试,不去公网或公网测试网;

然后我们切换账户地址,也就是上图中的Account选项,见下图:


我们发现这个时候得到的地址与切换以后的账户地址相同;
当在其他合约中调用这个方法的时候,先看代码:
pragma solidity ^0.4.25;
contract TestMSG_SENDER{
function show() public view returns(address){
return msg.sender;
}
}
contract TestMSG_SENDER_1{
TestMSG_SENDER contractAddr;
constructor(address _contractAddr) public{
contractAddr = TestMSG_SENDER(_contractAddr);
}
function visitShow() public view returns(address){
return contractAddr.show();
}
}

我们发现谁调用,返回的就是谁的地址。
网友评论