The Delay Modifier belongs to the Zodiac collection of tools, which can be accessed through the Zodiac App available on Gnosis Safe, as well as in this repository.
If you have any questions about Zodiac, join the Gnosis Guild Discord. Follow @GnosisGuild on Twitter for updates.
This modifier allows avatars to enforce a time delay between when a module initiates a transaction and when it can be executed by an avatar.
This means an pproved address can execute transactions only after a cooldown period and, optionally, before an expiration time.
The interface mirrors the relevant parts of the Gnosis Safe's interface, so this contract can be placed between Gnosis Safe modules and a Gnosis Safe to enforce a time delay between transaction creation and execution.
Transactions are executed in order. The Gnosis Safe can skip transactions by advancing the transaction nonce.
- Enqueue transactions
- Enable and disable modules
- Public function to execute the next transaction in queue
- Skip transactions by advancing the nonce
- Set cooldown and expiration periods
- Enqueue transactions by calling
execTransactionFromModule()
- Wait for cooldown ⏱️
- Anyone can execute the next transaction by calling
executeNextTx
The contracts have been developed with Solidity 0.8.0 in mind. This version of Solidity made all arithmetic checked by default, therefore eliminating the need for explicit overflow or underflow (or other arithmetic) checks.
Follow our Delay Modifier Setup Guide.
An audit has been performed by the G0 group.
All issues and notes of the audit have been addressed in commit 95c75547edf075d3c7a0f23e93ff856dedd17507.
The audit results are available as a pdf in this repo or on the g0-group repo.
All contracts are WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Created under the LGPL-3.0+ license.