Skip to content

feat: add rate-limited faucet for simulated token distribution#229

Merged
DevMuhdishaq merged 2 commits into
StelTade:mainfrom
obswrld:feat-Educational-faucet-for-simulated-funds
Jul 22, 2026
Merged

feat: add rate-limited faucet for simulated token distribution#229
DevMuhdishaq merged 2 commits into
StelTade:mainfrom
obswrld:feat-Educational-faucet-for-simulated-funds

Conversation

@obswrld

@obswrld obswrld commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

closes #213

Summary

Adds a rate-limited faucet module to the counter contract, allowing new users to claim simulated tokens to start trading.

Changes

New file: counter/src/faucet.rs

  • claim_faucet(env, user, asset) — mints a configured drip amount per user/asset with per-user cooldown enforcement
  • set_faucet_config(env, caller, asset, drip_amount, cooldown_secs) — admin-only configuration of per-asset drip amount and cooldown
  • get_faucet_config(env, asset) — query faucet configuration
  • 16 tests covering cooldown boundaries, admin permissions, balance accumulation, independent per-user/per-asset cooldowns, and edge cases (zero cooldown, boundary second, config updates)

Modified files

  • errors.rs — FaucetRateLimited (900), FaucetNotConfigured (901)
  • events.rs — FaucetClaimed event emission
  • lib.rs — Module registration and #[contractimpl] entry points (claim_faucet, set_faucet_config, get_faucet_config)
    Acceptance criteria
  • First claim mints the configured amount and updates balance
  • Second claim within cooldown rejects with FaucetRateLimited
  • Claim after cooldown succeeds
  • Admin can set drip amount and cooldown; non-admin cannot
  • Tests cover cooldown boundaries via ledger timestamp manipulation

@DevMuhdishaq
DevMuhdishaq merged commit 20dfb17 into StelTade:main Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Educational faucet for simulated funds (faucet.rs)

2 participants