solidity中msg.sender到底是啥,其實很簡單
看下面這個簡單例項(單個合約中,不同賬戶呼叫):
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();
}
}

合約呼叫測試結果
我們發現誰呼叫,返回的就是誰的地址。