Epoch Island - vEPOCH Token

QuantstampFiles named in the report

Quantstamp reviewed Epoch Island (Epoch Island - vEPOCH Token) on 3 Nov 2023: 18 findings, 0 critical; 4 marked fixed, 12 acknowledged, 2 open.

No open critical findings
Open the reportOpen Epoch Island’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
Medium011
Low2112
HighCalling `withdrawForfeit()` Multiple Times for a Single Deposit Would Cause Loss of FundsFixed

When calling `withdrawForfeit()`, the rewards that need to be paid back to the contract is calculated as follows: ``` uint256 forfeitReward = ((earned[_depositId] + rewardTokensClaimed[_depositId]) * percentage) / 1e18; ``` However, the `rewardTokensClaimed` is never updated after the payback. Thus, when users don't withdraw 100 percent of their deposit, they will repay more rewards than they are obligated to with the following withdrawals. Furthermore, the user won't be able to unlock the entire deposit unless they buy `rewardToken` to pay back.

MediumAttacker May Reduce Other User RewardsFixed

An attacker may be able to reduce the rewards received by other users without any penalty, only incurring gas costs. Such an attack is possible whenever `forfeitRedirectionAddress != address(0)`. The described exploit scenario will lead to the fact that current deposits will receive fewer reward shares. In case the attacker has control over `forfeitRedirectionAddress`, they will be able to claim those rewards without any deposits being locked.

LowChecks-Effects-Interactions Pattern ViolationFixed

The [Checks-Effects-Interactions](https://solidity.readthedocs.io/en/latest/security-considerations.html#use-the-checks-effects-interactions-pattern) coding pattern is meant to mitigate any chance of other contracts manipulating the state of the blockchain in unexpected and possibly malicious ways before control is returned to the original contract. As the name implied, only after checking whether appropriate conditions are met and acting internally on those conditions should any external calls to, or interactions with, other contracts be done. The following functions are violating the "Checks-Effects-Interactions"-pattern and/or do not employ any reentrancy mitigating modifers, making them susceptible to reentrancy: 1. `Vepoch.addRewardTokens()`. 1. `Vepoch.claimYield()`. 1. `Vepoch.deposit()`. 1. `Vepoch.withdrawForfeit()`. 1. `Vepoch.withdraw()`.

LowUnlocked PragmaFixed

Every Solidity file specifies in the header a version number of the format `pragma solidity (^)0.8.*`. The caret (`^`) before the version number implies an unlocked pragma, meaning that the compiler will use the specified version _and above_, hence the term "unlocked".

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)

  • tree/master/contracts/Vepoch.sol

Part of Epoch Island’s security record

Epoch Island
Audits2 audits by 1 firmLast audit Nov 2023, by Quantstamp.
Critical findingsNo open critical findingsAcross 2 reports.
Open Epoch Island’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