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 sharedFaucetobject with SUI balance and aTable<address, bool>for tracking claims. -
Key Features:
-
create_faucet: Initializes shared faucet with initial SUI. -
claim: Users get 100 SUI once; fails on retry; emitsClaimEvent. -
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
- Install Sui CLI: https://docs.sui.io/guides/developer/getting-started/sui-install
- Clone this repo and
cdinto it. - Build:
sui move build - Test:
sui move test(runs all 4 test cases; should pass). - 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 withE_ALREADY_CLAIMED. -
test_multiple_users: Two users claim 100 each; balance updates correctly. -
test_add_tokens: Add SUI after depletion; balance increases.
Resources Used
- Sui Move Book: https://docs.sui.io/guides/developer/move
- Sui Framework Docs: https://docs.sui.io/references/framework
- Examples: Adapted from Sui repo coin/balance patterns.