PEAKDEFI

QuantstampFiles named in the report

Quantstamp reviewed PEAKDEFI on 30 Oct 2020: 18 findings, 0 critical; 7 marked fixed, 11 acknowledged.

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

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings18

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

SeverityOpenAcknowledgedFixed
Critical000
High001
Medium002
Low0114
High`PeakDefiFund` MigrationFixed

When migrating the `PeakDeFiFund` to a new version, `migrateOwnedContractsToNextVersion` function does not transfer the ownership of `peakReferralToken` which will break token deposit and withdrawal, since the new contract won't own the `peakReferralToken`.

MediumPeak Minting CapFixed

Peak token cap is fixed to five billions, `_interestRateFactor` function is supposed to return zero rate after 5 billions cap. However, the function will throw instead since `SafeMath.sub` is used. As a consequence `PeakStaking` contract will be inaccessible after that the max cap is reached, disallowing new managers to join.

MediumSignature ExecutionFixed

External signature won't work since `msg.sender` won't be equal to `address(this)`. As an example, if user A calls `PeakDefiFund.createInvestmentWithSignature` that does a delegate call to `PeakdefiLogic.createInvestmentWithSignature` the `msg.sender` value will still be equal to user A address, once all ECDSA verifications pass with the signature of user B, `createInvestmentV2` is called without using the keyword `this.createIn...` meaning that the `msg.sender` value will still be equal to the initial sender (user A), The requirements that checks if `msg.sender == _sender || msg.sender == address(this)` will throw since both condition are wrong. Affected function: - `PeakDefiLogic.createInvestmentWithSignature()`. - `PeakDefiLogic.sellInvestmentWithSignature()`. - `PeakDefiLogic.createCompoundOrderWithSignature()`. - `PeakDefiLogic.sellCompoundOrderWithSignature()`. - `PeakDefiLogic.repayCompoundOrderWithSignature()`.

Low`PeakStaking` and Specification DiscrepancyFixed

As per the [specification](https://peakdefi.gitbook.io/peakdefi/for-investors/staking-peak) `PeakStaking._interestRateFactor` does not seem to implement "Bigger Bonus Daily".

LowCompound Token List InitializationFixed

`initTokenListings` does not check if the listed compound tokens are set in the compound order factory. Adding a token that is not listed may lead to unexpected behaviour.

LowPeakDefiFund initializationFixed

`PeakdefiFactory` `createFund` and all initialisation functions do not implement any authorisation mechanism, depending on how often `PeakDefiFund`s are deployed, an attacker can front run a transaction to set initialisation parameters to its own.

LowUnlocked Dependency VersionFixed

The version of `@openzeppelin/contracts`, `@uniswap/v2-periphery`, and `@uniswap/v2-core` are not locked in `peakdefi-contracts` and the version of `@openzeppelin/contracts` is not locked in `peakDeFi-token`. This entails some risk of unexpected behaviours due to updates of contracts in these packages.

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

  • PeakDeFi-token /contracts/*

Part of PEAKDEFI’s security record

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