这是代码
address public ceo;
function withdraw() external {
payable(ceo).transfer(address(this).balance);
}当首席执行官是EOA地址的时候,它就起作用了。但当我把首席执行官的地址换成一个灵异安全的钱包时,它就失败了。我在bsc网络上。
更新:我使用下面的代码,但它不工作,它说无效的发件人..
overrides = {
gasLimit: 500000,
gasPrice: ethers.utils.parseUnits('50', 'gwei').toString(),
type: 1,
accessList: [
{
address: "0x22e8371E3A14fA4A643BfaA1875bd04F09563F10", // admin gnosis safe proxy address
storageKeys: [
"0x0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
address: "0x3E5c63644E683549055b9Be8653de26E0B4CD36E", // gnosis safe master address
storageKeys: []
}
]
}
endAuctionTX = await auction.withdraw(overrides)
console.log({endAuctionTX})
resolved = await endAuctionTX.wait()
console.log({resolved})发布于 2022-02-25 12:43:12
我已经写了一个指南,你可以恢复:https://github.com/rmeissner/safe-migrator
本指南涉及一些定制合同,一定要检查它们。这里的一般方法是将单例(也称为主副本)更改为保险柜的版本,在收到资金时不发出事件,因此气体成本较低。安全UI和服务仍然支持这个安全(至少现在是这样),但建议切换回正式的安全单例合同。
发布于 2022-02-24 13:33:55
Gnosis安全需要2300多个气体(默认气体由transfer发送)才能接收乙醚。您应该使用call而不是transfer。
https://ethereum.stackexchange.com/questions/122461
复制相似问题