Skip to content

Contracts: Add admin-configurable minimum claim amount in rewards contract #321

@CelestinaBeing

Description

@CelestinaBeing

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

  • Add MIN_CLAIM constant key to instance storage
  • Add set_min_claim(env, admin, min_amount: u64) admin function (0 = no minimum)
  • In claim(): return new Error::BelowMinClaim if amount < min_claim && min_claim > 0
  • Add min_claim(env) -> u64 view function
  • Add unit tests: claim below minimum rejected, claim exactly at minimum succeeds, admin can update minimum
  • Emit min_claim_set event on admin update
  • Update contracts/rewards/README.md

References

  • contracts/rewards/src/lib.rs:264claim() function
  • Error enum at contracts/rewards/src/lib.rs:20

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave program

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions