|
@@ -1,19 +1,19 @@
|
|
|
-import "helpers/helpers.spec"
|
|
|
+import "helpers/helpers.spec";
|
|
|
|
|
|
methods {
|
|
|
// initialize, reinitialize, disable
|
|
|
- initialize() envfree
|
|
|
- reinitialize(uint8) envfree
|
|
|
- disable() envfree
|
|
|
+ function initialize() external envfree;
|
|
|
+ function reinitialize(uint64) external envfree;
|
|
|
+ function disable() external envfree;
|
|
|
|
|
|
- nested_init_init() envfree
|
|
|
- nested_init_reinit(uint8) envfree
|
|
|
- nested_reinit_init(uint8) envfree
|
|
|
- nested_reinit_reinit(uint8,uint8) envfree
|
|
|
+ function nested_init_init() external envfree;
|
|
|
+ function nested_init_reinit(uint64) external envfree;
|
|
|
+ function nested_reinit_init(uint64) external envfree;
|
|
|
+ function nested_reinit_reinit(uint64,uint64) external envfree;
|
|
|
|
|
|
// view
|
|
|
- version() returns uint8 envfree
|
|
|
- initializing() returns bool envfree
|
|
|
+ function version() external returns uint64 envfree;
|
|
|
+ function initializing() external returns bool envfree;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -23,7 +23,7 @@ methods {
|
|
|
*/
|
|
|
definition isUninitialized() returns bool = version() == 0;
|
|
|
definition isInitialized() returns bool = version() > 0;
|
|
|
-definition isDisabled() returns bool = version() == 255;
|
|
|
+definition isDisabled() returns bool = version() == max_uint64;
|
|
|
|
|
|
/*
|
|
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -31,7 +31,7 @@ definition isDisabled() returns bool = version() == 255;
|
|
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
|
*/
|
|
|
invariant notInitializing()
|
|
|
- !initializing()
|
|
|
+ !initializing();
|
|
|
|
|
|
/*
|
|
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -39,7 +39,7 @@ invariant notInitializing()
|
|
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
|
*/
|
|
|
rule increasingVersion(env e) {
|
|
|
- uint8 versionBefore = version();
|
|
|
+ uint64 versionBefore = version();
|
|
|
bool disabledBefore = isDisabled();
|
|
|
|
|
|
method f; calldataarg args;
|
|
@@ -83,7 +83,7 @@ rule cannotInitializeOnceDisabled() {
|
|
|
rule cannotReinitializeOnceDisabled() {
|
|
|
require isDisabled();
|
|
|
|
|
|
- uint8 n;
|
|
|
+ uint64 n;
|
|
|
reinitialize@withrevert(n);
|
|
|
|
|
|
assert lastReverted, "contract is disabled";
|
|
@@ -99,17 +99,17 @@ rule cannotNestInitializers_init_init() {
|
|
|
assert lastReverted, "nested initializers";
|
|
|
}
|
|
|
|
|
|
-rule cannotNestInitializers_init_reinit(uint8 m) {
|
|
|
+rule cannotNestInitializers_init_reinit(uint64 m) {
|
|
|
nested_init_reinit@withrevert(m);
|
|
|
assert lastReverted, "nested initializers";
|
|
|
}
|
|
|
|
|
|
-rule cannotNestInitializers_reinit_init(uint8 n) {
|
|
|
+rule cannotNestInitializers_reinit_init(uint64 n) {
|
|
|
nested_reinit_init@withrevert(n);
|
|
|
assert lastReverted, "nested initializers";
|
|
|
}
|
|
|
|
|
|
-rule cannotNestInitializers_reinit_reinit(uint8 n, uint8 m) {
|
|
|
+rule cannotNestInitializers_reinit_reinit(uint64 n, uint64 m) {
|
|
|
nested_reinit_reinit@withrevert(n, m);
|
|
|
assert lastReverted, "nested initializers";
|
|
|
}
|
|
@@ -139,9 +139,9 @@ rule initializeEffects() {
|
|
|
rule reinitializeEffects() {
|
|
|
requireInvariant notInitializing();
|
|
|
|
|
|
- uint8 versionBefore = version();
|
|
|
+ uint64 versionBefore = version();
|
|
|
|
|
|
- uint8 n;
|
|
|
+ uint64 n;
|
|
|
reinitialize@withrevert(n);
|
|
|
bool success = !lastReverted;
|
|
|
|