Inspiration
We were driven to solve the ticketing industry's biggest failures: scalping, fraud, and botting. Instead of relying on generic smart contracts, we wanted to leverage the XRP Ledger's specific native capabilities like built-in identity and royalties to create a "fair play" ecosystem where tickets are verifiable and organizers retain control.
What it does
Our protocol allows organizers to issue secure, programmable event tickets on XRPL.
Flexible Minting: Supports both Soulbound (non-transferable) tickets to prevent resale and Standard NFTs with enforced royalties for secondary markets.
Bot Prevention: Uses Verifiable Credentials (DID) to gate sales to verified humans.
Live Updates: Uses on-chain Oracles to broadcast event status (e.g., "Cancelled," "Active") directly to the ledger.
How we built it
We utilized the full suite of advanced XRPL standards:
XLS-20 NFTs: Implemented a dual-strategy using flags. We toggle tfTransferable off for Soulbound tickets and use NFTokenAcceptOffer for secure secondary transfers.
Verifiable Credentials: Integrated CredentialCreate to attach identity checks to ticket payments.
MPTokens (XLS-33): Deployed MPTokenIssuance with clawback capabilities for robust economic logic.
Oracles: Built a data feed using OracleSet to store event states on-chain, acting as a source of truth for refunds.
Challenges we ran into
UX vs. Protocol: XRPL NFTs require an Offer/Accept flow rather than a direct send. Abstraction was needed to make this "atomic swap" feel instant to the user.
Flag Logic: Managing the strict combinations of flags (e.g., tfBurnable, tfTransferable, tfMPTCanClawback) was tricky; one wrong boolean would cause transactions to fail or assets to become permanently stuck.
Hex Encoding: Ensuring metadata stored in Vaults and NFT URIs was perfectly hex-encoded was a persistent hurdle during integration.
Accomplishments that we're proud of
Deep Integration: We didn't just use XRP for payments; we successfully combined four distinct native features (NFTs, MPTs, DIDs, Oracles) into a single functional lifecycle.
Anti-Scalping: We created a working model where a ticket can be programmatically locked to an identity, effectively killing bot-based resale.
What we learned
We learned that Native Transactions > Smart Contracts for this use case. Using XRPL’s native Clawback and Burn features provided a safer, standard-compliant way to handle refunds and revocations without the security risks of custom contract code.
Built With
- cors.-apis/platforms:-xrpl-(testnet-via-websocket)
- dotenv
- languages:-javascript-(node.js-backend)-and-typescript-(react-frontend).-frontend:-react
- node?cron
- radix-ui
- react-query.-backend:-express
- stripe
- tailwind-css
- vite
- wouter
Log in or sign up for Devpost to join the conversation.