Skip to main content
Transfers move tokens between people. They’re instant and final.

How it works

You have token outputs (TTXOs). To send tokens, you spend some outputs and create new ones for the recipient. If you’re sending less than what’s in your outputs, you get change back.
Alice has: 100 tokens (one output)
Alice sends: 75 tokens to Bob

Result:
  Bob gets: 75 tokens (new output)
  Alice gets: 25 tokens (change output)
  Original 100-token output: gone (revoked)
The math has to balance. Inputs = outputs. No tokens created or destroyed.

Why it’s instant

No on-chain transaction. No block confirmations. The transfer happens the moment Spark Operators commit it. Bob can spend those tokens immediately.

Input selection

When you have multiple outputs, the SDK picks which ones to spend. Two strategies: Small first (default): Spends your smallest outputs first. Over time, this consolidates your holdings into fewer, larger outputs. Large first: Spends your biggest outputs first. Useful if you want to preserve small outputs for exact-amount payments later. You can also pick specific outputs manually if you care.

Sending to multiple people

You can send to multiple recipients in one transaction. More efficient than separate transfers. One round trip to operators instead of many.

Consolidation

If you have lots of small outputs, transfer everything to yourself. You’ll end up with one output instead of many. Cleaner, faster, cheaper to exit to L1 if you ever need to.

Limits

LimitValue
Max inputs per transaction500
Max outputs per transaction500
Validity window300 seconds
If you need to spend more than 500 inputs, split into multiple transactions.

Finality

Once operators commit, it’s done. The only way to “reverse” is if the recipient sends tokens back voluntarily. There’s no chargeback, no undo, no dispute process at the protocol level.