From a5e11f53471d5dec1ef83229f619edae5b0c4691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment?= Date: Mon, 16 Dec 2024 10:54:46 +0100 Subject: [PATCH] :zap: Adjust invariant error tolerance. --- test/invariants/TargetFunction.sol | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test/invariants/TargetFunction.sol b/test/invariants/TargetFunction.sol index 7c4def9..ddea2c4 100644 --- a/test/invariants/TargetFunction.sol +++ b/test/invariants/TargetFunction.sol @@ -211,7 +211,7 @@ abstract contract TargetFunction is Properties { // Prank Owner vm.prank(lidoARM.owner()); - lidoARM.claimLidoWithdrawals(requestToClaim); + lidoARM.claimLidoWithdrawals(requestToClaim, new uint256[](0)); uint256 outstandingAfter = lidoARM.lidoWithdrawalQueueAmount(); uint256 diff = outstandingBefore - outstandingAfter; @@ -308,10 +308,11 @@ abstract contract TargetFunction is Properties { /// --- DONATION //////////////////////////////////////////////////// uint256 constant DONATION_PROBABILITY = 10; + uint256 constant DONATION_THRESHOLD = 1e20; function handler_donate(bool stETH, uint64 amount, uint256 probability) public { // Reduce probability to 10% - vm.assume(probability % DONATION_PROBABILITY == 0); + vm.assume(probability % DONATION_PROBABILITY == 0 && lidoARM.totalSupply() > DONATION_THRESHOLD); IERC20 token = stETH ? IERC20(address(steth)) : IERC20(address(weth)); @@ -326,12 +327,14 @@ abstract contract TargetFunction is Properties { //////////////////////////////////////////////////// /// --- HELPERS //////////////////////////////////////////////////// + uint256 constant SHARES_UP_ONLY__ERROR_TOLERANCE = 1e4; + function finalizeLidoClaims() public { if (lidoWithdrawRequests.length == 0) return; // Prank Owner vm.prank(lidoARM.owner()); - lidoARM.claimLidoWithdrawals(lidoWithdrawRequests); + lidoARM.claimLidoWithdrawals(lidoWithdrawRequests, new uint256[](0)); require(lidoARM.lidoWithdrawalQueueAmount() == 0, "FINALIZE_FAILED"); } @@ -373,7 +376,7 @@ abstract contract TargetFunction is Properties { address user = lps[i]; uint256 shares = lidoARM.balanceOf(user); uint256 sum = weth.balanceOf(user) + lidoARM.previewRedeem(shares); - if (!gte(sum * (1e18 + 1e6) / 1e18, initialBalance)) { + if (!gte(sum * (1e18 + SHARES_UP_ONLY__ERROR_TOLERANCE) / 1e18, initialBalance)) { return false; } }