- 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:
address
required
ERC-20 address on source chain. Must be a supported asset.
address
required
ERC-20 address on destination chain.
uint256
required
Amount of
_tokenA the user is offering. The user’s approval to the bridge contract must cover _amountA + _reward.uint256
required
Minimum acceptable amount of
_tokenB delivered to the recipient(s). Acts as a slippage floor.uint256
required
Reward paid to the winning solver, in
_tokenA. Deducted from the user’s approval alongside _amountA.uint256
required
Numeric destination chain ID. Must be a directly supported chain.
uint256
required
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
ChainId
Source chain the user funds from; destination chain the recipient receives on. See supported chains.
bigint
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.bigint
Solvers need to deliver at least this much (summed across all recipients) for their bid to be valid at settlement.
number
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)
{ address, amount }[]
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).Record<string, string>
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.).
Address[]
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
See privacy guarantees for the full threat model.
SDK API reference
Method signatures and return types.