Skip to content
Stellar TestnetPrototype with synthetic funds only. Not financial advice, not a guarantee of any payout, not audited.
Torrent

Built on Stellar Soroban · Open source · Testnet prototype

Payout rights that are funded before they exist.

Torrent lets a savings circle lock its money in a Soroban escrow pool first, then issue payout rights against it. Members can trade when they get paid, never whether the money is there.

  • Backing invariant on-chain
  • Ledger-derived state
  • 4 MIT repositories

Ajo circle

Pool #1 · Stellar Testnet

Fully backed

Funded in escrow

1,000.00 TST

Reserved for rights 600.00Unreserved 400.00
  • #1

    200.00 TST · Jan 2027

    owner GDTF…X3M

    Issued
  • #2

    200.00 TST · Feb 2027

    owner GDTF…X3Mowner GDTF…X3M → GBJZ…WDJowner GBJZ…WDJ

    IssuedBoth signingTransferred
  • #3

    200.00 TST · Mar 2027

    owner GC5Q…KDA

    Issued

reserved 600 ≤ funded − claimed − withdrawn 1,000

Checked by the contract after every call

Illustration with synthetic numbers. Not live data.

How it works

Four steps, each one enforced on-chain

The off-chain API organizes people and requests. The Soroban contract decides what actually happens to money and ownership.

  1. 01

    Create a circle

    An organizer sets the rules: members, rounds, round length and contribution. The rules are hashed, and that hash is what binds the circle to its on-chain pool.

    Contract callcreate_pool · allow_member · join_pool

  2. 02

    Fund the pool

    Members deposit a supported Stellar asset into the Soroban escrow contract. The pool's funded total only grows when the ledger confirms a deposit.

    Contract calldeposit

  3. 03

    Issue payout rights

    Each right has a unique id, owner, amount and maturity. The contract refuses to issue a right that is not covered by unreserved escrow.

    Contract callissue_right

  4. 04

    Transfer or claim

    Members can swap when they get paid: the owner proposes, the recipient accepts, both sign. At maturity the current owner claims exactly once.

    Contract callpropose_transfer · accept_transfer · claim

A savings circle, step by step

From contributions to payouts, with the money there first

An illustrated example with four synthetic members. Use the steps or let it play.

Adapaying…
Bolapaying…
Chidipaying…
Dayopaying…

Soroban escrow

held 0 · reserved 0

reserved 0 ≤ funded 0 − claimed 0 − withdrawn 0 ✓

  1. Jan slot

    not issued

    Ada
  2. Feb slot

    not issued

    Bola
  3. Mar slot

    not issued

    Chidi
  4. Apr slot

    not issued

    Dayo
Illustration with synthetic members and amounts. Not real data.

Step 1 of 5: Everyone contributes

Try it

Trade your payout date, not your payout

Pick whose slot you hold and the slot you would rather have. Torrent moves ownership of fully funded rights; amounts never change.

I am
JanFebMarApr
  1. 1Bola proposes the Feb right to Ada; Ada accepts. (2 signatures)
  2. 2Ada proposes the Jan right to Bola; Bola accepts. (2 signatures)
  3. 3Bola is now paid in Jan, earlier than before. Both rights stay 100: no interest, no new money.

Only fully funded, unmatured rights can change hands, and an offer expires no later than the right matures. Both parties sign every transfer.

Who it is for

Built for groups that already save together

Torrent is a prototype for the people in a circle, not for speculators: rights only move between members of the same pool.

  • Savings circles

    Ajo, esusu, tanda, chit funds and other rotating groups that want the pot locked before anyone is promised a turn.

  • Members who need money sooner

    Hold a late slot but face a bill now? Ask a member with an earlier, already funded slot to swap.

  • Members happy to wait

    Flexible on timing? Take a later slot and help someone else. The amount you receive stays the same.

  • Organizers and treasurers

    Set the rules once, see coverage straight from the ledger, and never hold anyone's money or keys yourself.

Features

Financial truth first, interface second

Every number in the app traces back to the ledger, and every state says exactly how final it is.

  • Funded before issued

    Rights can only be minted against tokens already locked in escrow. No right represents a future contribution that has not been paid.

  • Ledger-derived state

    Coverage, ownership and balances come from Soroban events reconstructed by the indexer, never from an app database or a client cache.

  • Honest settlement states

    Submitted is not confirmed. A request is shown as settled only after the indexer observes it on the ledger; timeouts reconcile by transaction hash.

  • Your keys stay yours

    Sign in by signing a one-time message. Every request shows the exact contract call before you sign it. The app never asks for a secret key.

  • Member-only transfers

    Both parties sign, offers expire, and a right has exactly one owner at a time. The previous owner cannot claim after a transfer.

  • Replayable and auditable

    The indexer can rebuild from the deployment ledger. Organizers get an append-only audit trail with actor, action and request id.

Under the hood

One check runs after every call

The Soroban contract refuses any change that would leave a right without escrowed money behind it. Drag the slider to try issuing a new right.

ON-CHAINWallet signsissue_rightInvariant checkEvent emittedreserved ≤ funded − claimed − withdrawnREAD BACK FROM THE LEDGERright_issued eventTorrent-indexerTorrent-apiTorrent-webThe app shows only what the indexer rebuilt from contract events.
Example numbers: a pool funded with 1000, 400 already reserved.

reserved 900 ≤ funded 1000 − claimed 0 − withdrawn 0

Accepted: the right is fully backed and right_issued is emitted.

  • Claims work even while a pool is paused or closed.
  • Upgrades are announced on-chain a week before they can run.
  • The indexer rebuilds this state from events and halts on any mismatch.
Launch app

Trust and safety

One invariant, checked after every call

The escrow contract refuses any deposit, issuance, transfer or claim that would leave a right uncovered. It is tested with property tests over random sequences of actions.

Backing invariant

reserved ≤ funded − claimed − withdrawn

  • Rights can only be issued against escrowed tokens.
  • An old owner cannot claim after a transfer.
  • Nothing is claimable before maturity, or twice.
  • No operator backdoor un-reserves an issued right.

Status, plainly

Network
Stellar Testnet only

Synthetic funds and members. Escrow contract CBWF73FUJDGXSXOYUVYHP3XAFSPZWX65YGFSXDSSF5VRFLEWFFTQUIJG is deployed on Testnet; the product remains an unaudited prototype.

Security audit
Not audited

No third-party review has been performed. Do not use with anything of value.

Mainnet / real funds
Not available

Mainnet requires an external security review and legal and compliance work first.

Wallets
Freighter or manual signing

The Freighter browser extension (Testnet) or sign elsewhere and paste. The Freighter flow has not yet been run against a live Testnet deployment.

Source code
Open source, MIT

Four repositories with independent tests and CI. Cross-repository boundaries are tested against real recorded fixtures.

Architecture and open source

Four repositories, one source of truth

Each repository owns one boundary, ships its own tests and CI, and publishes a versioned interface its siblings test against. The contract is the only source of truth for backing, ownership and payout.

FAQ

Questions, answered honestly

Something missing? Open an issue on GitHub.

What problem does Torrent solve?

In a savings circle, everyone contributes and members take turns receiving the pot. Sometimes a member needs their payout earlier, or later. Torrent lets members exchange the timing of a payout, but only for payouts that are already fully funded in escrow.

Is this a traditional rotating savings scheme (ROSCA)?

No. A traditional scheme relies on future contributions that have not been paid yet. Torrent never turns unpaid future contributions into a payout right: a right only exists once an equal amount is locked in the escrow contract.

Is Torrent live? Can I use real money?

No. Torrent is an open-source prototype for Stellar Testnet with synthetic funds. It is not audited, not on Mainnet, and transferability of payout rights would need legal review before any real use.

Does Torrent hold my funds or keys?

No. Funds sit in the Soroban escrow contract, which only releases them according to its rules. The API holds no keys and no balances, and the web app never asks for a secret key or seed phrase.

What happens if a transaction times out?

The request moves to a reconciling state and is resolved by its transaction hash. It is never silently retried with different parameters, and it is never shown as settled until the ledger confirms it.

Which wallets are supported?

The Freighter browser extension, offered when it is installed and set to Testnet, or any tool you sign with yourself and paste the result. A development-only test wallet exists behind a flag and is clearly labeled.

How can I contribute?

Each repository has a CONTRIBUTING guide and a list of scoped contributor issues. Pick the repository that owns the behavior you want to change; cross-repository changes are coordinated through versioned fixtures.

See every number trace back to the ledger

The app talks to a running torrent-api. Run the four services locally against Stellar Testnet, or read the code and pick up a scoped contributor issue.