This repository is the hands-on environment for the XRPL Commons developer training. Participants work from scaffolded exercises. Mentors can track progress through Google Chat and verify the final work on XRPL Testnet.
.
├── .devcontainer/ Codespaces setup
├── scripts/ Wallet minting
├── exercises/
│ ├── js/
│ ├── python/
│ └── java/
├── wallets.json Auto-generated on first Codespace start
└── README.md
Complete solutions live on the solutions branch.
Click the button above and wait for the environment to finish starting.
The Codespace automatically:
- installs JavaScript, Python, and Java dependencies
- creates two funded XRPL Testnet wallets
- saves them to
wallets.json - silently notifies mentors in Google Chat that you started
Prebuild note:
- this repository is configured so dependency installation runs during Codespaces prebuild creation
- wallet minting still runs only when each participant's Codespace starts, so wallets stay unique per participant
| Language | Folder | Run pattern |
|---|---|---|
| JavaScript | exercises/js/ |
node file-name.js |
| Python | exercises/python/ |
python file_name.py |
| Java | exercises/java/ |
mvn compile exec:java -Dexec.mainClass="academy.xrpl.ClassName" |
Each exercise contains TODO blocks. Fill them in, run the file, and confirm success in the XRPL Testnet Explorer.
| Time (CET) | Activity | Exercise |
|---|---|---|
| 3:00 - 3:30 | Welcome keynote | - |
| 3:30 - 4:30 | Blockchain 101 + quiz | - |
| 4:45 - 5:30 | XRPL 101 + quiz | - |
| 5:30 - 6:00 | Coding session 1 | day1-send-xrp |
| 6:00 - 6:30 | Q&A + homework | homework-nft |
| Time (CET) | Activity | Exercise |
|---|---|---|
| 3:00 - 3:30 | Homework review | - |
| 3:30 - 4:00 | Liquidity on XRPL | - |
| 4:05 - 4:10 | Warm-up | day2-step1-setup-account |
| 4:15 - 4:30 | Token issuance | day2-step2-issue-token |
| 4:35 - 4:55 | Capstone | day2-step3-create-amm |
| 5:50 - 6:10 | Alumni testimonial | - |
| 6:10 - 6:30 | Q&A + closing | - |
cd exercises/js && node day1-send-xrp.js
cd exercises/python && python day1_send_xrp.py
cd exercises/java && mvn compile exec:java -Dexec.mainClass="academy.xrpl.Day1SendXrp"Success signal: tesSUCCESS and an Explorer link.
cd exercises/js && node homework-nft.js
cd exercises/python && python homework_nft.py
cd exercises/java && mvn compile exec:java -Dexec.mainClass="academy.xrpl.HomeworkNft"Success signal: NFT mint succeeds, appears on-chain, then is burned.
cd exercises/js && node day2-step1-setup-account.js
cd exercises/python && python day2_step1_setup_account.py
cd exercises/java && mvn compile exec:java -Dexec.mainClass="academy.xrpl.Day2Step1SetupAccount"Success signal: issuer account enables Default Ripple.
cd exercises/js && node day2-step2-issue-token.js
cd exercises/python && python day2_step2_issue_token.py
cd exercises/java && mvn compile exec:java -Dexec.mainClass="academy.xrpl.Day2Step2IssueToken"Success signal: holder trust line exists and receives the issued token.
Prerequisite: complete Step 1 and Step 2 first.
cd exercises/js && node day2-step3-create-amm.js
cd exercises/python && python day2_step3_create_amm.py
cd exercises/java && mvn compile exec:java -Dexec.mainClass="academy.xrpl.Day2Step3CreateAmm"Success signal: AMMCreate succeeds and the pool exists on Testnet.
Participants do not need to run any tracking commands.
Tracking is silent and automatic:
- when a Codespace starts and wallets are minted, mentors get a startup signal
- a hidden background watcher monitors XRPL Testnet activity for that participant's wallets
- when a milestone transaction appears on-chain, mentors get a Google Chat update
- when Day 2 Step 3 succeeds, the final deliverable is submitted automatically
Each notification includes:
- the participant GitHub username from Codespaces
- the stage they completed
- their XRPL Testnet wallet addresses
- Explorer links that mentors can review later
Verification is based on actual XRPL transaction history, not file edits or Codespace creation.
The hidden watcher looks for:
- Day 1 XRP payment
- NFT mint and burn
AccountSetenablingDefault RippleTrustSetplus issued token paymentAMMCreate
This is the defensible answer to "did they actually complete it?" because it checks ledger activity directly.
This repo supports Google Chat incoming webhooks.
Setup steps:
- Create an incoming webhook in the mentor Google Chat space.
- In GitHub, add a Codespaces repository secret named
GOOGLE_CHAT_WEBHOOK_URL. - Use the webhook URL value from Google Chat.
- New participant Codespaces will automatically post a startup event when wallets are minted.
- Exercise success events and the final deliverable will also post automatically in the background.
- In GitHub repository settings, open
Settings -> Codespaces -> Prebuild configurationand create a prebuild formain. - Choose the nearest region for participants, for example
West Europefor this workshop.
Participants do not need to know or paste the webhook URL.
Google documents incoming webhooks as one-way notifications into a Chat space, which matches this workshop use case:
If participants are blocked, send them to a Zoom breakout room and route them to one of:
- Tushar Pardhe
- Florian
- Thomas
- Mathis
If you want photos in this README, add the image assets and they can be linked here. Right now only names are included.
After startup, wallets.json contains two funded Testnet wallets:
- Wallet 1: sender, issuer, minter
- Wallet 2: receiver, holder
Important:
- these are Testnet wallets only
- never reuse Testnet seeds on Mainnet
- you can re-mint them with
node scripts/mint-wallets.js
| Item | Value |
|---|---|
| Network | XRPL Testnet |
| WebSocket | wss://s.altnet.rippletest.net:51233 |
| JSON-RPC | https://s.altnet.rippletest.net:51234 |
| Explorer | https://testnet.xrpl.org |
| Faucet | https://faucet.altnet.rippletest.net/accounts |
- XRPL Commons Learning Portal for guided courses and workshop-friendly explanations
- Intro to the XRPL for the broad protocol overview
- XRPL Docs for official transaction, API, and network references
- XRPLF GitHub Organization for SDKs, examples, and core project source
- XRPL Testnet Explorer to confirm results on-chain after each exercise
| Exercise | Learning Portal | XRPL Docs | Helpful SDK / Source |
|---|---|---|---|
day1-send-xrp |
Create Accounts and Send XRP | Payment transaction | xrpl.js, xrpl-py |
homework-nft |
Mint and Burn NFTs | NFTokenMint, NFTokenBurn, account_nfts | xrpl.js, xrpl-py |
day2-step1-setup-account |
Code with XRPL and JavaScript | AccountSet transaction | xrpl.js, xrpl-py, xrpl4j |
day2-step2-issue-token |
Create Trust Line and Send Currency | TrustSet transaction, Payment transaction | xrpl.js, xrpl-py, xrpl4j |
day2-step3-create-amm |
What is an Automated Market Maker? | AMMCreate transaction, amm_info | xrpl.js, xrpl-py, xrpl4j |
- xrpl.js docs and xrpl.js repo
- xrpl-py docs and xrpl-py repo
- xrpl4j repo for Java examples and library source
- XRPL Dev Portal repo for many of the code samples behind the official docs
- rippled repo for protocol/server implementation details if you want to go deeper
| Problem | What to do |
|---|---|
| Wallet minting fails | Retry node scripts/mint-wallets.js after a short wait. |
| Java build is slow on first run | Run mvn compile once and wait for dependencies. |
| WebSocket connection fails | Retry on a different network if corporate firewall rules block WebSockets. |
| Day 2 Step 3 fails | Complete Step 1 and Step 2 first, then retry. |
| Progress message does not reach mentors | Confirm the GOOGLE_CHAT_WEBHOOK_URL Codespaces secret is set. |
If a participant gets stuck, complete solutions are available on the solutions branch:
git checkout solutions -- solutions/