On-chain payment infrastructure for the Veritix ticketing platform, built with Rust and Soroban on the Stellar network.
Veritix Pay is the payment layer of a blockchain-based ticketing system. It lives entirely on-chain as a Soroban smart contract and handles all financial operations that power the Veritix platform — from a fan buying a ticket to an organizer receiving settlement funds after an event.
The contract handles token transfers, escrow for ticket purchases, recurring payments, payment splitting between organizers, artists, and venues, and dispute resolution when something goes wrong. Each of these is designed as a focused, composable module that shares a common storage layout and authorization model.
Escrowed funds are held temporarily on the contract's own ledger balance. When an escrow is created, tokens move from the depositor into the contract address, stay there while the escrow is unresolved, and move back out only on release or refund. This means the contract address can hold a real token balance during escrow flows without increasing total supply.
This project is actively being built in the open. Core token primitives, escrow logic, recurring payments, splitting, and dispute resolution are implemented and tested. Some draft modules exist in src/ but are not yet wired into the crate. Contributors can claim open GitHub Issues to extend and improve existing modules. See the Contributing section below.
- Deterministic execution and predictable fees — no gas spikes or unpredictable costs
- Fast finality — Stellar's 5-second finality is suitable for real-time ticket validation and payment confirmation
- Rust-based safety guarantees — Soroban contracts are written in Rust, giving strong compile-time correctness checks
- Native Stellar ecosystem integration — works directly with Stellar assets and accounts, no bridges required
The entry point is veritixpay/contract/token/src/lib.rs. Modules compiled into the crate are listed below.
| Module | File | Status | Description |
|---|---|---|---|
| Token Core | contract.rs |
Compiled | Mint, burn, transfer, approve, clawback, freeze |
| Admin | admin.rs |
Compiled | Admin address controls and rotation |
| Allowance | allowance.rs |
Compiled | Third-party spending approvals |
| Balance | balance.rs |
Compiled | Ledger balance reads/writes |
| Escrow | escrow.rs |
Compiled | Create, release, and refund escrow holds |
| Freeze | freeze.rs |
Compiled | Regulatory account blocking |
| Metadata | metadata.rs |
Compiled | Token name, symbol, decimals |
| Storage Types | storage_types.rs |
Compiled | Shared DataKey enum and struct definitions |
| Recurring Payments | recurring.rs |
Draft | Set up and execute recurring charges (not yet exposed in contract.rs) |
| Payment Splitter | splitter.rs |
Draft | Split a payment between multiple parties (not yet exposed in contract.rs) |
| Dispute Resolution | dispute.rs |
Draft | Open and resolve payment disputes (not yet exposed in contract.rs) |
| Tool | Notes | Install |
|---|---|---|
| Rust (stable) | Required to compile Soroban contracts | https://rustup.rs |
| wasm32 target | Required build target | rustup target add wasm32-unknown-unknown |
| Stellar CLI (latest) | For building and deploying | cargo install stellar-cli |
Verify your setup:
rustc --version
stellar --versiongit clone https://github.com/Lead-Studios/veritix-contract.git
cd veritix-contract/veritixpay/contract/token
make preflight # verify all required tools are installed
make build # compile to WASM (requires stellar CLI)
make test # run tests
make fmt # format code
make clean # remove build artifactsNote: Run
make preflightfirst to verify your setup. It checks for stellar CLI, Rust, and the wasm32-unknown-unknown target.
veritixpay/
├── contract/
│ └── token/
│ ├── src/
│ │ ├── lib.rs # Crate entry point — module declarations
│ │ ├── contract.rs # Public Soroban interface (VeritixToken)
│ │ ├── admin.rs # Admin storage and rotation
│ │ ├── allowance.rs # Spending approvals
│ │ ├── balance.rs # Ledger balance helpers
│ │ ├── escrow.rs # Escrow logic
│ │ ├── freeze.rs # Account freeze/unfreeze
│ │ ├── metadata.rs # Token metadata
│ │ ├── storage_types.rs # Shared DataKey enum and structs
│ │ ├── test.rs # Compiled unit tests
│ │ ├── escrow_test.rs # Escrow-specific tests
│ │ └── admin_test.rs # Admin rotation tests
│ ├── Cargo.toml
│ └── Makefile
├── Cargo.toml
├── Cargo.lock
├── .gitignore
└── README.md
Contributions are welcome and actively encouraged. This project is structured so that each contract module is an independent issue that any contributor can pick up.
To get started:
- Browse open issues
- Comment on one to get assigned
- Branch from
main, build your module, write tests, and open a PR
See CONTRIBUTING.md for the full guide — including project structure, how to add a module, storage conventions, authorization rules, and the PR checklist.
This project is part of an active open-source funding wave on Drips Network. Contributors who build meaningful features may be eligible for rewards. Build something real, on a real chain, with real incentives.
- Backend: https://github.com/Lead-Studios/veritix-backend
- Web client: https://github.com/Lead-Studios/veritix-web
MIT