As of 3 Nov 2026, Hector Network has 2 audit reports by 1 security firm on Trustblock; the latest is by CertiK, dated 19 Dec 2023. Those reports list no open critical findings.
Record last updated . It holds audits and findings, contracts and incidents up to Nov 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Hector Network (Redemption System) Audit | Security firm: CertiK | Date: | Scope: Files named in the report | No open critical findings | Original removed |
| Hector Network (Audit 2) | Security firm: CertiK | Date: | Scope: Files named in the report | No open critical findings | Original removed |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 2 | 0 | 2 |
| Medium | 1 | 0 | 2 |
| Low | 5 | 0 | 9 |
The `mintWithdraw()` function doesn't have any access control and it can be called by anyone. An attacker can call the function with itself as the `recipient` and an arbitrary `redeemAmount`, thus draining the funds from the Redemption Treasury contract.
Open the reportWhen the farming contract receives reward tokens during a distribution period, only parts of the reward tokens are actually distributed: **(endTime - lastRewardTimestamp)/(endTime - beginRewardTimestamp + 1)*[received amount]** There will be leftover tokens in the farming contract. ```solidity=290 uint256 multiplier = block.timestamp - lastRewardTimestamp; uint256 tokenReward = (multiplier * totalReward) / totalRewardPeriod; rewardAmount += tokenReward; accTokenPerShare += ((tokenReward * SHARE_MULTIPLIER) /totalTokenBoostedSupply); ``` For example, in an 8-week emission period, if the farming contract receives rewards on the first second of week four and the farming contract is also updated on that timestamp, only 5/8 newly added rewards will be distributed among stakers.
Open the reportIn the contract LockFarm, the function `onRewardReceived()` updates the variables `totalReward` and `totalRewardPeriod` which are used in the calculations of `pendingReward()`. However ,`updateFarm()` updates the variables `accTokenPerShare` and `lastRewardTimestamp` which are also used by calculations in `pendingReward()`. Users who view the `pendingReward()` function would see a different expected rewards output once the `updateFarm()` logic is executed elsewhere in the contract. Notice that other Masterchef-like contracts will update pools when changing the emission rate.
Open the reportIn the current implementation, there is no upper limit for the `RewardWeight`. Misuse of these fee setting functions could interrupt the reward split. For example, receivers with `RewardWeight` set higher to 10000 will get all reward tokens, preventing other receivers from receiving rewards. Also, `RewardWeight` of all receivers should add to 10000 to make sure each receiver can get their share of rewards.
Open the reportThe smart contract does not check or store the return value of an external call in a local or state variable, which may introduce vulnerabilities due to the unhandled outcome.
Open the reportState variables that are unchanged in the code base can be declared as `constant`.
Open the reportThe variables assigned in the constructor can declare with `immutable`. Immutable state variables can be assigned during contract creation but will remain constant throughout the lifetime of a deployed contract. A big advantage of immutable variables is that reading them is significantly cheaper than reading from regular state variables since will not be stored in storage. Still, values will directly insert the values into the runtime code.
Open the reportThe function that affects the status of sensitive variables should be able to emit events as notifications to listeners.
Open the reportThe computation for each iteration is complex, it could lead to gas insufficiency when the `receivers` length is extremely large.
Open the reportIn the contract `LockFarm`, the function `processReward()` calculates the variable `boostedAmount` internally with the supplied config parameters. Each respective function that calls `processReward()` recalculates `boostedAmount` for local use.
Open the reportIn the contract `LockFarm`, function `stake()` requires the parameter `secs` to be greater than zero and greater than or equal to `lockedStakeMinTime`. `lockedStakeMinTime` is already assign `7 days` and not modified within the code base, making the initial greater than zero check redundant.
Open the reportThe contract `LockAddressRegistry` only enables including farms to the `_isFarm` mapping. Should a farm become compromised, the contract should be able to disable the status of the address.
Open the reportThe variable `rewardAmount` is declared but never used.
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="hector-network"></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