Binance spun up their own fork of the Gnosis Safe interface at https://gnosis-safe.binance.org which will be shut down on September 1, 2021.

Binance used their own deployment of the Gnosis Safe contracts, hence Safes created via the Binance interface aren't directly compatible with the official Safe interface at https://bsc.gnosis-safe.io/app/.

Instead, users would have to create a new Gnosis Safe on https://bsc.gnosis-safe.io/app/ and move all their funds over. As long as the Binance interface is still available, we recommend using it. Starting September 1, 2021 however, it won't be available.

This article describes on how to use the command line to transfer out funds. The article is written for BSC, but should work for other networks as well.

Please note: This guide requires some technical understanding on how to use the command line and Ethereum. Please use at your own risk.

This guide assumes a Safe at 0x7943fdC45224986ECf11A408f49b65dE5Bc2a03f which was created via https://gnosis-safe.binance.org with 3 owners and a threshold of 2, i.e. 2 signatures are required to execute transactions.

This tutorial will transfer out 1.234 BNB as well as 2.345 Binance USDC and 3.456 Binance DAI out.

Please replace with your Safe address and your desired tokens accordingly.

We will be using the safe-tasks tool at https://github.com/gnosis/safe-tasks/.

  1. Setup safe-tasks as described in the Install section

  2. Edit .env with the PK or MNEMONIC of one of the Safe owner accounts.

    • Refer to this guide on how to export a private key from an account in Metamask.

  3. Edit .env and set NETWORK="bsc"

  4. Run yarn safe info 0x7943fdC45224986ECf11A408f49b65dE5Bc2a03f to double check installation was successful.

    • You should see something like this:

  5. Create a new file called send_assets.json with the following content:

    • [
      {
      "to": "0xTHE_ADDRESS_OF_THE_RECIPIENT_HERE",
      "value": "1.234",
      "operation": 0
      },
      {
      "to": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
      "value": "0",
      "method": "transfer(address,uint256)",
      "params": ["0xTHE_ADDRESS_OF_THE_RECIPIENT_HERE", "2345000000000000000"],
      "operation": 0
      },
      {
      "to": "0xe9e7cea3dedca5984780bafc599bd69add087d56",
      "value": "0",
      "method": "transfer(address,uint256)",
      "params": ["0xTHE_ADDRESS_OF_THE_RECIPIENT_HERE", "3456000000000000000"],
      "operation": 0
      }
      ]
    • Item 2 and 3 in this JSON array are the 2 ERC20 token transfers. Please replace/add accordingly.

  6. Again: Please only continue if you know what you are doing.

  7. Initiate transaction via yarn safe propose-multi 0x7943fdC45224986ECf11A408f49b65dE5Bc2a03f send_assets.json --on-chain-hash

    • You should see something like this:

  8. Note and copy the Safe transaction hash in the last line.

  9. Sign transaction with yarn safe sign-proposal 0x33c809879969374c90cc59fec68d43e7bf2f7bd9ecaaad3d917e30a4d0ac1eb7

    • Replace with your Safe transaction hash accordingly.

  10. If you haven't reached the threshold yet, replace the PK or MNEMONIC in .env with another Safe owner and repeat step 10.

  11. Repeat steps 10 and 11 until you have collected enough signatures.

  12. Now execute the transaction with yarn safe submit-proposal 0x33c809879969374c90cc59fec68d43e7bf2f7bd9ecaaad3d917e30a4d0ac1eb7

  13. Now you transaction will be executed and the fund will soon we accessible at the recipient address.

Did this answer your question?