Skip to content

SuiCoders Weekly Puzzle 1

Token Faucet Challenge Submission

This is a complete implementation of the Simple Token Faucet (Easy) challenge for the SuiCoders Weekly Puzzle 1.

Overview

  • Module: token_faucet::token_faucet – Manages a shared Faucet object with SUI balance and a Table<address, bool> for tracking claims.
  • Key Features:
    • create_faucet: Initializes shared faucet with initial SUI.
    • claim: Users get 100 SUI once; fails on retry; emits ClaimEvent.
    • add_tokens: Adds SUI to faucet (open to anyone for simplicity).
  • Concepts: Shared objects, Balance/Coin, Table for tracking, events.
  • Errors: E_ALREADY_CLAIMED, E_INSUFFICIENT_BALANCE.
  • Access Control: Basic (claim per address); add_tokens open.

How to Build and Test Locally

  1. Install Sui CLI: https://docs.sui.io/guides/developer/getting-started/sui-install
  2. Clone this repo and cd into it.
  3. Build: sui move build
  4. Test: sui move test (runs all 4 test cases; should pass).
  5. Publish (optional, on testnet): sui move new-env --move sui move publish --gas-budget 100000000

Test Cases Coverage

  • test_successful_claim: Single claim succeeds, gets 100 SUI.
  • test_double_claim_fails: Second claim aborts with E_ALREADY_CLAIMED.
  • test_multiple_users: Two users claim 100 each; balance updates correctly.
  • test_add_tokens: Add SUI after depletion; balance increases.

Resources Used

Merge request reports

Loading