I have a simple NFT smart contract that withdraws funds to multiple addresses including one Safe address. However, the execution reverts.

I've duplicated the contract on goerli testnet:


Also, I've created a goerli safe:


Here's the code snippet that handles the withdrawal:

    function withdraw() public onlyOwner nonReentrant {
    uint256 balance = address(this).balance;

    bool success;
    (success, ) = payable(0xf13B6e39203186ce04E35434FE701F83C6353191).call{value: ((balance * 35) / 100)}("Dao");
    require(success, "Dao Transaction Unsuccessful");

Here's one execution of the withdrawal:


I've tried multiple solutions like transferring ownership to the Safe and then executing the withdrawal from within the safe. That results in GS103 error.

  • I seem to think it's something to do with a lack of multisignature.. let me have a dig
    – immaxkent
    Dec 10, 2022 at 23:47
  • 1
    I've explored the issue in detail and it seems its similar to ethereum.stackexchange.com/questions/123750/… However, the method didnt work. I created a simpler contract: 0x1a2e2ED504BdE006c724f9ff90fa1b03A74e6Bec and a new safe: 0x228Dd1F90A492F7278EDE4DEd63C02a3d2Db664E Here's the code snippet I've copied from the similar issue: ibb.co/8P62TsW
    – Green
    Dec 11, 2022 at 1:28
  • Please verify contracts on etherscan when submitting them to people for debugging
    – mikheevm
    Dec 11, 2022 at 16:22
  • 1
    As a shot in the dark, try not to pass any transaction data to the call.
    – mikheevm
    Dec 11, 2022 at 16:23
  • Is there a way to upgrade the gnosis contract? Cuz my contract is live and already holds funds.
    – Green
    Dec 11, 2022 at 19:54


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.