Nayms 2024 (Retainer)

QuantstampRepository at commit 2f08d24

Audit

Part of Quantstamp’s retainer series

Quantstamp reviewed Nayms 2024 (Retainer) on 3 May 2024: 33 findings, 0 critical; 18 marked fixed, 11 acknowledged, 4 open.

No open critical findings
Open the reportOpen Nayms 2024 (Retainer)’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings33

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High004
Medium202
Low21112
Medium[PR-100] Assumption that the total supply of supported rebase tokens will not decrease is not guaranteedOpen

The system assumes that the total supply of supported rebase tokens will not decrease. This can have two main consequences: 1. Since the internal accounting is expected to mimic the external price, we can have at a particular moment some price gaps between the external market price of a token and its internal representation, in both directions (over priced, or under priced). Since price alignment can only happen once a user calls one of the two update functions (`distributeAccruedInterest()` or `rebaseERC20()`), we may have situations when there is a delay in triggering a price update function. This could leave the system exposed to arbitrage or incorrect internal prices. Also, some rebasing tokens can be upgraded or hacked, so it cannot be 100% sure that the supply of a given rebasing token cannot decrease with time. 2. In `LibTokenizedVault`, an underflow is possible in the function `_accruedInterest()`, if `total < depositTotal`. In this case, reflecting the rebasing of the supported token will not be possible until the condition returns `true` again.

MediumCurrent Accounting Rules Can Lead to Losing the `SysAdmin` Privilege of the Naym DiamondOpen

In `LibACL`, a counter variable `sysAdminCount` makes sure that we cannot have less than one address with the role `sysAdmin`. However, this can happen in two situations: * if Bob is the only `sysAdmin` (`sysAdminCount = 1`), he grants the role to himself (`sysAdminCount = 2`), he revokes himself (`sysAdminCount = 1`) => no more valid address with the role `sysAdmin`; * if Bob is the only `sysAdmin` (`sysAdminCount = 1`), he grants to a random address owned by no one (`sysAdminCount = 2`), he revokes himself (`sysAdminCount = 1`) => no more valid address with the role `sysAdmin`; Even if the event is unlikely since only an address with the role `sysAdmin` can perform these operations, the impact would be high. **Note:** this issue is close to the issue #6 of the previous audit (link [here](https://certificate.quantstamp.com/full/nayms-2/79da5daf-4326-4f12-a71c-828b72fbea09/index.html)).

LowAutomatically fulfilled token sales can be created due to missing `objectMinimumSell` checksOpen

When starting a token sale, the sold token amount may be less than the corresponding entities token `objectMinimumSell` amount, which was set during `EntityFacet.enableEntityTokenization()`, resulting in the created offer to be automatically in the `LibConstants.OFFER_STATE_FULFILLED` state. Similarly, the `buyAmount` is not verified to be greater than `objectMinimumSell` of the corresponding `entity.assetId`. Also, offers can be created for not-yet-tokenized entity p-tokens. Leading to their automatic fulfillment on creation.

LowMissing Input ValidationsOpen

It is important to validate inputs, even if they only come from trusted addresses, to avoid human error: 1. In the function `LibFeeRouter._addFeeSchedule()`: </br>a. qs-badge-fixed the fact that `_entityId` matches an existing entity is not checked; </br>b. qs-badge-fixed there is no min and max check for the length of the `_receivers`, which could lead to a denial of service; 2. `LibAdmin._approveSelfOnboarding()`: </br>a. qs-badge-fixed `_entityId` can be `address(0)`, the approval will be recorded, but the user will not be able to `onboard()`; </br>b. qs-badge-fixed it is possible to repeat the steps 1) `approveSelfOnboarding()` and 2) `onboard()` for the same user but multiple entities; 3. In `LibMarket._setMinimumSell()`, no check makes sure that `_objectId` represents an existing object. 4. In `LibEntity._validateSimplePolicyCreation()`, no check makes sure that: </br>a. qs-badge-fixed the maturation date is too far in the future; </br>b. qs-badge-fixed the number of policy-level commission receivers is not too high, which could lead to out-of-gas errors when trying to pay the commissions; 5. qs-badge-fixed In the function `LibTokenizedVaultStaking._initStaking()`, no check makes sure that `_entityId` represents an existing entity; 6. In the function `LibTokenizedVaultStaking._payReward()`, p-tokens can be transferred as rewards, instead of only limiting to supported external tokens. 7. qs-badge-fixed In the function `LibTokenizedVaultStaking._validateStakingParams()`, the value of `initDate` can be in a very long time from the current time. 8. qs-badge-fixed In the function `LibTokenizedVaultStaking._validateStakingParams()`, there is no min or max check for the value of `interval`. 9. qs-badge-fixed In the function `LibTokenizedVaultStaking._stake()`, the `_amount` can be `0`, `_stakerId` can be `0` if `msg.sender` has no parent, and `_entityId` can be a non-existent entity. 10. qs-badge-fixed In the function `LibTokenizedVaultStaking._validateStakingParams()`, the following check is insufficient to ensure that the boost multiplier asymptotically converges to 2, which is only true when `_config.a + _config.r == _config.divider`: ``` if (_config.a + _config.r > _config.divider) revert APlusRCannotBeGreaterThanDivider(); ``` 11. In the function `LibTokenizedVaultStaking._validateStakingParams()`, the value of `tokenId` is not checked. In particular, the staking token ID may be: * qs-badge-fixed the zero/empty object ID; * the p-token of another entity; * an external token ID; * the ID of a wrapped internal token; * any other arbitrary non-object ID;

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (245)

  • https://github.com/nayms/contracts-v3/docs/src/src/shared/AppStorage.sol/struct.AppStorage.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.ExternalWithdrawAmountCannotBeZero.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibObject.sol/library.LibObject.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/UpdateFees.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.StakingAlreadyStarted.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/solidity.min.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/fixtures/SimplePolicyFixture.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/TokenizedVaultFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/cli-tools/postproc-broadcasts.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/shared/AppStorage.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/Makefile at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/SimplePolicyFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/utils/DummyToken.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.github/workflows/lint.yml at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.UpdateEntityTypeCell.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.OwnerCannotBeSystemAdmin.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/remappings.txt at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T02Access.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.SimplePolicyInfo.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.EntityOnboardingNotApproved.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.SimplePolicy.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.IntervalRewardPayedOutAlready.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.CalculatedFees.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/UserFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/book.toml at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.solhint.json at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InvalidRValue.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/defaults/D02TestSetup.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/TokenizedVaultIOFacet.sol/contract.TokenizedVaultIOFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/utils/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/SUMMARY.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.FeeBasisPointsExceedHalfMax.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibMarket.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/LICENSE at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T06Staking.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.SimplePolicyPremiumsPaidShouldStartAtZero.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InvalidGroupPrivilege.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/PhasedDiamondCutFacet.sol/error.PhasedDiamondCutUpgradeFailed.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.github/workflows/solstat.yml at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.FeeSchedule.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/book.css at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibHelpers.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/interfaces/IERC165.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibEntity.sol/library.LibEntity.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.CancelCannotBeTrueWhenCreatingSimplePolicy.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.FeeAllocation.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibConstants.sol/library.LibConstants.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/fixtures/TokenizedVaultFixture.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/utils/DSILib.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/cli-tools/filter-lcov.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/AdminFacet.sol/contract.AdminFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/GovernanceFacet.sol/contract.GovernanceFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibACL.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/cli-tools/get-filenames.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibGovernance.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T02Admin.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/UserFacet.sol/contract.UserFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/generated/LibDiamondHelper.sol/library.LibDiamondHelper.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T03SystemFacet.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/ReplaceDiamondCut.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.github/workflows/test.yml at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.PolicyDoesNotExist.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.AssignerCannotUnassignRole.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/mythril.config.json at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.EntityApproval.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/interfaces/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.gas-snapshot at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T04Market.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/interfaces/IERC165.sol/interface.IERC165.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.github/workflows/npm.yml at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibEIP712.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.EntityDoesNotExist.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/SystemFacet.sol/contract.SystemFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/GovernanceFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T01LibERC20.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/EntityFacet.sol/contract.EntityFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.prettierrc at commit 2f08d24
  • https://github.com/nayms/contracts-v3/gemforge.config.cjs at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/utils/ReentrancyGuard.sol/abstract.ReentrancyGuard.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/script/gemforge/utils/index.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibInitDiamond.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/AdminFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/shared/CustomErrors.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/PhasedDiamondCutFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibConstants.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/init/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/mocks/data/facet-cut-struct-1.json at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/init/InitDiamond.sol/contract.InitDiamond.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/defaults/D00GlobalDefaults.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.MinimumSellCannotBeZero.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/init/InitDiamond.sol/error.DiamondAlreadyInitialized.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.ObjectTokenNameInvalid.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/.gitignore at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.prettierignore at commit 2f08d24
  • https://github.com/nayms/contracts-v3/index.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/StakingFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibTokenizedVaultStaking.sol/library.LibTokenizedVaultStaking.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.RewardsBalances.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibEIP712.sol/library.LibEIP712.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/shared/Modifiers.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.gitmodules at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibTokenizedVaultIO.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.vscode/extensions.json at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InvalidIntervalSecondsValue.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.RoleIsMissing.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibSimplePolicy.sol/library.LibSimplePolicy.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.StakingCheckpoint.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/interfaces/IERC173.sol/interface.IERC173.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibTokenizedVault.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibAdmin.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibEntity.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.ObjectTokenSymbolAlreadyInUse.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.MarketInfo.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.Stakeholders.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InvalidObjectType.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.PolicyCannotCancelAfterMaturation.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibACL.sol/library.LibACL.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/NewFees.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/NaymsOwnershipFacet.sol/contract.NaymsOwnershipFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.eslintrc.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.vscode/settings.json at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/generated/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibSimplePolicy.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/script/deployment/DeployERC20.s.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibTokenizedVaultIO.sol/library.LibTokenizedVaultIO.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InsufficientBalance.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InvalidDividerValue.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs-static/test_plan.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/TokenizedVaultFacet.sol/contract.TokenizedVaultFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/foundry.toml at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/SystemFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/script/gemforge/verify.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.DuplicateSignerCreatingSimplePolicy.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/shared/FreeStructs.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/ACLFacet.sol/contract.ACLFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.gitignore at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T01LibHelpers.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/generated/IDiamondProxy.sol/interface.IDiamondProxy.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/README.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.gemforge/.gitignore at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/generated/.gitignore at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.TokenAmount.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/cli-tools/docgen.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InvalidStakingInitDate.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/NaymsOwnershipFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/MarketFacet.sol/contract.MarketFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/defaults/D03ProtocolDefaults.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.InvalidObjectIdForAddress.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.SimplePolicyClaimsPaidShouldStartAtZero.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.UtilizedCapacityGreaterThanMaxCapacity.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.ExternalWithdrawInvalidReceiver.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T03TokenizedVault.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/init/InitDiamond.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/cli-tools/code-recon.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibAdmin.sol/library.LibAdmin.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/MarketFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.npmignore at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T01Deployment.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/script/.solhint.json at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibTokenizedVaultStaking.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/facets/TokenizedVaultIOFacet.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T02ACL.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibHelpers.sol/library.LibHelpers.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/cli-tools/contract.hbs at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.FeeBasisPointsExceedMax.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.StakingConfig.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/cli-tools/anvil_bootstrap.sh at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T04Entity.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibInitDiamond.sol/library.LibInitDiamond.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/libs/LibGovernance.sol/library.LibGovernance.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/utils/ReentrancyGuard.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/utils/ERC20Wrapper.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.APlusRCannotBeGreaterThanDivider.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs-static/code_standards.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/AppStorage.sol/struct.FunctionLockedStorage.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.CannotAddNullDiscountToken.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/fixtures/InitDiamondFixture.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/interfaces/IERC20.sol/interface.IERC20.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/mocks/data/facet-cut-struct-3.json at commit 2f08d24
  • https://github.com/nayms/contracts-v3/src/libs/LibFeeRouter.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/FreeStructs.sol/struct.Entity.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/utils/Create3Deployer.sol/contract.Create3Deployer.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T02User.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/script/gemforge/deploy.js at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.EntityExistsAlready.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/script/AddSupportedExternalToken.s.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.ObjectTokenSymbolInvalid.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.env.example at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/Modifiers.sol/contract.Modifiers.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/.solhintignore at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/facets/SimplePolicyFacet.sol/contract.SimplePolicyFacet.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.EntityOnboardingAlreadyApproved.md at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/utils/users/MockAccounts.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/utils/BadToken.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/test/T03NaymsOwnership.t.sol at commit 2f08d24
  • https://github.com/nayms/contracts-v3/docs/src/src/shared/CustomErrors.sol/error.CannotAddNullSupportedExternalToken.md at commit 2f08d24

Part of Nayms 2024 (Retainer)’s security record

Nayms 2024 (Retainer)
Audits3 audits by 1 firmLast audit May 2024, by Quantstamp.
Critical findingsNo open critical findingsAcross 3 reports.
Open Nayms 2024 (Retainer)’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us