Summary
Currently a user can claim as little as 1 point at a time. This creates spam risk on mainnet where each claim is a transaction with fees. A configurable minimum claim amount prevents micro-claims and keeps the fee-to-reward ratio sensible.
Problem
In contracts/rewards/src/lib.rs, the claim() function has no minimum amount check beyond 'amount > 0' (implicitly via u64). An attacker or buggy client can create thousands of 1-point claim transactions.
Acceptance Criteria
References
contracts/rewards/src/lib.rs:264 — claim() function
- Error enum at
contracts/rewards/src/lib.rs:20
Summary
Currently a user can claim as little as 1 point at a time. This creates spam risk on mainnet where each claim is a transaction with fees. A configurable minimum claim amount prevents micro-claims and keeps the fee-to-reward ratio sensible.
Problem
In
contracts/rewards/src/lib.rs, theclaim()function has no minimum amount check beyond 'amount > 0' (implicitly via u64). An attacker or buggy client can create thousands of 1-point claim transactions.Acceptance Criteria
MIN_CLAIMconstant key to instance storageset_min_claim(env, admin, min_amount: u64)admin function (0 = no minimum)claim(): return newError::BelowMinClaimifamount < min_claim && min_claim > 0min_claim(env) -> u64view functionmin_claim_setevent on admin updatecontracts/rewards/README.mdReferences
contracts/rewards/src/lib.rs:264—claim()functioncontracts/rewards/src/lib.rs:20