- The on-chain intent, public, passed as arguments to
BridgeIntentV2.createIntenton the source chain. Solver-facing. - The encrypted recipient bundle, stored off-chain on the relayer via
POST /store-recipients, ECIES-encrypted to the relayer’s public key. Recipient-facing.
Public (on-chain) fields
These are the arguments tocreateIntent. Visible to anyone watching the source chain:
ERC-20 address on source chain. Must be a supported asset.
ERC-20 address on destination chain.
Amount of
_tokenA the user is offering. The user’s approval to the bridge contract must cover _amountA + _reward.Minimum acceptable amount of
_tokenB delivered to the recipient(s). Acts as a slippage floor.Reward paid to the winning solver, in
_tokenA. Deducted from the user’s approval alongside _amountA.Numeric destination chain ID. Must be a directly supported chain.
Seconds the solver auction stays open after intent creation. Minimum 20 seconds (enforced by the TWAP service; tighter minimums may be enforced on
BridgeIntentV2).Encrypted (off-chain) fields
Posted toPOST /store-recipients after createIntent mines:
GET /ecies-pubkey), then posted hex-encoded. The relayer decrypts in its trusted environment and never writes plaintext anywhere persistent. Only the winning solver receives the bundle, re-encrypted to the solver’s own keypair.
Planned SDK shape
The SDK (WIP) will accept a single object and split it into the two artifacts internally:- Call
createIntentwith the public fields above. - Encrypt
{ recipients, amounts }andPOST /store-recipients. - Store
metadataandviewersagainst the intent in the relayer (off-chain only).
Field semantics
Source chain the user funds from; destination chain the recipient receives on. See supported chains.
The user’s approval to the bridge contract must be at least
amountIn + reward. The bridge pulls this on createIntent; the reward pays the winning solver, the remainder is what the solver delivers on destination.Solvers need to deliver at least this much (summed across all recipients) for their bid to be valid at settlement.
Seconds of auction window. Longer = more solver participation (better rates); shorter = faster commitment.
- UI flows: 60–120 seconds
- Batch / payroll: 60–300 seconds per intent
- Server-to-server backfill: 300–600 seconds
- TWAP tranche:
period / 2(service default, minimum 20 seconds)
One or many. Amounts are in
tokenOut’s base units on the destination chain. Their sum must not exceed minAmountOut; it can be less if solvers are expected to deliver more than the minimum (any slippage cushion stays with the recipient).Integrator-defined key/value data. Stored off-chain only, never published on any chain. Useful for correlation with your internal records (invoice IDs, payroll periods, etc.).
Addresses granted scoped read access to this intent’s decrypted details (via the relayer, after the intent settles). See viewing permissions. Cannot be modified after submission.
Allowed ChainId values
_destChainId arg). Call POST /get-routes to enumerate live source–destination pairs at any time.
What observers actually see
| Data | On-chain (source) | Relayer broadcast (to solvers, pre-bid) | Relayer (post-bid, to winning solver) |
|---|---|---|---|
| Token pair | ✓ | ✓ (batched) | ✓ |
| Amount | ✓ | Aggregated across batch | ✓ |
| Reward / fees | ✓ | ✓ (batched) | ✓ |
| Destination chain | ✓ | ✓ | ✓ |
| Sender address | ✓ (calls createIntent) | ||
| Recipient addresses | Encrypted blob only | ✓ (re-encrypted to solver) | |
| Permit signatures | ✓ (re-encrypted to solver) |
SDK API reference
Method signatures and return types.