CertiK reviewed Hashflow (Hashflow-Audit3) on 19 Sep 2022: 9 findings, 0 critical; 6 marked fixed, 1 acknowledged, 2 open.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 1 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 2 | 0 | 6 |
There is an inconsistency between code and comment on L654. The comments for multi-hop trades is incorrectly placed in the single-hop trade code block.
Comparison `percentWithdrawLimit >= 0`, that is always true, may be unnecessary. ```solidity=119 require( percentWithdrawLimit >= 0 && percentWithdrawLimit <= 100, 'HashflowGovernance: Number should be a percentage.' ); ```
For upgradeable contracts, there must be a storage gap to "allow developers to freely add new state variables in the future without compromising the storage compatibility with existing deployments". Otherwise, it may be very difficult to write new implementation code. Without storage gap, the variable in the child contract might be overwritten by the upgraded base contract if new variables are added to the base contract. Refer to https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable
In contract `HashflowRouter`, function `tradeXChain()` proceeds without using `_isPoolAuthorized()` function to confirm if the quote.pool is allowed, whereas this check is carried out in RFQm process.
Several typos were found in the comments of different files.
The linked functions are equivalent to the compiler-generated getter functions for the respective variables.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (8)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething 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