Skip to main content
Settlement is authorized by two BLS signatures — one from each party — over one fixed message: the SettlementAuth.

What gets signed

Six fields, byte-identical for both parties: Because the message commits to the order hash and both roots, a signature authorizes exactly one settlement of exactly one trade against exactly the deposits that existed — it can’t be replayed against different state, and the backend rejects a pair signed over different roots.

Who signs

The trade’s two party wallets: the ad creator (maker) and the bridger. Each must sign with the key registered for that wallet — the contracts check keyOf(party) at unlock, so a key registered under a different wallet is invisible for this trade. Signing is silent: the settlement key signs locally, with no on-chain transaction. Parties sign independently, in any order.

The status ladder

Everything after Signed (2/2) is background workers — no user action. The relayer aggregates, proves, and submits; it can’t forge either signature and can’t settle without both.