Skip to content

Commit

Permalink
Merge branch 'main' of github.com:safe-global/safe-contracts into cer…
Browse files Browse the repository at this point in the history
…tora/treshold-ownercount
  • Loading branch information
mmv08 committed Jul 4, 2023
2 parents d2d87c3 + 325aa47 commit b2006f7
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
8 changes: 6 additions & 2 deletions certora/harnesses/SafeHarness.sol
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,15 @@ contract SafeHarness is Safe {
return getGuard();
}

function getNativeTokenBalance() public view returns (uint256) {
return address(this).balance;
}

function getOwnersCount() public view returns (uint256) {
return ownerCount;
}

function getNativeTokenBalance() public view returns (uint256) {
return address(this).balance;
function getOwnersCountFromArray() public view returns (uint256) {
return getOwners().length;
}
}
10 changes: 10 additions & 0 deletions certora/specs/Safe.spec
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ methods {
function getSafeGuard() external returns (address) envfree;
function getNativeTokenBalance() external returns (uint256) envfree;
function getOwnersCount() external returns (uint256) envfree;
function getOwnersCountFromArray() external returns (uint256) envfree;
// optional
function execTransactionFromModuleReturnData(address,uint256,bytes,Enum.Operation) external returns (bool, bytes memory);
Expand Down Expand Up @@ -261,3 +262,12 @@ rule nativeTokenBalanceSpendingExecTransactionFromModuleReturnData(
assert balanceAfter < balanceBefore =>
to_mathint(balanceBefore - value) <= to_mathint(balanceAfter);
}

rule safeOwnerCountConsistency(method f) filtered {
f -> reachableOnly(f)
} {
calldataarg args; env e;
f(e, args);

assert getOwnersCount() == getOwnersCountFromArray();
}

0 comments on commit b2006f7

Please sign in to comment.