Challenge 1: Simple Token Faucet (Easy)
Problem Statement
Build a token faucet that distributes test tokens to users. Users can request tokens once, and the faucet tracks who has already claimed.
Requirements
- Create a faucet that holds a balance of tokens
- Users can request a fixed amount of tokens (e.g., 100 tokens)
- Each address can only claim once
- Track which addresses have already claimed
- Emit events when tokens are claimed
Key Concepts to Implement
- Shared objects for the faucet
- Balance management
- Address tracking using Table
- Basic access control
Function Signatures to Implement

Expected Output
- Users can call claim() and receive 100 SUI
- Attempting to claim twice should fail
- Events are emitted for tracking
Test Cases to Implement
- User claims successfully
- User tries to claim twice (should fail)
- Multiple users claim
- Admin adds more tokens
Hint
You'll need Balance<SUI>, Coin<SUI>, and Table types
What to Submit
- Complete Move module implementation for your chosen challenge(s)
- Move.toml file with dependencies:

-
Basic tests showing your module works
-
README.md explaining how to build and test
How to test locally

Where to submit
You can submit here:
https://gitlab.alkimi.org/suicoders/token-faucet
How to submit
To make a submission, you must do the following:
-
Clone this repo
-
Push to this by creating your own branch
Evaluation Criteria
- Completeness (50%): All required functions implemented
- Correctness (30%): Code compiles and works as expected
- Code Quality (20%): Clean, readable code with comments
Tips
- You need to define your own structs based on the requirements
- Figure out which imports you need from the Sui framework
- Start with the struct definitions, then implement functions
- Use assert! statements for validation
- Add error constants for better debugging
- Check the Sui examples repo for reference patterns
Resources