Camp

QuantstampFiles named in the report

Quantstamp reviewed Camp on 7 Aug 2025: 13 findings, 0 critical; 8 marked fixed, 5 open.

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

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings13

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

SeverityOpenAcknowledgedFixed
Critical000
High004
Medium001
Low503
Low`WrappedCAMP` Accounting for `totalSupply` Is Impacted by `selfdestruct` OpcodeOpen

This contract mints wrapped tokens in a 1:1 ratio for native token deposits. The `totalSupply()` of this token contract is determined by querying `address(this).balance`. However, the balance of the contract can differ from the total sum of deposits if another contract forces a native token transfer using `selfdestruct`, which circumvents the otherwise correctly implemented `receive()` function. This opcode is deprecated, but currently still supported and can be used in this manner.

LowInteger Division in Reward Rate Calculation Locks Dust TokensOpen

In the `notifyRewardAmount()` function, the reward rate calculation uses integer division (`rewardRate = reward / rewardsDuration`). When the reward amount is not evenly divisible by the rewards duration, the remainder is truncated and becomes permanently locked in the contract. This dust accumulates over time with each `notifyRewardAmount` call, permanently reducing the effective reward distribution.

LowLayerZero Gas Refunds Are Not HandledOpen

This contract exposes an empty `receive()` function. This is necessary to allow for refunds from the LayerZero system. The refund address is set for each `send()` operation, but is currently always set to this contract. However, the contract does not offer any option to rescue these unaccounted tokens, causing them to be trapped in the contract.

LowOwner Can Cause Denial of Service by Setting Rewardsduration to ZeroOpen

The owner-only function `setRewardsDuration()` allows setting a new duration for reward periods. However, it lacks a check to prevent `_rewardsDuration` from being set to zero. If the owner calls this function with `_rewardsDuration = 0`, the rewardsDuration state variable becomes zero. The next time the owner attempts to start a new reward period by calling `notifyRewardAmount()`, the transaction will revert due to a division-by-zero error in the line `rewardRate = reward / rewardsDuration`. This bricks the reward distribution mechanism, making it impossible to add new rewards until the owner rectifies the situation by calling `setRewardsDuration()` again with a non-zero value. ```solidity function setRewardsDuration(uint256 _rewardsDuration) external onlyOwner { if (block.timestamp <= periodFinish) revert RewardsPeriodNotFinished(); rewardsDuration = _rewardsDuration; emit RewardsDurationUpdated(rewardsDuration); } ```

LowThe Codebase Requires Vulnerable DependenciesOpen

Running the `npm install` command to install the dependencies highlights 17 vulnerabilities (2 low, 14 high, 1 critical). This may introduce backdoors, known vulnerabilities or unexpected behavior into the system.

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

  • src/interfaces/ICampStakingVault.sol
  • src/interfaces/Events.sol
  • src/CampStakingVault.sol
  • src/CampStaker.sol
  • broadcast/Interact.s.sol/123420001114/run-1743437475.json
  • broadcast/Interact.s.sol/123420001114/run-latest.json
  • broadcast/Deploy.s.sol/123420001114/run-latest.json
  • test/mock/MockERC20.sol
  • github/workflows/test.yml
  • src/utils/Errors.sol
  • src/interfaces/IWCAMP.sol
  • script/NotifyRewards.s.sol
  • README.md
  • broadcast/Deploy.s.sol/325000/run-latest.json
  • test/CampStakingVaultTest.t.sol
  • src/WrappedCAMP.sol
  • test/WrappedCAMP.t.sol
  • gitignore
  • foundry.toml
  • lcov.info
  • script/Deploy.s.sol
  • test/utils/WrappedCAMP.sol
  • gitmodules
  • broadcast/Deploy.s.sol/325000/run-1749053324.json

Part of Camp’s security record

Camp
Audits3 audits by 1 firmLast audit Sep 2025, by Quantstamp.
Critical findingsNo open critical findingsAcross 3 reports.
Open Camp’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