Jager Hunter security record

BNB Chainjager.memeX

As of 30 Oct 2026, Jager Hunter has 1 audit report on Trustblock, by CertiK, dated 28 Apr 2025. That report lists no open critical findings.

Critical findings
No open critical findings
In 1 report.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
Jager Hunter 2Security firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings7

Statuses are the security firm’s own, from each report.

SeverityOpenAcknowledgedFixed
Critical000
High001
Medium011
Low202
HighPotential Excess Reward for UsersJager Hunter 2 · CertiK · 28 Apr 2025Fixed

In the `JagerHunterLP` contract, the `poolInfo.lastRewardBlock` variable indicates the block number of the last reward update, which is essential for calculating rewards generated by the pool. This variable is updated whenever rewards are added or when the pool is updated. ```solidity function updatePool() public { if(rewardPerBlock == 0) return; @> if (poolInfo.totalAmount == 0) return; if (block.number <= poolInfo.lastRewardBlock) return; uint256 currentMaxBlockNumber = endBlock > block.number ? block.number : endBlock; if(currentMaxBlockNumber > poolInfo.lastRewardBlock) { uint256 jagerReward = (currentMaxBlockNumber - poolInfo.lastRewardBlock) * rewardPerBlock; poolInfo.releaseReward += jagerReward; poolInfo.accLPPerShare = poolInfo.accLPPerShare + (jagerReward * 1e12 / poolInfo.totalAmount); } else { rewardPerBlock = 0; } poolInfo.lastRewardBlock = block.number; } ``` However, in the `updatePool()` function, if there are no staked assets in the pool (`poolInfo.totalAmount == 0`), the function exits without updating `poolInfo.lastRewardBlock`. This issue causes reward calculations to disregard the initial staked block, resulting in users potentially receiving more rewards than they should when assets are eventually staked.

Open the report
MediumRewards Period Can Be Delayed MaliciouslyJager Hunter 2 · CertiK · 28 Apr 2025Fixed

The `addReward()` function allows any account to deposit `jager` tokens into the `JagerHunterLP` reward pool. Upon deposit, the newly added rewards (combined with any remain rewards) will be redistributed across blocks generated during the next 7-day period. The reward distribution period is automatically reset to start at the current block and end after 7 days' worth of blocks. ```solidity function addReward(uint256 amount) external { if(amount == 0) return; TransferHelper.safeTransferFrom(address(jagerToken), msg.sender, address(this), amount); poolInfo.totalReward += amount; updatePool(); uint256 currentBlock = block.number; uint256 releaseBlockNumber = 7 days / 3; rewardPerBlock = (poolInfo.totalReward - poolInfo.releaseReward) / releaseBlockNumber; poolInfo.lastRewardBlock = currentBlock; endBlock = currentBlock + releaseBlockNumber; } ``` However, since this function is permissionless, a malicious actor could exploit it by repeatedly transferring minimal amounts (e.g., 1 wei) to reset the end block. This would artificially extend the reward distribution period, delaying users' ability to claim accumulated rewards. If the attacker continues this pattern every 7 days, the rewards could be fragmented into indefinitely small allocations over an extended timeframe, effectively locking funds in the pool for prolonged periods.

Open the report
LowMissing Zero Address ValidationJager Hunter 2 · CertiK · 28 Apr 2025Fixed

The cited address input is missing a check that it is not `address(0)`. ```solidity constructor(address jager, address sign ,address invitor) JagerHunterMint(3 days) { @> jagerToken = jager; lpStake = new JagerHunterLP(jager); TransferHelper.safeApprove(jager, address(lpStake), ~uint256(0)); @> signAddress = sign; @> defaultInvitor = invitor; } ```

Open the report
LowVariable Can Be Declared as ConstantJager Hunter 2 · CertiK · 28 Apr 2025Fixed

The linked variables are assigned a value once and never modified, so they should be declared as `constant`. A significant advantage of using constant variables is that reading them is considerably less costly than accessing regular state variables. ```solidity uint256 public immutable firstInvitorRate = 900; uint256 public immutable secondInvitorRate = 300; uint256 public immutable instantRate = 6500; uint256 public immutable baseRate = 10000; ```

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

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.

Content

Facts

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.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="jager-hunter"
></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