The Safe is a multi-signature wallet that supports access control based on on n
-out-of-m
schemes. That means a Safe has m
signers from which n
have to confirm before a transaction can be executed.
The core Safe contracts only allow n
-out-of-m
schemes. More fine-grained or custom access control schemes have to be implemented by either Safe modules or transaction guards.
Safe modules needs to be used to implement any access control scheme. If desired, the n
-out-of-m
scheme is completely bypassed. Learn more about modules here.
Transaction guards have been introduced with Safe contracts version 1.3.0. They are used when there are restrictions on top of the n
-out-of-m
scheme.
Transaction guards can make checks before and after a Safe transaction.
The check before a transaction can e.g. programmatically check all of the parameters of the respective transaction prior to execution.
This check after a transaction is called at the very end of the transaction execution and can be used to e.g. perform checks on the final state of the Safe.
At the time of this writing, transaction guards have to be enabled and disabled via a manual direct contract interaction. The enabled transaction guards can be verified in your Safe settings.