GENERAL TSOSUPREME COMMANDER OF CRISPY

TOKEN CONTROLS · TESTNET RESEARCH

Test the lock.
Verify the limits.

Timed token escrow and permanent issuer signing removal were tested on a separate disposable CTL token. This is a feasibility demonstration, not implemented TSO founder vesting or an independent audit.

Verified results

What the interrupted run taught us

The first run stopped because an assertion treated holder-owned escrows listed under the issuer as issuer-created obligations. Ownership was inspected and the assertion corrected. During the pause, the first escrow expired, so its release was rejected. Both expired escrows were refunded before a new maturity test passed. The evidence includes these failures; this was not a clean first-pass run.

Proposed founder vesting

The 1 billion TSO founder allocation is approved. A 12-month cliff and 24 monthly tranches remain a proposed schedule. Exact timestamps, the first release date, claim windows, cancellation recipients and recovery rules must be finalized before implementation. These tests used seconds rather than a multi-year schedule.

Token escrows require an expiry time. An unclaimed tranche can return to its sender after expiry. A production design must clearly specify who controls that sender and whether refunded tokens must be re-escrowed. A wallet label or multisignature policy alone does not enforce a time lock.

Supply controls still pending for TSO

The original 21B test TSO issuer remains under control and its founder balance remains unvested. No Mainnet TSO exists. The disabled account in this experiment issued CTL, not the project's TSO token.

Removing issuer signing authority is irreversible. Before considering it for TSO, review every issuer setting, signing path, delegate and outstanding instruction, and verify compatibility with the chosen vesting arrangement. Existing issuer-created instructions can remain executable after signing is disabled. No production supply cap is claimed here.

The subsequent read-only Mainnet feature check is recorded below. Production wallet compatibility, security and recovery procedures, freeze interactions and independent review remain outstanding.

Transaction evidence — separate CTL experiment

Testnet issuer: r9vsAMQ8mJ6Wa12HfjXzQVSK2rQsE5KLhW. These are disposable test assets, not purchase or payment addresses.

Inspect the 18 initial transaction records
  1. Enable Default Ripple — tesSUCCESS, validated ledger 20929232. View Testnet transaction ↗
  2. Enable token escrow — tesSUCCESS, validated ledger 20929234. View Testnet transaction ↗
  3. Trust line control-holder — tesSUCCESS, validated ledger 20929236. View Testnet transaction ↗
  4. Trust line control-recipient — tesSUCCESS, validated ledger 20929238. View Testnet transaction ↗
  5. Issue 1000 disposable CTL — tesSUCCESS, validated ledger 20929240. View Testnet transaction ↗
  6. Create timed 100 CTL escrow — tesSUCCESS, validated ledger 20929242. View Testnet transaction ↗
  7. Reject early release — tecNO_PERMISSION, validated ledger 20929244. View Testnet transaction ↗
  8. Reject early cancellation — tecNO_PERMISSION, validated ledger 20929245. View Testnet transaction ↗
  9. Create expiring 50 CTL escrow — tesSUCCESS, validated ledger 20929247. View Testnet transaction ↗
  10. Set known blackhole regular key — tesSUCCESS, validated ledger 20929625. View Testnet transaction ↗
  11. Disable disposable issuer master key — tesSUCCESS, validated ledger 20929627. View Testnet transaction ↗
  12. Release 100 CTL after maturity despite issuer disabled — tecNO_PERMISSION, validated ledger 20929629. View Testnet transaction ↗
  13. Refund expired escrow 20929208 — tesSUCCESS, validated ledger 20929656. View Testnet transaction ↗
  14. Refund expired escrow 20929210 — tesSUCCESS, validated ledger 20929658. View Testnet transaction ↗
  15. Create replacement 100 CTL escrow after issuer disabled — tesSUCCESS, validated ledger 20929660. View Testnet transaction ↗
  16. Reject replacement early release — tecNO_PERMISSION, validated ledger 20929662. View Testnet transaction ↗
  17. Release replacement after maturity — tesSUCCESS, validated ledger 20929675. View Testnet transaction ↗
  18. Transfer 10 CTL after issuer disabled — tesSUCCESS, validated ledger 20929677. View Testnet transaction ↗

XRPL escrow documentation · Issuer signing removal documentation

View earlier TSO tests ↗

Full 24-release rehearsal · 22 September 2026

80 checks passed across 50 validated transactions, including the expected early-release rejection. All 24 escrow amounts, recipients, maturity times and expiry times were verified before the release phase. Each release succeeded and the cumulative recipient balance was checked after every payment.

At a scale of 1 CTL to 1 million proposed TSO, the first 23 tranches contained 41.666666 CTL and the final tranche 41.666682 CTL. Final balances: sender 0 CTL, recipient 1,000 CTL; no escrows remained. The original TSO wallets were unchanged.

Maturity dates were compressed into seconds, with 24-hour claim windows. This does not test multi-year operations or implement the actual founder allocation. Expiry refunds were tested separately in the earlier experiment.

View all 50 rehearsal transaction records
  1. Consolidate existing 90 CTL for rehearsal — tesSUCCESS, ledger 20939680. Testnet transaction ↗
  2. Create tranche 1 — tesSUCCESS, ledger 20939682. Testnet transaction ↗
  3. Reject early first-tranche release — tecNO_PERMISSION, ledger 20939684. Testnet transaction ↗
  4. Create tranche 2 — tesSUCCESS, ledger 20939686. Testnet transaction ↗
  5. Create tranche 3 — tesSUCCESS, ledger 20939688. Testnet transaction ↗
  6. Create tranche 4 — tesSUCCESS, ledger 20939690. Testnet transaction ↗
  7. Create tranche 5 — tesSUCCESS, ledger 20939692. Testnet transaction ↗
  8. Create tranche 6 — tesSUCCESS, ledger 20939694. Testnet transaction ↗
  9. Create tranche 7 — tesSUCCESS, ledger 20939696. Testnet transaction ↗
  10. Create tranche 8 — tesSUCCESS, ledger 20939698. Testnet transaction ↗
  11. Create tranche 9 — tesSUCCESS, ledger 20939700. Testnet transaction ↗
  12. Create tranche 10 — tesSUCCESS, ledger 20939702. Testnet transaction ↗
  13. Create tranche 11 — tesSUCCESS, ledger 20939704. Testnet transaction ↗
  14. Create tranche 12 — tesSUCCESS, ledger 20939706. Testnet transaction ↗
  15. Create tranche 13 — tesSUCCESS, ledger 20939708. Testnet transaction ↗
  16. Create tranche 14 — tesSUCCESS, ledger 20939710. Testnet transaction ↗
  17. Create tranche 15 — tesSUCCESS, ledger 20939712. Testnet transaction ↗
  18. Create tranche 16 — tesSUCCESS, ledger 20939714. Testnet transaction ↗
  19. Create tranche 17 — tesSUCCESS, ledger 20939716. Testnet transaction ↗
  20. Create tranche 18 — tesSUCCESS, ledger 20939718. Testnet transaction ↗
  21. Create tranche 19 — tesSUCCESS, ledger 20939720. Testnet transaction ↗
  22. Create tranche 20 — tesSUCCESS, ledger 20939722. Testnet transaction ↗
  23. Create tranche 21 — tesSUCCESS, ledger 20939724. Testnet transaction ↗
  24. Create tranche 22 — tesSUCCESS, ledger 20939726. Testnet transaction ↗
  25. Create tranche 23 — tesSUCCESS, ledger 20939728. Testnet transaction ↗
  26. Create tranche 24 — tesSUCCESS, ledger 20939730. Testnet transaction ↗
  27. Release tranche 1 — tesSUCCESS, ledger 20939733. Testnet transaction ↗
  28. Release tranche 2 — tesSUCCESS, ledger 20939735. Testnet transaction ↗
  29. Release tranche 3 — tesSUCCESS, ledger 20939737. Testnet transaction ↗
  30. Release tranche 4 — tesSUCCESS, ledger 20939739. Testnet transaction ↗
  31. Release tranche 5 — tesSUCCESS, ledger 20939741. Testnet transaction ↗
  32. Release tranche 6 — tesSUCCESS, ledger 20939743. Testnet transaction ↗
  33. Release tranche 7 — tesSUCCESS, ledger 20939745. Testnet transaction ↗
  34. Release tranche 8 — tesSUCCESS, ledger 20939747. Testnet transaction ↗
  35. Release tranche 9 — tesSUCCESS, ledger 20939749. Testnet transaction ↗
  36. Release tranche 10 — tesSUCCESS, ledger 20939751. Testnet transaction ↗
  37. Release tranche 11 — tesSUCCESS, ledger 20939753. Testnet transaction ↗
  38. Release tranche 12 — tesSUCCESS, ledger 20939755. Testnet transaction ↗
  39. Release tranche 13 — tesSUCCESS, ledger 20939757. Testnet transaction ↗
  40. Release tranche 14 — tesSUCCESS, ledger 20939759. Testnet transaction ↗
  41. Release tranche 15 — tesSUCCESS, ledger 20939761. Testnet transaction ↗
  42. Release tranche 16 — tesSUCCESS, ledger 20939763. Testnet transaction ↗
  43. Release tranche 17 — tesSUCCESS, ledger 20939765. Testnet transaction ↗
  44. Release tranche 18 — tesSUCCESS, ledger 20939767. Testnet transaction ↗
  45. Release tranche 19 — tesSUCCESS, ledger 20939769. Testnet transaction ↗
  46. Release tranche 20 — tesSUCCESS, ledger 20939771. Testnet transaction ↗
  47. Release tranche 21 — tesSUCCESS, ledger 20939773. Testnet transaction ↗
  48. Release tranche 22 — tesSUCCESS, ledger 20939775. Testnet transaction ↗
  49. Release tranche 23 — tesSUCCESS, ledger 20939777. Testnet transaction ↗
  50. Release tranche 24 — tesSUCCESS, ledger 20939779. Testnet transaction ↗

Mainnet feature check · 22 September 2026

A read-only check at 2026-09-21T16:17:55.583Z confirmed TokenEscrow was enabled. Two Ripple public endpoints (s1 and s2) returned the same validated Mainnet ledger 107140122. This dated snapshot establishes feature availability at that ledger; it does not certify the complete production setup.

Live wallet creation, signing-tool compatibility, recovery testing and independent review remain outstanding. No Mainnet token has been issued by this project, and no sale is open.

Planned custody

MSMG’s owner will initially control the project signing keys. Separate addresses will distinguish fund purposes, not independent oversight. Live custody is not configured. Any future claim that founder tokens are locked must be backed by verified Mainnet escrow records.