1

I'm using the safe-core-sdk to propose a transaction to my Gnosis safe.

Once proposed, I can view the transaction by going to it directly with this URL: https://gnosis-safe.io/app/eth:0xA0385041eB8ec23aD04a76C8A50b85ca0C7Ff770/transactions/0x2caa1060ab60823b92782baba7acfe7f832369742d88e2ccd23a1618d78e4651

However it doesn't appear in the queue.

The more serious problem is that once I do go to that direct link, if I click confirm the confirm button flashes twice, but doesnt do anything. I'm connected with a metamask wallet, and would expect a dialogue to pop-up to sign the confirmation.

If I propose transactions via the UI, rather than the SDK, I can confirm and execute them as usual. I've also been able to propose transactions with previous versions of the core-safe-sdk.

5
  • Regarding this: "I've also been able to propose transactions with previous versions of the core-safe-sdk", can you share the code you are using (including creation of the transaction and proposing it to the service? What version are you using?
    – Germán
    Feb 28, 2022 at 17:48
  • Does this answer your question? ​POST /safes​/{address}​/multisig-transactions​/ not working (Rinkeby)
    – Richard
    Mar 1, 2022 at 12:47
  • @Germán I'm using safe-service-client 1.1.1. There used to be an option to send a signature to proposeTransaction but now there doesn't seem to be? How should I do this? Mar 3, 2022 at 2:15
  • @BarefootDev make sure the safeTransaction param includes the signature. Now it is passed inside this object instead of passing it as a different param. Initialize the safe-core-sdk with the sender address and call this method (github.com/gnosis/safe-core-sdk/blob/main/packages/…) before proposing it in order to sign the transaction
    – Germán
    Mar 3, 2022 at 15:27
  • Thanks it's sorted now. Ill post as an answer for others to see. Mar 4, 2022 at 3:00

2 Answers 2

2

The interface only shows transactions with at least one owner signature. Otherwise, it would be possible to spam/propose malicious transactions by anyone. Your transaction has 0 signatures.

1

As another answer points out, the transaction will only appear in the Queue if has at least 1 signature.

To provide that signature with the latest version of Gnosis core-safe-sdk (1.1.1) I run the following:

const safeTransaction: SafeTransaction = await safeSdk.createTransaction(
    safeTransactionData
  );

const txHash = await safeSdk.getTransactionHash(safeTransaction);

const signature = await safeSdk.signTransactionHash(txHash);

safeTransaction.addSignature(signature);

await safeService.proposeTransaction({
    safeAddress: gnosisSafeAddress,
    senderAddress: signer.address,
    safeTransaction: safeTransaction,
    safeTxHash: txHash
});

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.

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