All vaults

Spec mismatch

0xC6dd99dC547a1dA35Bd777eA5CEe5c080667db47

0xC6dd99dC547a1dA35Bd777eA5CEe5c080667db47Monad testnet

1 of 30 properties failed at block 69,207,426. The vault's behavior contradicts an EIP-4626 MUST sentence.

Created by Specfirst DemoVaultFactory in block 68,922,607; the watcher found it 2026-10-07 08:27 UTC. First deposit seen in block 68,922,734. It was not on the hand-made list the board started from.

What failed

  • previewDepositEIP-4626 MUST

    Forge found a counterexample: Error: a >=~ b not satisfied [uint]

    Counterexample: test_previewDeposit(([0xB816CD016734A139Eeed23597dAb8555e6989586, 0xD8078DAc792054a290b331bd0Cda1b15F6205C61, 0x5B8C1187e07C7E9AffEa888969fCF858d034eFd9, 0xB63EdfEd0BBAA8E8265e49b9ed94C98D175623df], [86037699282067532405206065311250058561965662252683, 12832996, 706313317268216969039886190178827, 24852726738788757585], [30542258758056153007, 2141, 4552210412625778, 115792089237316195423570985008687907853269984665640564039457584007913129639933], -3425687336439), 5462468400616)

A spec mismatch is a disagreement with an EIP-4626 MUST sentence, shown by a concrete call. It is not a claim that funds are at risk.

What the watcher saw

Every event the watcher recorded for this vault, newest first. Each check is a statement about one block; a re-check with the same outcome is recorded here without a new attestation.

  1. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,207,426, 9 s. Report

    Why: subscriber re-check.

  2. Queued

    Waiting for a check: subscriber re-check.

  3. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,207,211, 8 s. Report

    Why: subscriber re-check.

  4. Queued

    Waiting for a check: subscriber re-check.

  5. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,206,992, 8 s. Report

    Why: subscriber re-check.

  6. Queued

    Waiting for a check: subscriber re-check.

  7. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,206,793, 8 s. Report

    Why: subscriber re-check.

  8. Queued

    Waiting for a check: subscriber re-check.

  9. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,206,574, 8 s. Report

    Why: subscriber re-check.

  10. Queued

    Waiting for a check: subscriber re-check.

  11. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,206,358, 6 s. Report

    Why: subscriber re-check.

  12. Queued

    Waiting for a check: subscriber re-check.

  13. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,206,156, 9 s. Report

    Why: subscriber re-check.

  14. Queued

    Waiting for a check: subscriber re-check.

  15. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,205,941, 7 s. Report

    Why: subscriber re-check.

  16. Queued

    Waiting for a check: subscriber re-check.

  17. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,205,740, 9 s. Report

    Why: subscriber re-check.

  18. Queued

    Waiting for a check: subscriber re-check.

  19. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,205,538, 9 s. Report

    Why: subscriber re-check.

  20. Queued

    Waiting for a check: subscriber re-check.

  21. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,205,321, 9 s. Report

    Why: subscriber re-check.

  22. Queued

    Waiting for a check: subscriber re-check.

  23. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,205,114, 8 s. Report

    Why: subscriber re-check.

  24. Queued

    Waiting for a check: subscriber re-check.

  25. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,204,907, 11 s. Report

    Why: subscriber re-check.

  26. Queued

    Waiting for a check: subscriber re-check.

  27. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,204,687, 7 s. Report

    Why: subscriber re-check.

  28. Queued

    Waiting for a check: subscriber re-check.

  29. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,204,483, 8 s. Report

    Why: subscriber re-check.

  30. Queued

    Waiting for a check: subscriber re-check.

  31. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,204,288, 8 s. Report

    Why: subscriber re-check.

  32. Queued

    Waiting for a check: subscriber re-check.

  33. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,204,087, 9 s. Report

    Why: subscriber re-check.

  34. Queued

    Waiting for a check: subscriber re-check.

  35. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,203,878, 9 s. Report

    Why: subscriber re-check.

  36. Queued

    Waiting for a check: subscriber re-check.

  37. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,203,679, 8 s. Report

    Why: subscriber re-check.

  38. Queued

    Waiting for a check: subscriber re-check.

  39. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,203,472, 9 s. Report

    Why: subscriber re-check.

  40. Queued

    Waiting for a check: subscriber re-check.

  41. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,203,264, 11 s. Report

    Why: subscriber re-check.

  42. Queued

    Waiting for a check: subscriber re-check.

  43. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,203,057, 15 s. Report

    Why: subscriber re-check.

  44. Error

    check failed (attempt 1 of 3), retrying from 2026-10-08T08:04:54.409Z: ENOSPC: no space left on device, open '/Users/jaemin/Developer/Personal/specfirst-batch/.specfirst/checks/10143/0xc6dd99dc547a1da35bd777ea5cee5c080667db47/.69202025.forge.json.tmp-86636-e33008df'

  45. Queued

    Waiting for a check: subscriber re-check.

  46. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,201,814, 8 s. Report

    Why: subscriber re-check.

  47. Queued

    Waiting for a check: subscriber re-check.

  48. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,201,585, 10 s. Report

    Why: subscriber re-check.

  49. Queued

    Waiting for a check: subscriber re-check.

  50. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,201,366, 10 s. Report

    Why: subscriber re-check.

  51. Queued

    Waiting for a check: subscriber re-check.

  52. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,201,156, 9 s. Report

    Why: subscriber re-check.

  53. Queued

    Waiting for a check: subscriber re-check.

  54. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,200,941, 6 s. Report

    Why: subscriber re-check.

  55. Queued

    Waiting for a check: subscriber re-check.

  56. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,200,732, 10 s. Report

    Why: subscriber re-check.

  57. Queued

    Waiting for a check: subscriber re-check.

  58. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,200,511, 9 s. Report

    Why: subscriber re-check.

  59. Queued

    Waiting for a check: subscriber re-check.

  60. Checked
    Spec mismatch

    29 pass, 1 fail, 0 inconclusive, 0 not applicable at block 69,200,305, 9 s. Report

    Why: subscriber re-check.

JSON: this vault's history

All 30 properties

In report order. Bit i is the bit the registry's passedBitmap and failedBitmap use for that property.

BitPropertyResultWhat was found
a16z/erc4626-tests at ac48546, 26 properties: 16 on EIP-4626 MUST sentences, 10 on SHOULD guidance (the round trips and the allowance checks)
0assettest_assetEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: asset() does not revert

1totalAssetstest_totalAssetsEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: totalAssets() does not revert

2convertToSharestest_convertToSharesEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: convertToShares gives the same result for any caller

3convertToAssetstest_convertToAssetsEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: convertToAssets gives the same result for any caller

4maxDeposittest_maxDepositEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: maxDeposit does not revert

5previewDeposittest_previewDepositEIP-4626 MUSTFail

Forge found a counterexample: Error: a >=~ b not satisfied [uint]

Checks: deposit mints at least the shares previewDeposit quoted

Raw result
reason: Error: a >=~ b not satisfied [uint]
runs: 0
call: test_previewDeposit(([0xB816CD016734A139Eeed23597dAb8555e6989586, 0xD8078DAc792054a290b331bd0Cda1b15F6205C61, 0x5B8C1187e07C7E9AffEa888969fCF858d034eFd9, 0xB63EdfEd0BBAA8E8265e49b9ed94C98D175623df], [86037699282067532405206065311250058561965662252683, 12832996, 706313317268216969039886190178827, 24852726738788757585], [30542258758056153007, 2141, 4552210412625778, 115792089237316195423570985008687907853269984665640564039457584007913129639933], -3425687336439), 5462468400616)
calldata: 0x4c216f35000000000000000000000000b816cd016734a139eeed23597dab8555e6989586000000000000000000000000d8078dac792054a290b331bd0cda1b15f6205c610000000000000000000000005b8c1187e07c7e9affea888969fcf858d034efd9000000000000000000000000b63edfed0bbaa8e8265e49b9ed94c98d175623df00000000000000000000003ade8fde3b8afc7a016bc57284ba8ff886e5adae8b0000000000000000000000000000000000000000000000000000000000c3d0e400000000000000000000000000000000000022d2ed6a6eaa35a7781b3e6cf20b00000000000000000000000000000000000000000000000158e69f4b255b3051000000000000000000000000000000000000000000000001a7dbe68548000faf000000000000000000000000000000000000000000000000000000000000085d00000000000000000000000000000000000000000000000000102c3614965f72fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffce2651f8a09000000000000000000000000000000000000000000000000000004f7d47d15e8
log: Error: a >=~ b not satisfied [uint]
log:    Value a: 5462468400616
log:    Value b: 5517093084622
log:  Max Delta: 0
log:      Delta: 54624684006
6deposittest_depositEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: deposit moves assets from the caller, credits shares to the receiver and spends allowance

7maxMinttest_maxMintEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: maxMint does not revert

8previewMinttest_previewMintEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: mint pulls at most the assets previewMint quoted

9minttest_mintEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: mint moves assets from the caller, credits shares to the receiver and spends allowance

10maxWithdrawtest_maxWithdrawEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: maxWithdraw does not revert

11previewWithdrawtest_previewWithdrawEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: withdraw burns at most the shares previewWithdraw quoted

12withdrawtest_withdrawEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: withdraw burns owner shares, pays the receiver and spends share allowance

13withdraw-zero-allowancetest_withdraw_zero_allowanceEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: withdraw on behalf of an owner without allowance reverts

14maxRedeemtest_maxRedeemEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: maxRedeem does not revert

15previewRedeemtest_previewRedeemEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: redeem pays at least the assets previewRedeem quoted

16redeemtest_redeemEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: redeem burns owner shares, pays the receiver and spends share allowance

17redeem-zero-allowancetest_redeem_zero_allowanceEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: redeem on behalf of an owner without allowance reverts

18RT-deposit-redeemtest_RT_deposit_redeemEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: redeem(deposit(a)) returns no more than a

19RT-deposit-withdrawtest_RT_deposit_withdrawEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: withdraw(a) burns at least the shares deposit(a) minted

20RT-redeem-deposittest_RT_redeem_depositEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: deposit(redeem(s)) mints no more than s

21RT-redeem-minttest_RT_redeem_mintEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: mint(s) costs at least the assets redeem(s) paid

22RT-mint-withdrawtest_RT_mint_withdrawEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: withdraw(mint(s)) burns at least s shares

23RT-mint-redeemtest_RT_mint_redeemEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: redeem(s) pays no more than mint(s) cost

24RT-withdraw-minttest_RT_withdraw_mintEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: mint(withdraw(a)) costs at least a

25RT-withdraw-deposittest_RT_withdraw_depositEIP-4626 SHOULDPass

No counterexample in 16 fuzz runs at this block.

Checks: deposit(a) mints no more than the shares withdraw(a) burned

Specfirst max-honored properties, MIT, each on one EIP-4626 MUST sentence about a max function
26sf-maxDeposit-honoredtest_sf_maxDeposit_honoredEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: deposit goes through up to min(maxDeposit, 1e6 tokens); when a smaller amount is refused the bound must go through, and refusals are counted (EIP-4626: maxDeposit MUST NOT be higher than what deposit accepts)

27sf-maxMint-honoredtest_sf_maxMint_honoredEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: mint goes through up to min(maxMint, shares of 1e6 tokens); when a smaller amount is refused the bound must go through, and refusals are counted (EIP-4626: maxMint MUST NOT be higher than what mint accepts)

28sf-maxWithdraw-honoredtest_sf_maxWithdraw_honoredEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: withdraw goes through up to maxWithdraw; when a smaller amount is refused maxWithdraw must go through, and refusals are counted (EIP-4626: maxWithdraw MUST NOT be higher than what withdraw accepts, and MUST be 0 when withdrawals are disabled)

29sf-maxRedeem-honoredtest_sf_maxRedeem_honoredEIP-4626 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: redeem goes through up to maxRedeem; when a smaller amount is refused maxRedeem must go through, and refusals are counted (EIP-4626: maxRedeem MUST NOT be higher than what redeem accepts, and MUST be 0 when redemptions are disabled)