Abstract
The current version of the Safe contracts (1.3.0) is stable, but is not following all standards. Therefore I would propose to start planing a new version of the Safe contract. The general goal is to make the contracts more explicit and therefore more secure and allow a more configuration possibilities.
I would love to get some feedback on the changes proposed and if there is anything missing.
Changes
Breaking Changes
-
Change setup method
- Motivation
- Improve security and ability to easily create and setup a Safe
- Notes
- Remove delegatecall
- Take owners, threshold, fallback handler, guard, modules, moduleGuard
- Motivation
-
Remove payment logic
- Motivation
- Remove code that has high network dependencies (e.g. gas price) to allow easier portability to new networks
- Notes
- Motivation
-
Remove EIP-1271 logic for signature checks
- Motivation
- EIP-1271 in the form added is not supported anymore, therefore the logic for it should be removed
- Notes
- The functionality should be preserved with another feature (see signature parser)
- EIP1271 is not implement correctly in GnosisSafe · Issue #391 · gnosis/safe-contracts · GitHub
- Motivation
-
Add nonce to exec parameters
- Motivation
- Increase security and traceability by explicitly specifying the expected nonce
- Notes
- Motivation
-
Remove
requiredTxGas
logic- Motivation
- This method has been marked as deprecated in the previous version in favor of StorageAccessible
- Motivation
-
Remove
createProxy
from factory- Motivation
- Prevent the creation of Safes with different configuration (e.g. owners) with the same address
- Motivation
New functionality
-
Add module guard
- Motivation
- Improve security of module usage.
- Notes
- This functionality already exists for the normal multi-signature flow and should be applied in a similar manner for transactions executed by modules
- Motivation
-
Allow to set signature parser for an address
- Motivation
- Make the contracts more flexible in regards to contract signatures and other new signature schemes
- Motivation
- Changes
- Allow to set a signature parser per address. This signature parser should follow a predefined interface and check if a specific signature for a specific address is valid.
- Notes
- add signature parser for EIP-1271
- add signature parser for BLS signatures
Additional Notes
Support for EIP-4337 was also evaluated. For now this is being tested as a module before we would start adding full native support.