vusd-stablecoin

QuantstampRepository at commit 7b66754

Quantstamp reviewed vusd (vusd-stablecoin) on 6 May 2025: 10 findings, 0 critical; 3 marked fixed, 7 open.

No open critical findings
Open the reportOpen vusd’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings10

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

SeverityOpenAcknowledgedFixed
Critical000
High001
Medium001
Low701
Low`oracles` Mapping Not Cleared in `Removewhitelistedtoken()` FunctionOpen

In the Treasury contract, when a token is removed from the whitelist via the `removeWhitelistedToken()` function a number of key state changes are made to clear any state related to the token to be removed. However, in the current implementation of the function, the `cTokens[_token]` mapping is mistakenly deleted twice, while the `oracles[_token]` mapping is not cleared. This means some stale state is left behind that refers to the now removed token.

LowHardcoded Decimal Conversion May Not Support All Erc-20 TokensOpen

In the Redeemer contract's `_calculateRedeemable()` function, the code converts the redeemable amount from 18 decimals (VUSD's precision) to the destination token's decimal precision. This conversion uses a hardcoded formula that assumes tokens will have at most 18 decimals: ```solidity return _redeemable / 10**(18 - IERC20Metadata(_token).decimals()); ``` While this approach works for tokens with 18 or fewer decimals, it would fail if a token with more than 18 decimals were added to the protocol in the future.

LowInfinite Token Approvals Create Additional Security RiskOpen

The Minter contract uses infinite token approvals (`type(uint256).max`) when adding a new token to the whitelist. This occurs in the `_addToken() `function with the line `IERC20(_token).safeApprove(_cToken, type(uint256).max)`. Similarly, in the Treasury contract, infinite approvals are granted in multiple places: when adding tokens via `_addToken()` and when updating the swap manager via `_approveRouters()`. While this approach eliminates the need for subsequent approval transactions, it exposes the protocol to greater risk if any of the approved contracts (cToken contracts or routers) were to be compromised.

LowLack of Error Handling for Oracle Calls May Cause Temporary Service DisruptionOpen

The Redeemer and Minter contracts interact with Chainlink oracles to fetch price data for stablecoins, but they do not implement proper error handling mechanisms for these external calls. In the `_calculateRedeemable() `function of the Redeemer contract and the `_calculateMintage()` function of the Minter contract, the code directly calls `latestRoundData()` without any try-catch block or fallback mechanism. If Chainlink bans the contract address from accessing price feeds or if the oracle service experiences downtime, these functions will fail, leading to a temporary disruption of minting and redemption services.

LowNo Validation that `_newMintLimit` Is at Least Total SupplyOpen

The `updateMaxMintAmount()` function allows the governor to set a new maximum amount of VUSD tokens that can be minted. However there is no validation that the new mint limit is not less than the amount of VUSD already in circulation. If this were to happen it would immediately block the ability to mint tokens in the protocol and leave a potentially confusing mismatch between the mint limit and the currently circulating total supply of VUSD.

LowProof of Reserves Invariant Can Be Broken by Treausry UpdatesOpen

Description: From the VUSD documentation, it says: > VUSD is open source, designed for simplicity and security, peg stability, self-sustaining, backed by over-collateralized, yield-generating cryptocurrencies. VUSD is fully auditable on-chain, with real-time proof of reserves available at all times. Having a proof of reserve means that all VUSD should be backed by at least the corresponding amount in USD, as given the collateral assets in the treasury. This invariant, however, is not enforced in `VUSD.updateTreasury()`. Hence, a malicious governor may set a new treasury with no matching reserve to back the value of all the VUSD in circulation.

LowUnfair Token Redemptions when an Underlying Stablecoin DepegsOpen

The protocol currently has no clear contingency plan on how it would handle the event where one of the stablecoins backing VUSD depegs. Currently, `redeem()` function allows the user to specify which token they wish to withdraw for their USDC, therefore in a depeg scenario holders of VUSD would race to withdraw their tokens for one of the whitelisted stablecoins that has not depegged, leaving the last users holding a token that is now only backed by the depegged stablecoin.

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 (127)

  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/interfaces/IERC20.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.husky/.gitignore at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/IVUSD.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/remappings.txt at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/releases/1.0.0/contracts.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/interfaces/IERC1155.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdStyle.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.gitattributes at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/LICENSE at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/mocks/MockERC721.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/test/vusd.spec.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/fixtures/test.toml at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/test/utils/address.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdStorage.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/Test.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdJson.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/src/test.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdError.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/VUSD.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdMath.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/Vm.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/interfaces/IERC165.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.solcover.js at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deploy/01-Minter.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/.gitignore at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.editorconfig at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdStyle.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.gitignore at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/releases/1.2.1/contracts.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/mocks/MockERC20.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdCheats.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/curve/ICurveFactory.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdChains.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/test/IUniswapRouterTest.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/fixtures/broadcast.log.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/default.nix at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/.gitattributes at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.husky/pre-commit at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/fixtures/test.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/package.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.lintstagedrc.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/solcInputs/2ca97e329a6a43c8b41836cde7a46ae4.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdToml.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/mocks/MockERC721.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdError.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdStorage.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdUtils.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/releases/1.1.0/contracts.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/Makefile at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/Redeemer.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdAssertions.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdJson.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.solhint.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/LICENSE-MIT at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/CurveMetapool.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/test/foundry/Minter.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/Minter.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/solcInputs/39c191a09ff8c148e0d92695bc150374.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/mocks/MockERC20.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/Treasury.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdAssertions.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/package.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deploy/02-Redeemer.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/.gitignore at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/solcInputs/2421f05dab484b75fab1e136c8789882.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/chainlink/IAggregatorV3.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/README.md at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/solcInputs/40a5527d248d03a112545ff125be1878.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/releases/1.2.0/contracts.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/StdMath.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdUtils.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/package.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/Minter.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/package-lock.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/solcInputs/4250b1a14ac61511ae93302864f24eda.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/Governed.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/foundry.toml at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/README.md at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/patches/hardhat-deploy+0.7.9.patch at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/VUSD.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deploy/00-VUSD.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdInvariant.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/compound/ICompound.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/interfaces/IERC4626.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/.chainId at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/Vm.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/compilation/CompilationTestBase.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/interfaces/IMulticall3.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/test/foundry/Redeemer.t.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/console.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/compilation/CompilationScriptBase.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/src/test.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/test/treasury.spec.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/curve/ICurveMetapool.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/compilation/CompilationTest.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/console2.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.prettierrc at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/tsconfig.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/hardhat.config.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deploy/03-Treasury.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/LICENSE-APACHE at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/Script.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/test/compilation/CompilationScript.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/test/live-mint-redeem.spec.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdToml.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/scripts/vm.py at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/Redeemer.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/ITreasury.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/interfaces/IERC721.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/uniswap/IUniswap.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/Treasury.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/contracts/interfaces/bloq/ISwapManager.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/releases/1.4.0/contracts.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/foundry.toml at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdChains.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/Base.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/test/utils/tokenSwapper.ts at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/.github/workflows/ci.yml at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.eslintrc.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/deployments/mainnet/solcInputs/67e43f5c13609e7c93c7e3c2c1c52dc8.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/.github/workflows/sync.yml at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/releases/1.3.0/contracts.json at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/safeconsole.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/src/StdCheats.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/demo/demo.sol at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/.nvmrc at commit 7b66754aa4e7e79aefd47361902759464bf1da54
  • https://github.com/hemilabs/vusd-stablecoin/lib/forge-std/lib/ds-test/.github/workflows/build.yml at commit 7b66754aa4e7e79aefd47361902759464bf1da54

Part of vusd’s security record

vusd
Audits1 audit by 1 firmLast audit May 2025, by Quantstamp.
Critical findingsNo open critical findingsIn 1 report.
Open vusd’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