xrpl-lab 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- xrpl_lab-1.0.3/.github/workflows/ci.yml +51 -0
- xrpl_lab-1.0.3/.github/workflows/pages.yml +50 -0
- xrpl_lab-1.0.3/.github/workflows/release-binaries.yml +85 -0
- xrpl_lab-1.0.3/.github/workflows/smoke.yml +70 -0
- xrpl_lab-1.0.3/.gitignore +36 -0
- xrpl_lab-1.0.3/CHANGELOG.md +194 -0
- xrpl_lab-1.0.3/LICENSE +21 -0
- xrpl_lab-1.0.3/PKG-INFO +164 -0
- xrpl_lab-1.0.3/README.es.md +135 -0
- xrpl_lab-1.0.3/README.fr.md +135 -0
- xrpl_lab-1.0.3/README.hi.md +133 -0
- xrpl_lab-1.0.3/README.it.md +135 -0
- xrpl_lab-1.0.3/README.ja.md +133 -0
- xrpl_lab-1.0.3/README.md +135 -0
- xrpl_lab-1.0.3/README.pt-BR.md +135 -0
- xrpl_lab-1.0.3/README.zh.md +135 -0
- xrpl_lab-1.0.3/SECURITY.md +57 -0
- xrpl_lab-1.0.3/SHIP_GATE.md +82 -0
- xrpl_lab-1.0.3/docs/dex_notes.md +63 -0
- xrpl_lab-1.0.3/modules/account_hygiene.md +161 -0
- xrpl_lab-1.0.3/modules/amm_liquidity_101.md +174 -0
- xrpl_lab-1.0.3/modules/dex_inventory_guardrails.md +129 -0
- xrpl_lab-1.0.3/modules/dex_literacy.md +120 -0
- xrpl_lab-1.0.3/modules/dex_market_making_101.md +170 -0
- xrpl_lab-1.0.3/modules/dex_vs_amm_risk_literacy.md +188 -0
- xrpl_lab-1.0.3/modules/failure_literacy.md +95 -0
- xrpl_lab-1.0.3/modules/receipt_audit.md +100 -0
- xrpl_lab-1.0.3/modules/receipt_literacy.md +73 -0
- xrpl_lab-1.0.3/modules/reserves_101.md +112 -0
- xrpl_lab-1.0.3/modules/trust_line_failures.md +108 -0
- xrpl_lab-1.0.3/modules/trust_lines_101.md +111 -0
- xrpl_lab-1.0.3/presets/strategy_compare.json +8 -0
- xrpl_lab-1.0.3/presets/strategy_inv.json +8 -0
- xrpl_lab-1.0.3/presets/strategy_mm101.json +8 -0
- xrpl_lab-1.0.3/pyproject.toml +53 -0
- xrpl_lab-1.0.3/site/astro.config.mjs +29 -0
- xrpl_lab-1.0.3/site/package-lock.json +7539 -0
- xrpl_lab-1.0.3/site/package.json +18 -0
- xrpl_lab-1.0.3/site/src/components/dashboard/JsonViewer.astro +36 -0
- xrpl_lab-1.0.3/site/src/components/dashboard/LevelBadge.astro +17 -0
- xrpl_lab-1.0.3/site/src/components/dashboard/ModuleCard.astro +32 -0
- xrpl_lab-1.0.3/site/src/components/dashboard/ProgressBar.astro +25 -0
- xrpl_lab-1.0.3/site/src/components/dashboard/StatusCard.astro +31 -0
- xrpl_lab-1.0.3/site/src/content/docs/handbook/artifacts.md +91 -0
- xrpl_lab-1.0.3/site/src/content/docs/handbook/beginners.md +112 -0
- xrpl_lab-1.0.3/site/src/content/docs/handbook/commands.md +67 -0
- xrpl_lab-1.0.3/site/src/content/docs/handbook/getting-started.md +77 -0
- xrpl_lab-1.0.3/site/src/content/docs/handbook/index.md +60 -0
- xrpl_lab-1.0.3/site/src/content/docs/handbook/modules.md +59 -0
- xrpl_lab-1.0.3/site/src/content.config.ts +7 -0
- xrpl_lab-1.0.3/site/src/layouts/DashboardLayout.astro +134 -0
- xrpl_lab-1.0.3/site/src/lib/api.ts +160 -0
- xrpl_lab-1.0.3/site/src/pages/app/404.astro +28 -0
- xrpl_lab-1.0.3/site/src/pages/app/artifacts.astro +171 -0
- xrpl_lab-1.0.3/site/src/pages/app/doctor.astro +131 -0
- xrpl_lab-1.0.3/site/src/pages/app/index.astro +232 -0
- xrpl_lab-1.0.3/site/src/pages/app/modules/[id].astro +220 -0
- xrpl_lab-1.0.3/site/src/pages/app/modules/index.astro +131 -0
- xrpl_lab-1.0.3/site/src/pages/app/run/[id].astro +382 -0
- xrpl_lab-1.0.3/site/src/pages/index.astro +33 -0
- xrpl_lab-1.0.3/site/src/site-config.ts +83 -0
- xrpl_lab-1.0.3/site/src/styles/global.css +3 -0
- xrpl_lab-1.0.3/site/src/styles/starlight-custom.css +17 -0
- xrpl_lab-1.0.3/site/tsconfig.json +5 -0
- xrpl_lab-1.0.3/tests/__init__.py +0 -0
- xrpl_lab-1.0.3/tests/test_amm.py +392 -0
- xrpl_lab-1.0.3/tests/test_audit.py +481 -0
- xrpl_lab-1.0.3/tests/test_cli.py +285 -0
- xrpl_lab-1.0.3/tests/test_dex.py +215 -0
- xrpl_lab-1.0.3/tests/test_doctor.py +134 -0
- xrpl_lab-1.0.3/tests/test_errors.py +179 -0
- xrpl_lab-1.0.3/tests/test_feedback.py +63 -0
- xrpl_lab-1.0.3/tests/test_hygiene.py +200 -0
- xrpl_lab-1.0.3/tests/test_modules.py +126 -0
- xrpl_lab-1.0.3/tests/test_reporting.py +134 -0
- xrpl_lab-1.0.3/tests/test_reserves.py +153 -0
- xrpl_lab-1.0.3/tests/test_runner_ws.py +300 -0
- xrpl_lab-1.0.3/tests/test_send_fund.py +116 -0
- xrpl_lab-1.0.3/tests/test_server.py +446 -0
- xrpl_lab-1.0.3/tests/test_state.py +125 -0
- xrpl_lab-1.0.3/tests/test_strategy.py +579 -0
- xrpl_lab-1.0.3/tests/test_transport.py +78 -0
- xrpl_lab-1.0.3/tests/test_trust_line.py +201 -0
- xrpl_lab-1.0.3/tests/test_verify.py +145 -0
- xrpl_lab-1.0.3/tests/test_wallet.py +138 -0
- xrpl_lab-1.0.3/verify.sh +15 -0
- xrpl_lab-1.0.3/xrpl_lab/__init__.py +3 -0
- xrpl_lab-1.0.3/xrpl_lab/__main__.py +13 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/__init__.py +0 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/amm.py +214 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/dex.py +120 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/fund.py +10 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/reserves.py +120 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/send.py +21 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/strategy.py +324 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/trust_line.py +152 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/verify.py +72 -0
- xrpl_lab-1.0.3/xrpl_lab/actions/wallet.py +71 -0
- xrpl_lab-1.0.3/xrpl_lab/api/__init__.py +0 -0
- xrpl_lab-1.0.3/xrpl_lab/api/routes.py +180 -0
- xrpl_lab-1.0.3/xrpl_lab/api/runner_ws.py +247 -0
- xrpl_lab-1.0.3/xrpl_lab/audit.py +430 -0
- xrpl_lab-1.0.3/xrpl_lab/cli.py +674 -0
- xrpl_lab-1.0.3/xrpl_lab/doctor.py +324 -0
- xrpl_lab-1.0.3/xrpl_lab/errors.py +100 -0
- xrpl_lab-1.0.3/xrpl_lab/feedback.py +98 -0
- xrpl_lab-1.0.3/xrpl_lab/modules.py +156 -0
- xrpl_lab-1.0.3/xrpl_lab/reporting.py +182 -0
- xrpl_lab-1.0.3/xrpl_lab/runner.py +1627 -0
- xrpl_lab-1.0.3/xrpl_lab/server.py +38 -0
- xrpl_lab-1.0.3/xrpl_lab/state.py +188 -0
- xrpl_lab-1.0.3/xrpl_lab/transport/__init__.py +0 -0
- xrpl_lab-1.0.3/xrpl_lab/transport/base.py +255 -0
- xrpl_lab-1.0.3/xrpl_lab/transport/dry_run.py +657 -0
- xrpl_lab-1.0.3/xrpl_lab/transport/xrpl_testnet.py +846 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
paths:
|
|
6
|
+
- "xrpl_lab/**"
|
|
7
|
+
- "modules/**"
|
|
8
|
+
- "tests/**"
|
|
9
|
+
- "pyproject.toml"
|
|
10
|
+
- ".github/workflows/**"
|
|
11
|
+
pull_request:
|
|
12
|
+
paths:
|
|
13
|
+
- "xrpl_lab/**"
|
|
14
|
+
- "modules/**"
|
|
15
|
+
- "tests/**"
|
|
16
|
+
- "pyproject.toml"
|
|
17
|
+
- ".github/workflows/**"
|
|
18
|
+
workflow_dispatch:
|
|
19
|
+
|
|
20
|
+
concurrency:
|
|
21
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
22
|
+
cancel-in-progress: true
|
|
23
|
+
|
|
24
|
+
permissions:
|
|
25
|
+
contents: read
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
lint-and-test:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
strategy:
|
|
31
|
+
matrix:
|
|
32
|
+
python-version: ["3.11", "3.12"]
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
35
|
+
|
|
36
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
37
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: ${{ matrix.python-version }}
|
|
40
|
+
|
|
41
|
+
- name: Install dependencies
|
|
42
|
+
run: |
|
|
43
|
+
python -m pip install --upgrade pip
|
|
44
|
+
pip install -e ".[dev]" || pip install -e .
|
|
45
|
+
pip install ruff pytest pytest-asyncio
|
|
46
|
+
|
|
47
|
+
- name: Lint with ruff
|
|
48
|
+
run: ruff check xrpl_lab/ tests/
|
|
49
|
+
|
|
50
|
+
- name: Run tests
|
|
51
|
+
run: pytest tests/ -v --tb=short
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Deploy site to GitHub Pages
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- 'site/**'
|
|
8
|
+
- '.github/workflows/pages.yml'
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
22
|
+
|
|
23
|
+
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: 22
|
|
26
|
+
|
|
27
|
+
- name: Install site dependencies
|
|
28
|
+
working-directory: site
|
|
29
|
+
run: npm ci
|
|
30
|
+
|
|
31
|
+
- name: Build site
|
|
32
|
+
working-directory: site
|
|
33
|
+
run: npm run build
|
|
34
|
+
|
|
35
|
+
- uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
|
|
36
|
+
with:
|
|
37
|
+
path: site/dist
|
|
38
|
+
|
|
39
|
+
deploy:
|
|
40
|
+
needs: build
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
permissions:
|
|
43
|
+
pages: write
|
|
44
|
+
id-token: write
|
|
45
|
+
environment:
|
|
46
|
+
name: github-pages
|
|
47
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
48
|
+
steps:
|
|
49
|
+
- id: deployment
|
|
50
|
+
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Build platform binaries for npm distribution via @mcptoolshop/npm-launcher.
|
|
2
|
+
# Asset naming convention (locked):
|
|
3
|
+
# xrpl-lab-<version>-<os>-<arch>[.exe]
|
|
4
|
+
# checksums-<version>.txt
|
|
5
|
+
|
|
6
|
+
name: Release Binaries
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
release:
|
|
10
|
+
types: [published]
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
strategy:
|
|
20
|
+
matrix:
|
|
21
|
+
include:
|
|
22
|
+
- os: ubuntu-latest
|
|
23
|
+
target: linux-x64
|
|
24
|
+
ext: ""
|
|
25
|
+
- os: macos-latest
|
|
26
|
+
target: darwin-arm64
|
|
27
|
+
ext: ""
|
|
28
|
+
# darwin-x64 omitted: macos-13 deprecated, arm64 binary works via Rosetta
|
|
29
|
+
- os: windows-latest
|
|
30
|
+
target: win-x64
|
|
31
|
+
ext: ".exe"
|
|
32
|
+
runs-on: ${{ matrix.os }}
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
35
|
+
|
|
36
|
+
- uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3
|
|
37
|
+
|
|
38
|
+
- run: uv python install 3.12
|
|
39
|
+
|
|
40
|
+
- run: uv venv
|
|
41
|
+
|
|
42
|
+
- name: Install dependencies + PyInstaller
|
|
43
|
+
run: uv pip install . "pyinstaller>=6.9.0"
|
|
44
|
+
|
|
45
|
+
- name: Build binary
|
|
46
|
+
shell: bash
|
|
47
|
+
run: |
|
|
48
|
+
VERSION=${GITHUB_REF_NAME#v}
|
|
49
|
+
uv run pyinstaller --onefile --name "xrpl-lab" --console \
|
|
50
|
+
--collect-submodules rich \
|
|
51
|
+
--collect-submodules pydantic \
|
|
52
|
+
--collect-data xrpl \
|
|
53
|
+
--add-data "modules:modules" \
|
|
54
|
+
xrpl_lab/__main__.py
|
|
55
|
+
OUTNAME="xrpl-lab-${VERSION}-${{ matrix.target }}${{ matrix.ext }}"
|
|
56
|
+
mv "dist/xrpl-lab${{ matrix.ext }}" "dist/${OUTNAME}"
|
|
57
|
+
echo "ASSET_NAME=${OUTNAME}" >> "$GITHUB_ENV"
|
|
58
|
+
|
|
59
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
60
|
+
with:
|
|
61
|
+
name: binary-${{ matrix.target }}
|
|
62
|
+
path: dist/${{ env.ASSET_NAME }}
|
|
63
|
+
|
|
64
|
+
release:
|
|
65
|
+
needs: build
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
permissions:
|
|
68
|
+
contents: write
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
|
71
|
+
with:
|
|
72
|
+
path: artifacts
|
|
73
|
+
merge-multiple: true
|
|
74
|
+
|
|
75
|
+
- name: Generate checksums
|
|
76
|
+
shell: bash
|
|
77
|
+
run: |
|
|
78
|
+
VERSION=${GITHUB_REF_NAME#v}
|
|
79
|
+
cd artifacts
|
|
80
|
+
sha256sum * > "checksums-${VERSION}.txt"
|
|
81
|
+
cat "checksums-${VERSION}.txt"
|
|
82
|
+
|
|
83
|
+
- uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2
|
|
84
|
+
with:
|
|
85
|
+
files: artifacts/*
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
name: Smoke Test (Testnet)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
concurrency:
|
|
7
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
8
|
+
cancel-in-progress: true
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
testnet-smoke:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
timeout-minutes: 5
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
19
|
+
|
|
20
|
+
- name: Set up Python 3.12
|
|
21
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
|
|
25
|
+
- name: Install xrpl-lab
|
|
26
|
+
run: |
|
|
27
|
+
python -m pip install --upgrade pip
|
|
28
|
+
pip install -e .
|
|
29
|
+
pip install httpx
|
|
30
|
+
|
|
31
|
+
- name: Run smoke test
|
|
32
|
+
run: |
|
|
33
|
+
python -c "
|
|
34
|
+
import asyncio
|
|
35
|
+
import json
|
|
36
|
+
from xrpl.wallet import Wallet
|
|
37
|
+
from xrpl_lab.transport.xrpl_testnet import XRPLTestnetTransport
|
|
38
|
+
|
|
39
|
+
async def smoke():
|
|
40
|
+
transport = XRPLTestnetTransport()
|
|
41
|
+
|
|
42
|
+
# 1. Check network
|
|
43
|
+
info = await transport.get_network_info()
|
|
44
|
+
assert info.connected, f'RPC not connected: {info.rpc_url}'
|
|
45
|
+
print(f'RPC connected: ledger {info.ledger_index}')
|
|
46
|
+
|
|
47
|
+
# 2. Create temp wallet and fund
|
|
48
|
+
wallet = Wallet.create()
|
|
49
|
+
print(f'Temp wallet: {wallet.address}')
|
|
50
|
+
|
|
51
|
+
fund = await transport.fund_from_faucet(wallet.address)
|
|
52
|
+
assert fund.success, f'Faucet failed: {fund.message}'
|
|
53
|
+
print(f'Funded: {fund.balance} XRP')
|
|
54
|
+
|
|
55
|
+
# 3. Send self-payment
|
|
56
|
+
result = await transport.submit_payment(
|
|
57
|
+
wallet.seed, wallet.address, '10', 'XRPLLAB|SMOKE'
|
|
58
|
+
)
|
|
59
|
+
assert result.success, f'Payment failed: {result.error}'
|
|
60
|
+
print(f'Payment OK: {result.txid[:24]}...')
|
|
61
|
+
|
|
62
|
+
# 4. Verify tx
|
|
63
|
+
tx = await transport.fetch_tx(result.txid)
|
|
64
|
+
assert tx.result_code == 'tesSUCCESS', f'Verify failed: {tx.result_code}'
|
|
65
|
+
print(f'Verified: {tx.result_code}, ledger {tx.ledger_index}')
|
|
66
|
+
|
|
67
|
+
print('Smoke test passed.')
|
|
68
|
+
|
|
69
|
+
asyncio.run(smoke())
|
|
70
|
+
"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
dist/
|
|
6
|
+
build/
|
|
7
|
+
*.egg
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv/
|
|
11
|
+
venv/
|
|
12
|
+
|
|
13
|
+
# XRPL Lab user state (never commit)
|
|
14
|
+
.xrpl-lab/
|
|
15
|
+
|
|
16
|
+
# IDE
|
|
17
|
+
.vscode/
|
|
18
|
+
.idea/
|
|
19
|
+
|
|
20
|
+
# OS
|
|
21
|
+
.DS_Store
|
|
22
|
+
Thumbs.db
|
|
23
|
+
|
|
24
|
+
# Testing / Coverage
|
|
25
|
+
.coverage
|
|
26
|
+
htmlcov/
|
|
27
|
+
.pytest_cache/
|
|
28
|
+
|
|
29
|
+
# Ruff
|
|
30
|
+
.ruff_cache/
|
|
31
|
+
site/.astro/
|
|
32
|
+
site/dist/
|
|
33
|
+
site/node_modules/
|
|
34
|
+
.polyglot-cache.json
|
|
35
|
+
.astro/
|
|
36
|
+
node_modules/
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.3 — 2026-03-29
|
|
4
|
+
|
|
5
|
+
Dogfood Swarm — comprehensive health pass, web dashboard, and 127 new tests.
|
|
6
|
+
|
|
7
|
+
### Health Pass (Stage A-C)
|
|
8
|
+
- Fixed 9 HIGH-severity logic bugs (trust line, AMM, runner, state, doctor, audit)
|
|
9
|
+
- SHA-pinned all CI workflow actions across 4 workflows
|
|
10
|
+
- Added defensive guards for all float/int conversions on network data
|
|
11
|
+
- Exception boundary around module runner with state preservation
|
|
12
|
+
- Graceful faucet failure handling with actionable messages
|
|
13
|
+
- Corrupted state backup before reset
|
|
14
|
+
- Step-level progress indicators and retry visibility
|
|
15
|
+
- Wired XRPL_LAB_HOME env var for state directory override
|
|
16
|
+
- Added `network_name` property to Transport ABC
|
|
17
|
+
|
|
18
|
+
### Web Dashboard
|
|
19
|
+
- FastAPI server layer with 9 REST endpoints + WebSocket module runner
|
|
20
|
+
- `xrpl-lab serve` command starts API server with --dry-run support
|
|
21
|
+
- Astro dashboard: module catalog, interactive runner, artifact viewer, doctor page
|
|
22
|
+
- Real-time module execution via WebSocket with terminal-style output
|
|
23
|
+
- 36-page site build (landing page + handbook + dashboard)
|
|
24
|
+
|
|
25
|
+
### Feature Improvements
|
|
26
|
+
- Module ordering by explicit order field (not alphabetical)
|
|
27
|
+
- AMM modules require --dry-run with clear warning
|
|
28
|
+
- Prerequisite enforcement with --force bypass
|
|
29
|
+
- Richer module reports with action outcomes
|
|
30
|
+
- Certificate includes titles, tx counts, summary line
|
|
31
|
+
- `audit --no-pack` option to skip JSON pack
|
|
32
|
+
- Fixed dex_market_making_101 step ordering bug
|
|
33
|
+
|
|
34
|
+
### Test Coverage
|
|
35
|
+
- 228 → 355 tests (+127)
|
|
36
|
+
- New test files: wallet, verify, send/fund, errors, server, runner_ws, CLI serve
|
|
37
|
+
- Fixed dry-run fidelity: per-address balances, instance-level counter, valid base58
|
|
38
|
+
|
|
39
|
+
## 1.0.2 — 2026-03-25
|
|
40
|
+
|
|
41
|
+
- SHA-pinned CI actions (checkout, setup-python)
|
|
42
|
+
- Version test now uses dynamic `__version__` instead of hardcoded string
|
|
43
|
+
|
|
44
|
+
## 1.0.1 — 2026-03-03
|
|
45
|
+
|
|
46
|
+
Binary launcher fix: Windows UTF-8 encoding for Rich console output.
|
|
47
|
+
|
|
48
|
+
- Fix: `UnicodeEncodeError` on Windows when Rich renders Unicode symbols (○, ✓, ✗)
|
|
49
|
+
- `__main__.py` reconfigures stdout/stderr to UTF-8 before any imports
|
|
50
|
+
- PyInstaller + npm-launcher: `npx @mcptoolshop/xrpl-lab` now works on Windows
|
|
51
|
+
|
|
52
|
+
## 1.0.0 — 2026-03-03
|
|
53
|
+
|
|
54
|
+
Shipcheck + Full Treatment — production-ready release.
|
|
55
|
+
|
|
56
|
+
- Structured error contract: `LabError` + `LabException` with code/message/hint/cause/retryable
|
|
57
|
+
- Exit code mapping: INPUT/CONFIG/STATE → 1, IO/DEP/RUNTIME → 2, PARTIAL → 3
|
|
58
|
+
- Verify script: `verify.sh` (lint + test + build in one command)
|
|
59
|
+
- README: logo, badges, full 12-module table, trust model paragraph
|
|
60
|
+
- SECURITY.md: complete security policy with trust boundaries
|
|
61
|
+
- SHIP_GATE.md: all hard gates (A-D) passing
|
|
62
|
+
- Landing page: @mcptoolshop/site-theme
|
|
63
|
+
- Translations: 8 languages via polyglot-mcp
|
|
64
|
+
|
|
65
|
+
## 0.10.0 — 2026-03-03
|
|
66
|
+
|
|
67
|
+
Strategy Track Complete: Inventory Guardrails + DEX vs AMM Capstone.
|
|
68
|
+
|
|
69
|
+
- New module: DEX Inventory Guardrails — threshold-based quoting, only safe sides placed
|
|
70
|
+
- New module: DEX vs AMM Risk Literacy — side-by-side comparison of DEX and AMM strategies
|
|
71
|
+
- `check_inventory` — evaluate XRP spendable and token balance against thresholds
|
|
72
|
+
- `InventoryCheck` dataclass with `can_bid`, `can_ask`, `sides_allowed`
|
|
73
|
+
- Runner: `check_inventory` and `place_safe_sides` action handlers
|
|
74
|
+
- New command: `xrpl-lab last-run` — show last module run info + audit command
|
|
75
|
+
- Module completion panel now shows audit verification one-liner
|
|
76
|
+
- Audit presets: `presets/strategy_inv.json`, `presets/strategy_compare.json`
|
|
77
|
+
- 12 modules total — full strategy track (beginner → intermediate → advanced)
|
|
78
|
+
|
|
79
|
+
## 0.9.0 — 2026-03-02
|
|
80
|
+
|
|
81
|
+
DEX Market Making 101: Strategy Track Foundations.
|
|
82
|
+
|
|
83
|
+
- New module: DEX Market Making 101 — bid/ask offers, position snapshots, cleanup hygiene
|
|
84
|
+
- Strategy foundations: `PositionSnapshot`, `PositionComparison`, `HygieneSummary`
|
|
85
|
+
- `snapshot_position` — extended account state (trust lines, offers, owner count, spendable estimate)
|
|
86
|
+
- `compare_positions` — track owner count and offer deltas between snapshots
|
|
87
|
+
- `cancel_module_offers` — batch cancel strategy offers by sequence
|
|
88
|
+
- `hygiene_summary` — end-of-module cleanup verification (offers cleared, owner count baseline)
|
|
89
|
+
- `write_last_run` — outputs `last_run_txids.txt` + `last_run_meta.json` for audit integration
|
|
90
|
+
- Strategy memo convention: `XRPLLAB|STRAT|<MODULE>|<ACTION>|<RUNID>`
|
|
91
|
+
- Audit preset: `presets/strategy_mm101.json` (OfferCreate/OfferCancel types, memo prefix)
|
|
92
|
+
- Runner: 8 new action handlers (snapshot_position, strategy_offer_bid/ask, verify/cancel module offers, verify_position_delta, hygiene_summary)
|
|
93
|
+
|
|
94
|
+
## 0.8.0 — 2026-03-02
|
|
95
|
+
|
|
96
|
+
AMM Liquidity 101: Providing Liquidity and Earning Fees.
|
|
97
|
+
|
|
98
|
+
- New module: AMM Liquidity 101 — create pool, deposit, verify LP, withdraw, verify
|
|
99
|
+
- Transport: `get_amm_info`, `submit_amm_create`, `submit_amm_deposit`, `submit_amm_withdraw`, `get_lp_token_balance`
|
|
100
|
+
- `AmmInfo` dataclass: pool balances, LP token, trading fee
|
|
101
|
+
- Dry-run transport: full AMM simulation (pool registry, LP minting/burning, proportional math)
|
|
102
|
+
- Actions: `ensure_amm_pair`, `amm_deposit`, `amm_withdraw`, `verify_lp_received`, `verify_withdrawal`
|
|
103
|
+
- Runner: 7 new AMM action handlers
|
|
104
|
+
- Testnet transport: AMM stubs (dry-run only for now, pending AMM amendment availability)
|
|
105
|
+
|
|
106
|
+
## 0.7.0 — 2026-03-02
|
|
107
|
+
|
|
108
|
+
Audit Mode: Verify Receipts at Scale.
|
|
109
|
+
|
|
110
|
+
- New command: `xrpl-lab audit --txids txids.txt` — batch verify transactions
|
|
111
|
+
- Expectation configs: JSON with defaults + per-tx overrides (require_validated, require_success, memo_prefix, types_allowed, expected_engine_result)
|
|
112
|
+
- Failure vocabulary: NOT_FOUND, NOT_VALIDATED, ENGINE_RESULT_MISMATCH, TYPE_DISALLOWED, MEMO_MISSING
|
|
113
|
+
- Reports: Markdown table, CSV, JSON audit pack with SHA-256 integrity hash
|
|
114
|
+
- New module: Receipt Audit — hands-on audit mode walkthrough
|
|
115
|
+
- Dry-run transport: tx fixture support for deterministic audit testing
|
|
116
|
+
- Runner: `run_audit` action handler for module-driven audits
|
|
117
|
+
|
|
118
|
+
## 0.6.0 — 2026-03-03
|
|
119
|
+
|
|
120
|
+
Account Hygiene: Freeing Reserves and Cleaning Up Objects.
|
|
121
|
+
|
|
122
|
+
- New module: Account Hygiene — create objects, cancel offers, remove trust lines, verify cleanup
|
|
123
|
+
- Trust line removal: `submit_trust_set` with `limit=0` removes trust lines (balance must be 0)
|
|
124
|
+
- Dry-run transport: smart trust line handling — no duplicates, limit updates, owner count decrement on removal
|
|
125
|
+
- Actions: `remove_trust_line`, `verify_trust_line_removed`
|
|
126
|
+
- Runner: `remove_trust_line` and `verify_trust_line_removed` action handlers
|
|
127
|
+
- Non-zero balance guard: removal fails with `tecNO_PERMISSION` if tokens still held
|
|
128
|
+
|
|
129
|
+
## 0.5.0 — 2026-03-02
|
|
130
|
+
|
|
131
|
+
Reserves 101: Where Your XRP "Went" — account snapshots and owner count tracking.
|
|
132
|
+
|
|
133
|
+
- New module: Reserves 101 — snapshot before/after, owner count delta, reserve explanation
|
|
134
|
+
- Transport: `get_account_info` returns `AccountSnapshot` (balance, owner count, sequence)
|
|
135
|
+
- `AccountSnapshot` dataclass for point-in-time account state
|
|
136
|
+
- Actions: `snapshot_account`, `compare_snapshots` with `ReserveComparison` result
|
|
137
|
+
- Runner: `snapshot_account` and `verify_reserve_change` action handlers
|
|
138
|
+
- Dry-run transport tracks `_owner_count` across trust lines and offers
|
|
139
|
+
- Helper: `_drops_to_xrp` for human-readable balance display
|
|
140
|
+
|
|
141
|
+
## 0.4.0 — 2026-03-02
|
|
142
|
+
|
|
143
|
+
DEX Literacy module — offers, order books, and cancellations.
|
|
144
|
+
|
|
145
|
+
- New module: DEX Literacy — create offer, verify active, cancel, verify absent
|
|
146
|
+
- Transport: `submit_offer_create`, `submit_offer_cancel`, `get_account_offers`
|
|
147
|
+
- `OfferInfo` dataclass for DEX offer representation
|
|
148
|
+
- Actions: `create_offer`, `cancel_offer`, `verify_offer_present`, `verify_offer_absent`
|
|
149
|
+
- Runner: handles DEX action types (create_offer, cancel_offer, verify_offer_*)
|
|
150
|
+
- Dry-run transport tracks offers with sequence numbers and supports cancellation
|
|
151
|
+
- DEX notes: `docs/dex_notes.md` — taker pays/gets, partial fills, why cancel matters
|
|
152
|
+
|
|
153
|
+
## 0.3.1 — 2026-03-03
|
|
154
|
+
|
|
155
|
+
Debugging Reality: trust line failure module + ecosystem alignment.
|
|
156
|
+
|
|
157
|
+
- New module: Debugging Trust Lines — intentional failure, error decode, fix, verify
|
|
158
|
+
- Dry-run transport validates trust lines realistically (no trust line = tecPATH_DRY)
|
|
159
|
+
- `xrpl-lab self-check` — alias for `doctor` (ecosystem verb alignment)
|
|
160
|
+
- Proof pack receipt table: human-readable per-tx summary (txid, module, status, timestamp)
|
|
161
|
+
- Runner: `issue_token_expect_fail` action with result code explanation
|
|
162
|
+
|
|
163
|
+
## 0.3.0 — 2026-03-02
|
|
164
|
+
|
|
165
|
+
Trust Lines module + feedback command.
|
|
166
|
+
|
|
167
|
+
- New module: Trust Lines 101 — create issuer, set trust line, issue tokens, verify
|
|
168
|
+
- Transport: `submit_trust_set`, `submit_issued_payment`, `get_trust_lines`
|
|
169
|
+
- Trust line actions: `set_trust_line`, `issue_token`, `verify_trust_line`
|
|
170
|
+
- `xrpl-lab feedback` — generates issue-ready markdown (doctor + env + proof pack)
|
|
171
|
+
- Runner handles trust line action types (create_issuer_wallet, fund_issuer, etc.)
|
|
172
|
+
|
|
173
|
+
## 0.2.0 — 2026-03-02
|
|
174
|
+
|
|
175
|
+
Clinic & Proof Pack release.
|
|
176
|
+
|
|
177
|
+
- `xrpl-lab doctor` — checklist diagnostic (wallet, state, RPC, faucet, env, last error)
|
|
178
|
+
- XRPL result code reference with categories + actionable hints
|
|
179
|
+
- Transport: timeouts, retries (max 2), friendly error messages
|
|
180
|
+
- Proof pack upgrade: per-tx detail, endpoint, success/fail counts
|
|
181
|
+
- `status` shows env overrides (XRPL_LAB_RPC_URL, XRPL_LAB_FAUCET_URL)
|
|
182
|
+
- `reset` requires "RESET" (uppercase), adds `--keep-wallet` flag
|
|
183
|
+
- Manual testnet smoke test workflow (workflow_dispatch)
|
|
184
|
+
|
|
185
|
+
## 0.1.0 — 2026-03-02
|
|
186
|
+
|
|
187
|
+
Initial release.
|
|
188
|
+
|
|
189
|
+
- 2 modules: Receipt Literacy, Failure Literacy
|
|
190
|
+
- CLI: `start`, `list`, `run`, `status`, `reset`, `proof-pack`, `certificate`
|
|
191
|
+
- Standalone commands: `wallet create/show`, `fund`, `send`, `verify`
|
|
192
|
+
- XRPL Testnet transport + dry-run (offline) transport
|
|
193
|
+
- Proof packs and certificates (no secrets, SHA-256 integrity hash)
|
|
194
|
+
- XRPL Camp soft-integration (certificate file detection)
|
xrpl_lab-1.0.3/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 MCP Tool Shop
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
xrpl_lab-1.0.3/PKG-INFO
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: xrpl-lab
|
|
3
|
+
Version: 1.0.3
|
|
4
|
+
Summary: XRPL training workbook — learn by doing, prove by artifact
|
|
5
|
+
Project-URL: Homepage, https://mcp-tool-shop-org.github.io/xrpl-lab/
|
|
6
|
+
Project-URL: Repository, https://github.com/mcp-tool-shop-org/xrpl-lab
|
|
7
|
+
Project-URL: Issues, https://github.com/mcp-tool-shop-org/xrpl-lab/issues
|
|
8
|
+
Author-email: mcp-tool-shop <64996768+mcp-tool-shop@users.noreply.github.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: blockchain,cli,education,training,xrpl
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Education
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Education
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Requires-Dist: click>=8.1
|
|
21
|
+
Requires-Dist: fastapi>=0.115
|
|
22
|
+
Requires-Dist: httpx>=0.27
|
|
23
|
+
Requires-Dist: pydantic>=2.0
|
|
24
|
+
Requires-Dist: pyyaml>=6.0
|
|
25
|
+
Requires-Dist: rich>=13.0
|
|
26
|
+
Requires-Dist: uvicorn>=0.30
|
|
27
|
+
Requires-Dist: xrpl-py>=4.0.0
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<p align="center">
|
|
35
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/xrpl-lab/readme.png" width="400" alt="XRPL Lab">
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
<p align="center">
|
|
39
|
+
<a href="https://github.com/mcp-tool-shop-org/xrpl-lab/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/xrpl-lab/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
40
|
+
<a href="https://github.com/mcp-tool-shop-org/xrpl-lab/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green.svg" alt="MIT License"></a>
|
|
41
|
+
<a href="https://mcp-tool-shop-org.github.io/xrpl-lab/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
XRPL training workbook — learn by doing, prove by artifact.
|
|
45
|
+
|
|
46
|
+
Each module teaches one XRPL skill and produces a verifiable artifact: a transaction ID,
|
|
47
|
+
a signed receipt, or a diagnostic report. No accounts, no fluff — just competence and receipts.
|
|
48
|
+
|
|
49
|
+
## Install
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pipx install xrpl-lab
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Or with pip:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pip install xrpl-lab
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Requires Python 3.11+.
|
|
62
|
+
|
|
63
|
+
## Quickstart
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
xrpl-lab start
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The guided launcher walks you through wallet setup, funding, and your first module.
|
|
70
|
+
|
|
71
|
+
### Offline mode
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
xrpl-lab start --dry-run
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
No network required. Simulated transactions for learning the workflow.
|
|
78
|
+
|
|
79
|
+
## Modules
|
|
80
|
+
|
|
81
|
+
12 modules across three tracks: Beginner, Intermediate, and Advanced.
|
|
82
|
+
|
|
83
|
+
| # | Module | Track | What you learn | What you prove |
|
|
84
|
+
|---|--------|-------|----------------|----------------|
|
|
85
|
+
| 1 | Receipt Literacy | Beginner | Send a payment, read every receipt field | txid + verification report |
|
|
86
|
+
| 2 | Failure Literacy | Beginner | Break a tx on purpose, diagnose, fix, resubmit | failed + fixed txid trail |
|
|
87
|
+
| 3 | Trust Lines 101 | Beginner | Create issuer, set trust line, issue tokens | trust line + token balance |
|
|
88
|
+
| 4 | Debugging Trust Lines | Beginner | Intentional trust line failure, error decode, fix | error → fix txid trail |
|
|
89
|
+
| 5 | DEX Literacy | Intermediate | Create offers, read order books, cancel | offer create + cancel txids |
|
|
90
|
+
| 6 | Reserves 101 | Intermediate | Account snapshots, owner count, reserve math | before/after snapshot delta |
|
|
91
|
+
| 7 | Account Hygiene | Intermediate | Cancel offers, remove trust lines, free reserves | cleanup verification report |
|
|
92
|
+
| 8 | Receipt Audit | Intermediate | Batch verify transactions with expectations | audit pack (MD + CSV + JSON) |
|
|
93
|
+
| 9 | AMM Liquidity 101 | Advanced | Create pool, deposit, earn LP, withdraw | AMM lifecycle txids |
|
|
94
|
+
| 10 | DEX Market Making 101 | Advanced | Bid/ask offers, position snapshots, cleanup | strategy txids + hygiene report |
|
|
95
|
+
| 11 | Inventory Guardrails | Advanced | Threshold-based quoting, safe-side-only placement | inventory check + guarded txids |
|
|
96
|
+
| 12 | DEX vs AMM Risk Literacy | Advanced | Side-by-side DEX and AMM lifecycle comparison | comparison report + audit trail |
|
|
97
|
+
|
|
98
|
+
## Commands
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
xrpl-lab start Guided launcher
|
|
102
|
+
xrpl-lab list Show all modules with status
|
|
103
|
+
xrpl-lab run <module_id> Run a specific module
|
|
104
|
+
xrpl-lab status Progress, wallet, recent txs
|
|
105
|
+
xrpl-lab proof-pack Export shareable proof pack
|
|
106
|
+
xrpl-lab certificate Export completion certificate
|
|
107
|
+
xrpl-lab doctor Run diagnostic checks
|
|
108
|
+
xrpl-lab self-check Alias for doctor
|
|
109
|
+
xrpl-lab feedback Generate issue-ready markdown
|
|
110
|
+
xrpl-lab audit Batch verify transactions
|
|
111
|
+
xrpl-lab last-run Show last module run + audit command
|
|
112
|
+
xrpl-lab reset Wipe local state (requires RESET confirmation)
|
|
113
|
+
|
|
114
|
+
xrpl-lab wallet create Create a new wallet
|
|
115
|
+
xrpl-lab wallet show Show wallet info (no secrets)
|
|
116
|
+
xrpl-lab fund Fund wallet from testnet faucet
|
|
117
|
+
xrpl-lab send --to <address> --amount <xrp> [--memo <text>] Send a payment
|
|
118
|
+
xrpl-lab verify --tx <id> Verify a transaction on-ledger
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
All commands support `--dry-run` for offline mode where applicable.
|
|
122
|
+
|
|
123
|
+
## Artifacts
|
|
124
|
+
|
|
125
|
+
**Proof pack** (`xrpl_lab_proof_pack.json`): Shareable record of completed modules,
|
|
126
|
+
transaction IDs, and explorer links. Includes a SHA-256 integrity hash. No secrets.
|
|
127
|
+
|
|
128
|
+
**Certificate** (`xrpl_lab_certificate.json`): Slim completion record.
|
|
129
|
+
|
|
130
|
+
**Reports** (`reports/*.md`): Human-readable summaries of what you did and proved.
|
|
131
|
+
|
|
132
|
+
**Audit packs** (`audit_pack_*.json`): Batch verification results with SHA-256 integrity hash.
|
|
133
|
+
|
|
134
|
+
## Security and Trust Model
|
|
135
|
+
|
|
136
|
+
**Data XRPL Lab touches:**
|
|
137
|
+
- Wallet seed (stored locally in `~/.xrpl-lab/wallet.json` with restrictive file permissions)
|
|
138
|
+
- Module progress and transaction IDs (stored in `~/.xrpl-lab/state.json`)
|
|
139
|
+
- XRPL Testnet RPC (public endpoint, transactions signed locally before submission)
|
|
140
|
+
- Testnet faucet (public HTTP, only your address is sent)
|
|
141
|
+
|
|
142
|
+
**Data XRPL Lab does NOT touch:**
|
|
143
|
+
- No mainnet. Testnet only
|
|
144
|
+
- No telemetry, analytics, or phone-home of any kind
|
|
145
|
+
- No cloud accounts, no registration, no third-party APIs
|
|
146
|
+
- No secrets in proof packs, certificates, or reports — ever
|
|
147
|
+
|
|
148
|
+
**Permissions:**
|
|
149
|
+
- Filesystem: reads/writes only `~/.xrpl-lab/` and `./.xrpl-lab/` (local workspace)
|
|
150
|
+
- Network: XRPL Testnet RPC + faucet only (both overridable via env vars, both optional with `--dry-run`)
|
|
151
|
+
- No elevated permissions required
|
|
152
|
+
|
|
153
|
+
See [SECURITY.md](SECURITY.md) for the full security policy.
|
|
154
|
+
|
|
155
|
+
## Requirements
|
|
156
|
+
|
|
157
|
+
- Python 3.11+
|
|
158
|
+
- Internet connection for testnet (or use `--dry-run` for fully offline mode)
|
|
159
|
+
|
|
160
|
+
## License
|
|
161
|
+
|
|
162
|
+
MIT
|
|
163
|
+
|
|
164
|
+
Built by [MCP Tool Shop](https://mcp-tool-shop.github.io/)
|