Your first example tx - is just the OnChain Rejection
. The #57 is still pending. The tx calls withdrawFunds()
of the contract 0x1D8769b57aaf4E3C0A64fC2f035F1EfA134FE24c. The tx looks good - all requires
should be passed - the state
is 3
and assetManagerAddress
is your multisig.
So despit of the error message in tx simulation, you can click Submit
button anyway.
EDIT
Looked into the decompiled code:
def withdrawFund(): # not payable
require state <= 5
if state != 3:
revert with 0, 'ONLY_DURING_SUCCESS'
if assetManagerAddress != caller:
revert with 0, 'ONLY_ASSET_MANAGER'
call assetManagerAddress with:
value eth.balance(this.address) wei
gas 2300 * is_zero(value) wei
if not ext_call.success:
revert with ext_call.return_data[0 len return_data.size]
but as the gnosis safe emits the Event
when the native token(BNB) is received
contract EtherPaymentFallback {
event SafeReceived(address indexed sender, uint256 value);
/// @dev Fallback function accepts Ether transactions.
receive() external payable {
emit SafeReceived(msg.sender, msg.value);
}
}
You will get here the Out of Gas
error, as 2300
won't be enough to transfer BNB and emit the Event
. The most easy solution would be to change the assetManagerAddress
to EOA and call the withdrawFund
from it, or if you must stay with Multisig as the Manager
, you could deploy a new Gnosis Safe implementation, to prevent emitting that Event
, or to look into accessList
- https://github.com/folia-app/eip-2929