[Discussion] Self-hosted cosigners for Safe

Cosigners are a powerful security tool that is underused in the current ecosystem. We are looking into how to make them more accessible and allow people to tinker with them. For this we created Varangian, a simple cosigner that can be hosted on GitHub.

Read our blog post and let us know what you think and where to go next with cosigners.

2 Likes

As a non dev, the instruction were very clear and very easy to do. Highly suggest for others (even non devs) to do this. Thanks for compiling. I only had one question, could we enable this for more than 1 chain? As in, where we entered the url, could we do comma separated to include more than 1? I wasnt sure so I just deployed on GNO only

Thanks for the feedback and testing the setup.

The transaction services are currently starting to enforce API keys. With this they will also introduce a new API where it is easier to access information from different chains. The project will be updated to use this.

Also support for [Harbour](GitHub - safe-research/harbour: Harbour is a safe decentralised place where Safe transactions wait before sailing onto the blockchain) will be added, to provide support for an permissionless and decentralized solution :slight_smile:

JK looks like its nuking/blocking me being able to do anything on gnosis chain because I have more than 1tx pending. Is there a way to remove it or update so I can do tx on Gnosis again? Glad I did not deploy this on ETH side.

2 Likes

Guards and Cosigners are something we will iterate one. Variangian was a prototype and therefore maintenance was limited for now. (I.e. an update to the new Safe Wallet API is also required)

In general you can always go around the guard by approving the safeTxHash first on the guard. The simplest process for this would be to create the transaction you want to executed (i.e. to remove the guard), BUT with the nonce increased by 1 (so not as the imediated next tx, but as the tx after). Then the Safe Wallet interface will display you the Safe transaction hash (aka `safeTxHash`) for that transaction, which you can use to call `approveTxWithDelay(safeTxHash)` on the Guard.

This flow works even if you do not have access to the guard and it’s corresponding private key.

If you still have the private key (it was set during the cosigner setup) you could use this too, but this is potentially more complex.

Let me know if you require more support (I have the same handle on TG).