You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The categories are based on Certora's workshop [notes](https://github.com/Certora/Tutorials/blob/40ad7970bfafd081f6f416fe36b31981e48c6857/3DayWorkshop/SymbolicPool/properties.md).
6
+
7
+
1. Valid states
8
+
Usually, there can be only one valid state at any given time. Such properties ensure the system is always in exactly one of its valid states.
9
+
10
+
2. State transitions
11
+
Such properties verify the correctness of transactions between valid states. E.g., confirm valid states change according to their correct order or transitions only occur under the right conditions.
12
+
13
+
3. Variable transitions
14
+
Similar to state transitions, but for variables. E.g., verify that Safe nonce is monotonically increasing.
15
+
16
+
4. High-level properties
17
+
The most powerful type of properties covering the entire system. E.g., for any given operation, Safe threshold must remain lower or equal to the number of owners.
18
+
19
+
5. Unit test
20
+
Such properties target specific function individually to verify their correctness. E.g., verify that a specific function can only be called by a specific address.
21
+
22
+
6. Risk assessment
23
+
Such properties verify that worst cases that can happen to the system are handled correctly. E.g., verify that a transaction cannot be replayed.
24
+
25
+
## Safe Contract Properties
26
+
27
+
Verification doesn't hold for the `DELEGATECALL` operation.
28
+
29
+
### Valid states
30
+
31
+
### State transitions
32
+
33
+
### Variable transitions
34
+
35
+
### High-level properties
36
+
37
+
### Unit test
38
+
39
+
### Risk assessment
40
+
41
+
- nonce monotonicity, it can only increase by 1 after execTransaction call
42
+
43
+
- consistency of owner and module lists
44
+
45
+
verify that `ownerCount` is in sync with the linked list.
46
+
always circular - each address for which `isModuleEnabled` returns true should be a part of the list
47
+
48
+
- configuration changes to safe can only be done by the safe
49
+
who can swap owner?
50
+
module management
51
+
who should be able to?
52
+
53
+
who should be allowed to make contract do delegate calls?
0 commit comments