As of 3 Nov 2026, Epoch Island has 2 audit reports by 1 security firm on Trustblock; the latest is by Quantstamp, dated 7 Nov 2023. Those reports list no open critical findings.
Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Epoch Island - LP Pool | Security firm: Quantstamp | Date: | Scope: Files named in the report | No open critical findings | Open · certificate.quantstamp.com |
| Epoch Island - vEPOCH Token | Security firm: Quantstamp | Date: | Scope: Files named in the report | No open critical findings | Open · certificate.quantstamp.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 0 | 1 |
| Medium | 0 | 2 | 3 |
| Low | 4 | 16 | 6 |
For easiness of application development, it is helpful to have the most important information emitted by events at crucial state changes. The following informational content of events could be improved upon: 1. No event is emitted when `lpPositions` is deleted in L94. 1. The `Remove` event only contains the `positionId` which may lead to more complex information querying, especially when the value at that index was deleted. Consider adding the following parameters: `_upsideTokenAmount` and `_downsideTokenAmount`.
Open the reportWe have observed some incidents of undocumented behavior that the user should be informed about: 1. The fee mechanism is undocumented and users are currently not informed how the fee changes over time. 1. While it makes sense, the documentation does not reflect that users will not receive any fees back when calling `untake()`. 1. While some NatSpec inline code documentation is provided, they do not describe function parameters and return values. Consider adding these, at least for all publicly and externally callable functions.
Open the reportWe identified some code sections where gas usage could be improved: 1. `Vepoch.sol#L156` and `L160`: Consider caching the return value of the call to `calculateVeTokens(_tokenAmount, _duration)` in a new local variable and re-using it instead of having two calls. 1. `deposits` is currently a mapping. As it is used with a strictly incrementing index, an array can also be used. Storing new values in an array is cheaper than in a mapping.
Open the reportIn `withdrawForfeit()`, the deposit is never deleted even when `percentage` is 100%. So an attacker could call `withdrawForfeit()` multiple times and pass in engineered numbers of `_depositTokensToRemove` to deliberately introduce rounding errors that allow the contract to return all of the deposited tokens while keeping some dust `rewardStakingPower` inside the contract. If this happens, the attacker can be rewarded without keeping any deposits in the contract.
Open the reportThe reports name a repository or files. Open a report to see its scope.
Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.
Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.
<head><script src="https://widget.trustblock.run/project-widget.min.js" defer></script></head><body><divdata-tb-project-widgetdata-tb-project-slug="epoch-island"></div></body>
Paste the code where the label should appear. It uses no API credit and updates by itself.
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