The brokerless guarantee
Cross-chain XRP trades normally make one side move first. Cinder replaces that trust gap with escrow, competition, collateral and objective proof.
A buyer locks USDT0 and commits an XRPL destination. Independent makers lock FXRP bonds and submit sealed prices. The lowest revealed quote inside the live FTSOv2 band wins. If XRP arrives, FDC releases USDT0 and returns the bond. If it does not, FDC refunds the buyer and slashes the bond.
Coston2 owns the state and funds, FTSOv2 defines a fair execution band, FXRP supplies native performance collateral, and FDC resolves both cross-chain outcomes without a Cinder operator.
Five modules with narrow responsibilities
Holds buyer funds and applies the final outcome.
Domain-separated commit and reveal competition.
Locks, returns or slashes maker collateral.
Rejects quotes outside a 1.25% live band.
Validates payment and referenced non-existence.
Matcher boundary
The guaranteed escrow calls a separate matcher contract. Commit-reveal V2 is the deployed, reliable implementation. An FCC matcher can later implement the same role without rewriting escrow, bond or FDC logic. FCC is not claimed as live because its local runtime was unavailable.
Run and verify the demo
- Open Live proofs. Select Payment delivered or Payment missed.
- Click Verify receipts live. The page reads Coston2 receipts directly.
- Open the hashes. Inspect USDT0 escrow, maker competition, FDC request and resolution.
- Inspect XRPL. The success path links to the validated 2 XRP transaction with the RFQ payment reference.
- Create your own hash. In the isolated sandbox, connect a test wallet, claim dcUSD and create a fresh RFQ.
Asset separation: the guaranteed reference uses official Coston2 USDT0 and FXRP. The public sandbox uses an isolated one-claim dcUSD token so judges can transact without controlled maker keys or scarce FXRP faucet balances.
Launch demoReal success path: RFQ #3
| Event | Network | Transaction |
|---|---|---|
| 2 USDT0 escrow created | Coston2 | 0x784b...c78d |
| Two quotes finalized | Coston2 | 0x4077...198c |
| 2 XRP delivered | XRPL Testnet | EE8A...8267 |
| Payment proof requested | Flare FDC | 0x7731...0caf |
| USDT0 released; bond returned | Coston2 | 0x056a...9ddf |
Real default path: RFQ #1
| Event | Network | Transaction |
|---|---|---|
| 2 USDT0 escrow created | Coston2 | 0x9072...312d |
| Winning maker selected | Coston2 | 0x9a21...e43f |
| Non-payment proof requested | Flare FDC | 0x65df...1bfe |
| USDT0 refunded; 1 FXRP slashed | Coston2 | 0x5e81...0837 |
Live Coston2 contracts
| Component | Address |
|---|---|
| Guaranteed USDT0 escrow | 0x27DAa2d5BfDD9A3C7657baDc59E91c3649f14744 |
| Commit-reveal matcher V2 | 0x166aB7D743Fc71dAd7Dba19957fd3465531b6AE0 |
| FXRP bond vault | 0xE0095bA27bce7a8c82eBf0e00F1C54eF552737CF |
| Dual FDC adapter | 0x662bEAf80369aa2A2b9BAcd17cd5dDbA8Ec15B01 |
| FTSOv2 XRP/USD adapter | 0xcB10895076A8a2b5E2e719CEd7fC43f906Af60BF |
| USDT0 | 0xC1A5B41512496B80903D1f32d6dEa3a73212E71F |
| FXRP | 0x0b6A3645c240605887a5532109323A3E12273dc7 |
Built during the program
- USDT0-only guaranteed escrow with independent matcher and bond interfaces.
- FXRP bond vault with one-time controller binding, release and slash accounting.
- Two-maker domain-separated commit-reveal matcher V2.
- Dual FDC adapter for Payment and ReferencedPaymentNonexistence proofs.
- Checkpointable proof keeper that survives RPC resets without duplicating requests.
- Automated real XRPL payment path and both Coston2 resolution paths.
- Public proof console plus isolated wallet transaction sandbox.
Path beyond the hackathon
- Security audit and invariant/property testing for escrow and bond accounting.
- Maker onboarding, quote API and monitoring for production liquidity.
- USDT0 and FXRP liquidity pilots with XRP payment businesses.
- FCC matcher adapter once the runtime is dependable, without changing settlement contracts.
- Flare Mainnet deployment after audit and controlled treasury pilot.
Local verification
npm install
npm run contracts:check
npm test
npm run guaranteed:auction
npm run guaranteed:pay
npm run guaranteed:keeper
# or after a missed deadline
npm run guaranteed:default