Intent
An intent is a signed message describing what your user wants to happen. You supply the parameters; the SDK (when shipped) or your own code constructs the on-chaincreateIntent call and the encrypted recipient bundle.
- The solver-facing parameters (tokens, amounts, reward, deadline, destination chain), readable by anyone
- The encrypted intent containing recipient info, only recoverable by the relayer’s key
Solver
A solver is a network participant that fulfills intents by fronting capital on the destination chain. You never interact with solvers directly. Solvers see intents in two phases:- Pre-bid broadcast (plaintext, batched), the relayer announces rate, token pair, fees, and aggregate amounts from a batch of intents to all solvers. No sender, no recipient. Solvers choose to fill some portion of the batch.
- Post-bid reveal (re-encrypted, per-solver), when a solver bids to take a portion, the relayer re-encrypts the matching recipient info + permit signatures to that solver’s keypair. Only that solver can decrypt it. Other solvers in the batch see nothing about that fill.
Solvers can partially fill a batch. Observers can’t see which individual intents got filled because fills are drawn from the aggregate batch, not from single intents.
Stealth address
When a solver fulfills an intent, it sends funds to a stealth address on the destination chain, a fresh, single-use address derived for that specific delivery. Each intent gets a different stealth address, so observers cannot link multiple deliveries to the same recipient. The recipient controls the stealth address via their viewing/spending keys (held by the relayer on their behalf after registration). A Safe is deployed at the stealth address and funds are swept through it.Viewing key
A viewing key is what lets a user see and claim funds delivered to their stealth addresses. The relayer generates the key material onPOST /recipient/register and holds it (alongside the user’s spending key) for signature-gated access.
As an integrator, you treat access to these keys the way you treat any other user key material: require the user’s wallet signature for every read or sweep operation. Without a valid signature, the relayer won’t release the stealth key.
Settlement
Settlement is the moment funds are delivered at the destination chain. There are two transaction hashes in the lifecycle:solveTxHash, the solver’s delivery on the destination chainsettleTxHash, the relayer’s final settlement on the source chain (releases the solver’s reward)
BridgeIntentV2, no funds are at risk.
Putting it together
What integrators see directly: thecreateIntent call, the encrypted /store-recipients submission, and status polling on /intent-details/:intentId. Everything between is protocol-internal.
What you don’t need to think about
Protocol concerns that do not appear in your integration:- How the pre-bid batch broadcast is constructed
- How re-encryption to the winning solver works
- How solvers are selected within a bid
- How liquidity is sourced or rebalanced
- The on-chain escape mechanism internals
Privacy guarantees
What’s private, what’s public, and what threats Tachyon defends against.