我正在运行一个铸造脚本,它部署一些合同并调用它们。我开始我的运行函数
function run() public {
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
...
address(contract).call(
abi.encodeWithSignature(
"function(uint256,bytes8,address)",
var1,
var2,
var3
)
);
vm.stopBroadcast();
}在被调用的契约中,我总是将tx.origin作为地址: 0x1804c8ab1f12e6bbf3894d4083f33e07309d1f38。我假设这是某种铸造脚本部署地址。然而,msg.sender是我的正确地址。
如果我使用tx.origin (),我能够正确地设置vm.prank和msg.sender,但是我需要脚本来与现有的链上契约进行交互。我想我需要的是startBroadcast,而不是vm.prank()。
那个地址真的是默认部署者地址吗?
我怎样才能让tx.origin成为我的地址呢?
发布于 2023-01-22 03:06:37
在执行伪造脚本命令时,请包括--sender或--private-key钱包选项,以更改tx.origin地址。
https://ethereum.stackexchange.com/questions/143259
复制相似问题