The epoch updates of the FjordStaking and FjordPoints contracts are not synchronized, resulting in users being able to obtain Points at almost no cost.
The epoch update method of the FjordStaking contract is using function getEpoch.
The epoch update of the contract FjordPoints is in the function distributePoints.
Although their cycles are both one week, the different starting times result in different update times. Therefore, an attacker can stake when the epoch of the contract FjordPoints is about to be updated, but the epoch of the contract FjordStaking will not be updated, and then unstake after the epoch of the contract FjordPoints is updated, thereby obtaining Points in a short time.
Attackers can obtain Points at almost no cost.
Vscode
The startTime of FjordStaking should be added with padding to synchronize with the contract FjordPoints.
Impact: High - Users are getting an unreasonable amount of points through exploiting a vulnerability Likelihood: Low - Most of the times, when using the script, all deployment tx will get processed in the same block. But, there is a small chance for them to be processed in different blocks.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.