Root + Impact
Description
The protocol implements a staking mechanics. Users can stake their rappers and will earn CRED per full day staked. However, the reward is only 1 unit of CRED, which is unexpectedly low.
@> if (days_staked >= 1) { cred_token::mint(module_owner, staker_addr, 1); };
@> if (days_staked >= 2) { cred_token::mint(module_owner, staker_addr, 1); };
@> if (days_staked >= 3) { cred_token::mint(module_owner, staker_addr, 1); };
@> if (days_staked >= 4) { cred_token::mint(module_owner, staker_addr, 1); };
Risk
Likelihood:
Happens every time a user unstakes a rapper after at least 1 day of staking
Impact:
Users receive 1e8 less CRED than expected
Recommended Mitigation
- if (days_staked >= 1) { cred_token::mint(module_owner, staker_addr, 1); };
- if (days_staked >= 2) { cred_token::mint(module_owner, staker_addr, 1); };
- if (days_staked >= 3) { cred_token::mint(module_owner, staker_addr, 1); };
- if (days_staked >= 4) { cred_token::mint(module_owner, staker_addr, 1); };
+ if (days_staked >= 1) { cred_token::mint(module_owner, staker_addr, 100000000); };
+ if (days_staked >= 2) { cred_token::mint(module_owner, staker_addr, 100000000); };
+ if (days_staked >= 3) { cred_token::mint(module_owner, staker_addr, 100000000); };
+ if (days_staked >= 4) { cred_token::mint(module_owner, staker_addr, 100000000); };