0

here is the code

  address public ceo;
  function withdraw() external {
    payable(ceo).transfer(address(this).balance);
  }

when the ceo is a EOA address, it worked. but when i replace the ceo address to a gnosis-safe wallet, it failed. i was on the bsc network.


updated: i use the follow code, but it doesn't work, it says invalid sender..


  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})
3
  • thank u for reply, i followed your first link, but it failed with: i updated my code upon. by the way, i was in the bsc network? please please help me. Feb 24, 2022 at 13:31
  • On bsc you will have to adjust the contract, as they do not support access lists yet afaik
    – Richard
    Feb 24, 2022 at 14:48

2 Answers 2

2

I have written a guide how you could recover: https://github.com/rmeissner/safe-migrator

This guide involves some custom contracts, make sure to review them. The general approach here is that the singleton (aka master copy) is changed to a version of the Safe that does not emit an event when receiving funds and therefore the gas costs are lower. The Safe UI and services will still support this Safe (at least right now), but it is recommended to switch back to the official Safe singleton contract.

1

Gnosis Safe needs more than 2300 gas (default gas sent by transfer) to receive ether. You should use solidity call instead of transfer.

2
  • thank you for reply, i already know my mistake now, but i already hardcode the receive address with gnosis-safe address, and it was already send many bnb to it, Is there any way to recover.. Feb 24, 2022 at 13:36
  • were you able to recover ? @StarbucksSolidity I'm in the exact same situation
    – ihor.eth
    Oct 11, 2022 at 16:41

Not the answer you're looking for? Browse other questions tagged or ask your own question.