English | 日本語 | 中文 | Español | Français | हिन्दी | Italiano | Português (BR)
Learn the XRP Ledger in one sitting. No accounts. No real money. Just you and the ledger.
Most blockchain tutorials teach concepts. XRPL Camp makes you do them — create a wallet, fund it, write a permanent memo to a public ledger, verify it independently, and walk away with a record anyone can check against the ledger itself. The whole arc takes about ten minutes.
Built for workshops, classrooms, and self-study. The guided flow resumes where you left off, a failed lesson stops the run instead of pretending, and nothing claims to have happened that didn't.
Why this instead of a generic tutorial
- Real transactions, not slides. You write to an actual ledger. When lesson 5 says "verify it yourself," it hands you a hash and an explorer link that anyone can check.
- Your payment brings an account into existence. Lesson 4 isn't a toy transfer — it funds a second account that did not exist a moment earlier, and whose keys are also yours.
- Failure is part of the curriculum.
xrpl-camp trybreaks things on purpose against the live network, then shows you which failures would have cost money and which are free — before you ever press send. - Proof you can actually check. The proof pack names real transactions, and
proof verify --onlineasks the ledger whether they happened. That part nobody can fake. - Safe by design. Testnet only. Test XRP has no value. Your seed never leaves your machine. No telemetry, no analytics, no accounts.
Install
No Python required (downloads a prebuilt binary):
npx @mcptoolshop/xrpl-camp start
With Python:
pipx install xrpl-camp
In Docker — for workshops where installing things is the hard part:
docker run --rm -it -v "$PWD:/work" ghcr.io/mcp-tool-shop-org/xrpl-camp start
Mount a volume. Everything you make — wallet, certificate, proof pack — is written to
/work, and an unmounted container throws it away on exit. The image tells you if you forgot.
Quick Start
xrpl-camp start
Six lessons, in order, resuming if you restart:
- Mental Model — what the XRPL is, asked of the live network rather than asserted
- Create Wallet — generate a Testnet keypair; the seed stays on your machine
- Fund Wallet — free test XRP from the faucet, and why some of it is not spendable
- Send Payment — write your memo to the ledger, in a payment that creates an account
- Verify Transaction — look up what you wrote and compare it to what you typed
- Certificate — a record you keep, and can prove
Commands
| Command | What it does |
|---|---|
xrpl-camp start |
Guided flow through all 6 lessons (auto-resumes) |
xrpl-camp start --memo "..." |
Supply lesson 4's message up front, for scripted or non-interactive runs |
xrpl-camp read |
Your entries, read back off the ledger — not off this machine |
xrpl-camp read <address> |
What somebody else wrote. No key, no login, no permission |
xrpl-camp read <hash> |
One transaction, in full |
xrpl-camp try |
Break it on purpose against the live network. Signs nothing, costs nothing |
xrpl-camp status |
Progress checklist, with timings |
xrpl-camp status --detail |
Facilitator view: wallet, endpoint, state directory, next step |
xrpl-camp wallet create / show |
Create or display your Testnet wallet |
xrpl-camp fund |
Fund your wallet via the Testnet faucet |
xrpl-camp send --memo "hello" |
Send a memo payment to your mailbox |
xrpl-camp verify --tx <hash> |
Verify a transaction you sent |
xrpl-camp certificate |
Generate the certificate + proof pack |
xrpl-camp proof verify <file> |
Check a proof pack's hash. Fully offline |
xrpl-camp proof verify <file> --online |
Also ask the ledger whether the transactions really happened |
xrpl-camp proof verify <folder> |
Verify every pack in a folder — for facilitators |
xrpl-camp reset |
Wipe all state (requires typing RESET) |
xrpl-camp self-check |
Diagnose your environment and your connection to the ledger |
xrpl-camp support-bundle |
Write a diagnostic zip for bug reports |
Global flags: --version, --dry-run, --yes (non-interactive), --verbose (technical detail on errors).
What You End Up With
- A funded Testnet wallet, local and gitignored
- A second account that did not exist until your payment created it — and whose keys are also yours
- A memo you chose, permanently recorded and independently readable
- A certificate (
xrpl_camp_certificate.json) — safe to share, no private keys - A proof pack (
xrpl_camp_proof_pack.json) — naming real transactions anyone can resolve
About that proof
The proof pack carries a SHA-256 hash. That hash detects an accidental edit. It is not a signature, and on its own it does not prove the pack is genuine — anyone can change a field and recompute the hash with the same public function this tool uses.
What cannot be faked is the ledger:
xrpl-camp proof verify xrpl_camp_proof_pack.json --online
This resolves every transaction the pack names and checks that it exists, was sent by the pack's address, carries the memo the pack claims, and closed successfully. A pack with a rewritten address passes the offline hash check and fails this one.
Two details worth knowing, because both are easy to get wrong:
- Verification always queries the public Testnet (or
--rpc-url), never the endpoint named inside the pack. A forged pack can name a server its author controls. - The XRPL Testnet is periodically reset. When that happens, honest transactions stop resolving. The pack records each transaction's ledger index, so a reset reports as unverifiable (exit 3) rather than as fraud (exit 1).
Offline verification remains the default and makes no network calls, so it still works on a plane or a locked-down classroom machine.
Dry-Run Mode
xrpl-camp start --dry-run
No network calls, no disk writes, and no misleading output — lesson 6 explicitly refuses to generate artifacts. Dry-run may read existing state, but never mutates anything.
Endpoint and State
export XRPL_CAMP_RPC_URL="https://your-node:51234/"
The tool refuses endpoints it cannot confirm are Testnet, before signing anything. Set XRPL_CAMP_ALLOW_ANY_NETWORK=1 only if you understand what you are pointing it at.
State lives in ./.xrpl-camp by default — a sitting belongs to the folder you ran it in. XRPL_CAMP_HOME overrides that, and xrpl-camp status --detail prints the resolved absolute path.
Security
Your seed is stored locally in .xrpl-camp/wallet.json (owner-only on POSIX) and is never included in the certificate or proof pack — generation refuses to write an artifact containing one.
This tool defaults to the XRPL Testnet, where test XRP has no real value, and refuses non-Testnet endpoints unless you explicitly opt out. No telemetry, no analytics, no phone-home.
See SECURITY.md.
Threat Model
| Threat | Mitigation |
|---|---|
| Seed leaked into an artifact | Generation runs a seed check built on xrpl-py's own decode_seed and refuses to write the file if it trips |
| Seed committed to git | .xrpl-camp/ is gitignored in this repo; state is written to your working directory, so add it to your own .gitignore |
| Seed readable by other users | Wallet file 0600, state directory 0700 on POSIX |
| Learner pastes a secret into a public memo | Memo text is scanned for seed-shaped strings and refused before submission |
| Testnet seed reused on Mainnet | Warned at wallet creation; the tool refuses non-Testnet endpoints by default |
| Proof pack tampering | SHA-256 detects casual edits; --online detects a re-sealed forgery by asking the ledger |
| Verifying against an attacker's endpoint | --online never uses the endpoint named in the pack under test |
| Diagnostics leaking your identity | support-bundle redacts home directory and account name |
For Workshops and Classrooms
- One command per learner.
npx,pipx, or the container — no shared setup. - Failure is free.
xrpl-camp tryteaches the failure modes without spending anything, so a learner who breaks something on purpose learns more than one who doesn't. - Facilitator triage.
status --detailshows wallet, endpoint and state directory.self-checkprobes the actual connection instead of reporting a hopeful OK. - Verify the whole room at once.
proof verify <folder> --onlinechecks every learner's pack against the ledger. - Rate limits are real. Thirty people hitting one faucet will meet it; the tool retries with backoff and says so rather than blaming your wifi.
Development
git clone https://github.com/mcp-tool-shop-org/xrpl-camp.git
cd xrpl-camp
uv sync --dev
bash scripts/verify.sh # lint + tests + build + smoke
License
MIT
Built by MCP Tool Shop
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xrpl_camp-1.4.0.tar.gz.
File metadata
- Download URL: xrpl_camp-1.4.0.tar.gz
- Upload date:
- Size: 245.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb4892f6c547e54d2513a53c1383b043d1a0c599a5162b0d2ef6d4d931fe6d96
|
|
| MD5 |
eabe38b768a8534870b23a068f3c55fe
|
|
| BLAKE2b-256 |
943d8bf9c685435d50e30623626b0b735a4659d1f63369721d8035419ff70da8
|
Provenance
The following attestation bundles were made for xrpl_camp-1.4.0.tar.gz:
Publisher:
publish.yml on mcp-tool-shop-org/xrpl-camp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xrpl_camp-1.4.0.tar.gz -
Subject digest:
eb4892f6c547e54d2513a53c1383b043d1a0c599a5162b0d2ef6d4d931fe6d96 - Sigstore transparency entry: 2766271517
- Sigstore integration time:
-
Permalink:
mcp-tool-shop-org/xrpl-camp@64a73999138841dc17b1b8238643123369b76530 -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/mcp-tool-shop-org
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@64a73999138841dc17b1b8238643123369b76530 -
Trigger Event:
push
-
Statement type:
File details
Details for the file xrpl_camp-1.4.0-py3-none-any.whl.
File metadata
- Download URL: xrpl_camp-1.4.0-py3-none-any.whl
- Upload date:
- Size: 135.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44ba21d3c02335fd761cc766c7faea8b872c4df9b934ee835b773698ec94dc7a
|
|
| MD5 |
32269f2df82206e86d4c4f4b6d00a807
|
|
| BLAKE2b-256 |
7a8a4623b2651ccafd6eae0f350ce93a7c90c225e33e2b048477a4cf4524c860
|
Provenance
The following attestation bundles were made for xrpl_camp-1.4.0-py3-none-any.whl:
Publisher:
publish.yml on mcp-tool-shop-org/xrpl-camp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xrpl_camp-1.4.0-py3-none-any.whl -
Subject digest:
44ba21d3c02335fd761cc766c7faea8b872c4df9b934ee835b773698ec94dc7a - Sigstore transparency entry: 2766271572
- Sigstore integration time:
-
Permalink:
mcp-tool-shop-org/xrpl-camp@64a73999138841dc17b1b8238643123369b76530 -
Branch / Tag:
refs/tags/v1.4.0 - Owner: https://github.com/mcp-tool-shop-org
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@64a73999138841dc17b1b8238643123369b76530 -
Trigger Event:
push
-
Statement type: