Audit · firm’s term: smart contract audit
Resonance Security reviewed Hedgey (Hedgey Finance) on 12 Nov 2024: 9 findings, 0 critical; 3 marked fixed, 6 open.
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 | 0 | 0 |
| Medium | 2 | 0 | 0 |
| Low | 4 | 0 | 3 |
The function claimMultipleWithSig() is used by paymasters to claim tokens from multiple campaigns on behalf of a claimer. It uses a signature verification mechanism to control the access to this function and the ability to claim the claimer's tokens.The signature provided as an input parameter to this function includes several variables necessary to prevent signature attacks, e.g. signature replay, however, it does not do so effectively. When attempting to claim from multiple campaigns, the paymaster needs to provide a signature that, along with other variables, will verify the id and amount of tokens of the first campaign as well as the number of campaigns to claim. Solely relying on these variables opens up the possibility for the paymaster to claim unintended campaigns.As an example of a proof of concept:Claimer can claim from 4 campaigns;Claimer provides a proper signature to the paymaster to claim on his behalf for only 3 of the campaigns, specifically campaigns 1, 2, and 3.Paymaster uses the same signature to claim from campaigns 1, 2, and 4.The scenario identified previously is possible due to the fact that the first campaign matches what the claimer intended, and the number of claimed campaigns also matches. However, it does not match the intended campaigns that were meant to be claimed on behalf of the claimer.
The protocol adds a fee in native ETH to users through the frontend. However, it is possible to prevent the fee payment by using the smart contract directly without using the web application.
When it is not possible for counters to overflow, as is the case when used in for and while-loops, they should be unchecked. The unchecked keyword is new in solidity version 0.8.0, so this only applies to that version or higher, which these instances are. This saves 30-40 gas per loop.
The critical procedures used to change treasury or whitelist or blacklist tokens in this protocol should use a two step process in order to ensure the modification is indeed intended.
The smart contract allows users to provide ETH as fee, but does not refund the amount in excess of what is required, sending incorrect amounts to treasury.
Unlike the basic Transfer function, SafeTransfer incorporates safeguards against potential smart contract vulnerabilities, such as reentrancy attacks and unexpected token loss.
The report names a repository or files. Open the report to see its scope.
18 projects reviewed · 25 reports · latest Aug 2025
See Resonance Security’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