- Submission of message validation
- Finalizing the order on the resource lock.
Oracle Validation
For instructions on how to relay proof for oracle systems, please refer to their section in validation.Finalizing Orders
Once theOutputProven event has been observed, the output has been validated and finalise can be called.
InputSettlerCompact uses a signature required finalise function where InputSettlerEscrow does not.
For the InputSettlerCompact submit the StandardOrder, the attached signatures as bytes.concat(sponsor, allocator), the timestamps of the fills (which can be read from the OutputFilled event), and the solver’s identifier. If there are multiple outputs, always index lists by their position in the order. Then, finalize can be called. The flow is the same for InputSettlerEscrow except not signatures are provided.
If an order contains multiple outputs and two solvers filled different outputs, then the solver of the first output is the canonical solver.
Signature Finalise
The solver must be the caller offinalise, as they can redirect the funds and modify the optional callback. For some solvers, this is not be possible, i.e. when the solver is set to a pool. In that case, finaliseWithSignature can be used with an EIP-712 AllowOpen signature:
Callback
Some solvers may use callbacks for configuring received funds. Thecall parameter of finalise[WithSignature] forwards the provided payload to destination via orderFinalised:
orderFinalised call does not fail.
For a same chain intent, orderFinalised is executed after inputs are paid to destination but before outputs proofs are validate. This allows solvers to collect intent inputs before filling the intents in an atomic transaction.
