Skip to content

Conversation

@wischli
Copy link
Contributor

@wischli wischli commented Jun 24, 2025

Mega PR which brings invariant tests to our v3 protocol.

TODO before merging PR

Descending priority

Invariant Tests

  • Further investigate Rounding in maxDeposit #422. Apparently, the diff is not limited to 1 wei but can become large shown by a more recent optimizer test (ref)
  • Finish investigation of remaining broken categorized issues
  • Do another Recon run to ensure no broken properties

Other

  • Remove almost anything from fuzzing directory (ref)
  • Apply import formatter
  • Final step: Do another Recon run to ensure no broken properties

nican0r added 30 commits April 17, 2025 10:14
* feat: inheritance structure for reusable properties

* Revert "feat: inheritance structure for reusable properties"

This reverts commit 3c2d2d9.

* feat: initial setup for end-to-end tester

* fix: coverage on shortcut_deployNewTokenPoolAndShare

* fix: missing coverage

* fix: MockMessageDispatcher to correctly handle message sending

* fix: vaultcallbacks to be made through appropriate channels

* chore: add readme

* feat: SCM properties

* fix: create accounts and holding in deployment shortcut

* feat: increasing coverage on e2e tester

* fix: additional missing coverage

* fix: remaining coverage

* fix: stateless tests

* fix: property_totalAssets_solvency

* fix: property_E_1

* fix: build error

* fix: adding shortcuts and approvals for coverage on claimRedeem

* feat: maxDeposit/Redeem properties

* refactor: previous max properties for checking amounts up to max

* feat: difference properties

* feat: maxDeposit clears all orders

* feat: more vault properties

* feat: more shortcuts for better coverage

* chore: cleaning up shortcuts

* feat: escrow solvency property

* fix: price setting handlers

* feat: property_price_per_share_overall
* fix: split property_authorizationBoundaryEnforcement into smaller properties

* fix: tracking share balance of escrow in property_shareTokenSupplyConsistency

* fix: property_last_update_on_request_redeem nowRedeemEpoch

* fix: additional operation type precondition in doomsday_pricePerShare_never_changes_after_user_operation

* fix: doomsday_pricePerShare_never_changes_after_user_operation precondition

* chore: remove redundant property

* chore: removed handler causing false positives

* fix: check in balanceSheet_withdraw property

* fix: remove doomsday_deposit property that was poorly specd

* chore: remove redundant property_shareQueueFlagConsistency property

* fix: build error

* chore: remove incorrect spec property

* fix: nowDepositEpoch and nowRedeemEpoch checks

* fix: remove handler that introduced false positives related to authorization

* chore: remove untestable property

* fix: ghost tracking

* fix: remove balanceSheet_transferSharesFrom handler because of false positives

* fix: passing in fullRestrictions address to spoke_addShareClass

* fix: incorrect redeemEpochId in vault_cancelRedeemRequest

* chore: reproducers

* fix: ghost tracking for property_escrow_share_balance

* Invariants: Fix async vault `maxDeposit` & `maxRedeem` property (#743)

* fix: rm property_shareQueueFlagConsistency

* fix: asyncVault_maxMint/Deposit property for async vaults

* fix: property_accounting_and_holdings_soundness

* fix: property_accounting_and_holdings_soundness

* fix: sumOfFulfilledDeposits ghost update

* fix: remove poorly specd property

* chore: remove infeasible properties for testing

---------

Co-authored-by: William Freudenberger <w.freude@icloud.com>
@hieronx hieronx removed the ✋ on hold Issue/PR currently on hold label Oct 16, 2025
nican0r and others added 27 commits October 17, 2025 01:21
* chore: removed property with incorrect ghost tracking

* chore: add reproducers

* fix: precondition in property_decrease_valuation_no_increase_in_accountValue

* chore: remove handler that caused false positives

* fix: property_accounting_and_holdings_soundness to account for liability holdings

* fix: precondition in property_price_on_redeem

* fix: check in property_shareTokenSupplyConsistency

* fix: ghost tracking for property_shareQueueFlipLogic

* fix: poolId, scId and assetId being used in max properties

* fix: ghost tracking in balanceSheet_submitQueuedShares

* fix: unit of comparison in _validateSyncMaxValueChange

* fix: check in asyncVault_maxRedeem to use redeemAmount instead of converting to shares

* chore: reproducers
@sherlock-ai-beta
Copy link

Sherlock AI Findings

The automated tool completed its analysis of the codebase and found no potential security issues.

Next Steps: No immediate actions are required. Continue monitoring the codebase with future scans.

Full report available at: https://ai.sherlock.xyz/runs/b4d898ed-a10f-4486-b565-3751b06dd683

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants