Committee guideline on how to propose, verify and sign-off transactions

Committee guidelines: How to propose, verify and sign-off transactions

References:


Steps for initiating a new transaction

  1. Open Safe #3 (https://gnosis-safe.io/app/gno:0xDA00000B30dCf0C3f5d968e4451Ebdee6950d63e/home ) and click to connect with a client in the UI (right corner) using WalletConnect. It now shows you a WalletConnect QR code modal.

  2. Now open a completely separate browser (For example if you used Chrome for Safe #3 in the previous step, then use Brave or Firefox now).

  3. Open Safe #2 in this separate browser and connect in this UI (right corner) with your Committee signer wallet (for example using MetaMask).

  4. Once connected, go to the WalletConnect app (https://gnosis-safe.io/app/gno:0xCA1F000D520c21C47E6c634DD31b92b91A6338bD/apps?appUrl=https://apps.gnosis-safe.io/wallet-connect )

  5. Copy the QR code from the WalletConnect modal in Safe #3 (Step 1 above) and paste it in this WalletConnect app. Once connected, ignore a message saying to use the Gnosis.io Dapp - click instead on ‘Keep using WalletConnect’.

  6. You have now successfully connected Safe #2 to Safe #3.

  7. Now on Safe #3 make/propose any transaction and send it for signing. The request will be sent to Safe #2 through WalletConnect.

  8. Sign the transaction in Safe #2 with your Committee wallet. It now should be shown as a queued transaction here https://gnosis-safe.io/app/gno:0xCA1F000D520c21C47E6c634DD31b92b91A6338bD/transactions/queue and should show a ‘WalletConnect - approveHash’ transaction. This queued transaction now needs all required signatures before it can be executed.

  9. On Safe #3 you will not see any queued transactions by default. This is not great for transparency in terms of asking other committee members to sign a hash in Safe #2. But there is a workaround:

  10. Go to Safe #2 and click to expand the queued ‘approveHash’ transaction (https://gnosis-safe.io/app/gno:0xCA1F000D520c21C47E6c634DD31b92b91A6338bD/transactions/queue). Then find the value for ‘hashToApprove(bytes32):’ and copy this hash value.

  11. Then paste it right behind this url to open this in Safe #3:

https://gnosis-safe.io/app/gno:0xDA00000B30dCf0C3f5d968e4451Ebdee6950d63e/transactions/hashToApprove(bytes32)

(replace hashToApprove(bytes32) with the actual hash value!)

  1. This should now open the original proposed transaction in Safe #3 where it allows you to see what ‘approveHash’ in Safe #2 will sign off for.

  2. Inform the rest of the committee that a ‘approveHash’ transaction is ready to be signed/executed in Safe #2 and share the URL to Safe #3 with the hashToApprove(bytes32) value in it for transparency.

  3. If a transaction involves sending tokens to an address, and you use a batch transaction (e.g. CSV Airdrop) the transaction will show the sending amount as value(uint256):
    This is a long number. To double check the actual amount being sent, use this formula:

(uint256) / (1 * (10 ^ (token decimals)))

In simple terms, you divide the uint256 value with the amount of decimals the specific token you’re sending has.


Steps for signing/executing a queued transaction:

  1. Go to Safe #2 and click to expand the queued ‘approveHash’ transaction (https://gnosis-safe.io/app/gno:0xCA1F000D520c21C47E6c634DD31b92b91A6338bD/transactions/queue). Then find the value for ‘hashToApprove(bytes32):’ and copy this hash value.

  2. Then paste it right behind this url to open this in Safe #3:

https://gnosis-safe.io/app/gno:0xDA00000B30dCf0C3f5d968e4451Ebdee6950d63e/transactions/hashToApprove(bytes32)

(replace hashToApprove(bytes32) with the actual hash value!)

  1. This should now open the original proposed transaction in Safe #3 where it allows you to see what ‘approveHash’ in Safe #2 will sign off for.

  2. If a transaction involves sending tokens to an address, and you use a batch transaction (e.g. CSV Airdrop) the transaction will show the sending amount as value(uint256):
    This is a long number. To double check the actual amount being sent, use this formula:

(uint256) / (1 * (10 ^ (token decimals)))

In simple terms, you divide the uint256 value with the amount of decimals the specific token you’re sending has.

  1. If you have successfully verified that the ‘approveHash’ transaction is for the matching transaction (by verifying the hashToApprove(bytes32)) and you as a committee member approve for this transaction, then go ahead and sign and/or execute the ‘approveHash’ transaction in Safe #2.
1 Like