Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: medium
Invalid

Precision Loss in Vesting Calculation Leads to Unclaimable Tokens

Summary

The _calculateReleasableAmount() function uses integer division to compute vested amounts. Since Solidity rounds down when performing division, this results in minor precision loss over time, leading to a scenario where beneficiaries might be unable to claim their full vested entitlement.

Vulnerability Details

The _calculateReleasableAmount() function determines how many tokens have vested based on time elapsed:

uint256 vestedAmount = (schedule.totalAmount * timeFromStart) / schedule.duration; return vestedAmount - schedule.releasedAmount;
  • Solidity’s integer division rounds down fractional values.

  • If totalAmount is not perfectly divisible by duration, a small portion of tokens will never be claimable, since each claim slightly underestimates the vested amount.

  • The issue compounds over multiple claims, leading to unallocated tokens remaining in the contract after the vesting period ends.

Impact

  • Loss of Tokens for Beneficiaries: Due to rounding down, the total claimable amount may be slightly less than the intended total vesting allocation.

  • Locked Tokens in Contract: Small amounts of unclaimed tokens may remain trapped in the contract, making them inaccessible to beneficiaries.

Tools Used

Manual Code Review

Updates

Lead Judging Commences

inallhonesty Lead Judge 10 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!