如何获取支付汽油的地址(发送交易)



我有一个用例,奖励实际发送交易并为交易支付汽油的用户。正如我们所知,msg.sender返回呼叫的地址,但是,当从另一个合同调用合同时,msg.seder返回被调用的合同地址。但在这种情况下,我需要实际发送交易的用户的地址。

mapping(address=>uint256) public txSender;
function test() public {
address _txSender = getTxSender();
txSender[_txSender]++;
}

function getTxSender() public view returns(address) {
return msg.sender;
}

getTxSender并不总是返回对tx.进行签名的实际用户

您可以访问tx.origin全局变量中的原始发件人。

请注意,使用此变量进行授权会被视为一个漏洞。

因此,如果您需要使用原始发件人地址进行授权,您应该将msg.sender从第一个合同(通过内部交易链(传递到接收信息的最终合同。

最新更新