All vaults

Partly checked

0xa38FBEEf8252cB75948055edE34C718698d51E89

0xa38FBEEf8252cB75948055edE34C718698d51E89Monad mainnet

16 of 30 properties passed and none failed at block 111,350,953. 14 could not be exercised.

Found by the watcher at its first Deposit event in block 111,350,892, 2026-10-07 14:44 UTC. No factory the watcher follows announced it. It was not on the hand-made list the board started from.

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. First result
    Partly checked

    16 pass, 0 fail, 12 inconclusive, 2 not applicable.

  2. Checked
    Partly checked

    16 pass, 0 fail, 12 inconclusive, 2 not applicable at block 111,350,953, 2 min. Report

    Why: first Deposit event from an unknown address.

  3. Queued

    Waiting for a check: first Deposit event from an unknown address.

  4. Found

    First Deposit event from an unknown address in block 111,350,892 tx 0x5a8555...6102ae

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 MUSTPass

No counterexample in 16 fuzz runs at this block.

Checks: deposit mints at least the shares previewDeposit quoted

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 MUSTInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

Checks: withdraw burns at most the shares previewWithdraw quoted

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
12withdrawtest_withdrawEIP-4626 MUSTInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
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 MUSTInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

Checks: redeem pays at least the assets previewRedeem quoted

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
16redeemtest_redeemEIP-4626 MUSTInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
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 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
19RT-deposit-withdrawtest_RT_deposit_withdrawEIP-4626 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
20RT-redeem-deposittest_RT_redeem_depositEIP-4626 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
21RT-redeem-minttest_RT_redeem_mintEIP-4626 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
22RT-mint-withdrawtest_RT_mint_withdrawEIP-4626 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
23RT-mint-redeemtest_RT_mint_redeemEIP-4626 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
24RT-withdraw-minttest_RT_withdraw_mintEIP-4626 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
25RT-withdraw-deposittest_RT_withdraw_depositEIP-4626 SHOULDInconclusive

Never exercised: the vault rejected nearly every amount the fuzzer tried, and forge gave up after 4096 discarded inputs.

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

Raw result
reason: `vm.assume` rejected too many inputs (4096 allowed)
runs: 0
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 MUSTNot applicable

Nothing to honor: maxWithdraw returned 0 for every test user. EIP-4626 allows a max to underestimate, so there was no advertised amount to hold the vault to.

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)

Raw result
reason: maxWithdraw returned 0 for every test user; there is no max value to honor (EIP-4626 allows underestimating)
runs: 0
29sf-maxRedeem-honoredtest_sf_maxRedeem_honoredEIP-4626 MUSTNot applicable

Nothing to honor: maxRedeem returned 0 for every test user. EIP-4626 allows a max to underestimate, so there was no advertised amount to hold the vault to.

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)

Raw result
reason: maxRedeem returned 0 for every test user; there is no max value to honor (EIP-4626 allows underestimating)
runs: 0