JTRSY USDC Vault (Janus Henderson Treasury Fund)
None of the 30 properties apply to this vault at block 109,195,820.
No property applies. This is an ERC-7575 vault whose shares live in a separate token, while both suites assume the vault is its own share token. Nothing here says the vault is wrong or right.
Known to the watcher from a backfill scan in block 109,195,820, 2026-09-30 08:33 UTC.
Request a re-checkRuns the same 30 properties at the latest block and attests the new report.
All 30 properties
In report order. Bit i is the bit the registry's passedBitmap and failedBitmap use for that property.
| Bit | Property | Result | What 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) | |||
| 0 | assettest_assetEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: asset() does not revert Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 1 | totalAssetstest_totalAssetsEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: totalAssets() does not revert Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 2 | convertToSharestest_convertToSharesEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: convertToShares gives the same result for any caller Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 3 | convertToAssetstest_convertToAssetsEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: convertToAssets gives the same result for any caller Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 4 | maxDeposittest_maxDepositEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: maxDeposit does not revert Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 5 | previewDeposittest_previewDepositEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: deposit mints at least the shares previewDeposit quoted Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 6 | deposittest_depositEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: deposit moves assets from the caller, credits shares to the receiver and spends allowance Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 7 | maxMinttest_maxMintEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: maxMint does not revert Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 8 | previewMinttest_previewMintEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: mint pulls at most the assets previewMint quoted Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 9 | minttest_mintEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: mint moves assets from the caller, credits shares to the receiver and spends allowance Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 10 | maxWithdrawtest_maxWithdrawEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: maxWithdraw does not revert Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 11 | previewWithdrawtest_previewWithdrawEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: withdraw burns at most the shares previewWithdraw quoted Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 12 | withdrawtest_withdrawEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: withdraw burns owner shares, pays the receiver and spends share allowance Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 13 | withdraw-zero-allowancetest_withdraw_zero_allowanceEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: withdraw on behalf of an owner without allowance reverts Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 14 | maxRedeemtest_maxRedeemEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: maxRedeem does not revert Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 15 | previewRedeemtest_previewRedeemEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: redeem pays at least the assets previewRedeem quoted Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 16 | redeemtest_redeemEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: redeem burns owner shares, pays the receiver and spends share allowance Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 17 | redeem-zero-allowancetest_redeem_zero_allowanceEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: redeem on behalf of an owner without allowance reverts Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 18 | RT-deposit-redeemtest_RT_deposit_redeemEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: redeem(deposit(a)) returns no more than a Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 19 | RT-deposit-withdrawtest_RT_deposit_withdrawEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: withdraw(a) burns at least the shares deposit(a) minted Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 20 | RT-redeem-deposittest_RT_redeem_depositEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: deposit(redeem(s)) mints no more than s Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 21 | RT-redeem-minttest_RT_redeem_mintEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: mint(s) costs at least the assets redeem(s) paid Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 22 | RT-mint-withdrawtest_RT_mint_withdrawEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: withdraw(mint(s)) burns at least s shares Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 23 | RT-mint-redeemtest_RT_mint_redeemEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: redeem(s) pays no more than mint(s) cost Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 24 | RT-withdraw-minttest_RT_withdraw_mintEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: mint(withdraw(a)) costs at least a Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 25 | RT-withdraw-deposittest_RT_withdraw_depositEIP-4626 SHOULD | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: deposit(a) mints no more than the shares withdraw(a) burned Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| Specfirst max-honored properties, MIT, each on one EIP-4626 MUST sentence about a max function | |||
| 26 | sf-maxDeposit-honoredtest_sf_maxDeposit_honoredEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: deposit does not revert for amounts up to maxDeposit (EIP-4626: maxDeposit is the most deposit accepts without reverting) Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 27 | sf-maxMint-honoredtest_sf_maxMint_honoredEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: mint does not revert for shares up to maxMint (EIP-4626: maxMint is the most mint accepts without reverting) Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 28 | sf-maxWithdraw-honoredtest_sf_maxWithdraw_honoredEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: withdraw does not revert for assets up to maxWithdraw (EIP-4626: maxWithdraw MUST return 0 when withdrawals are disabled) Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |
| 29 | sf-maxRedeem-honoredtest_sf_maxRedeem_honoredEIP-4626 MUST | Not applicable | Not applicable: this is an ERC-7575 vault whose shares are a separate token at 0xC18e6f730896971a79D748E8deA61067A9Bc6040. Both suites treat the vault as its own share token, so their results would say nothing about it. Checks: redeem does not revert for shares up to maxRedeem (EIP-4626: maxRedeem MUST return 0 when redemptions are disabled) Raw resultreason: ERC-7575 vault: shares are a separate token (share() = 0xC18e6f730896971a79D748E8deA61067A9Bc6040); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it |