Skip to content
This repository was archived by the owner on Apr 14, 2026. It is now read-only.

Commit f7fa2ca

Browse files
committed
Order validation improvements
1 parent 8490f81 commit f7fa2ca

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

src/content/docs/3-solver/302-collecting-orders.mdx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ The following is an attempt at an exhaustive list of validations that solvers mu
5454
3. Validation layer: Ensure you support submitting proofs (and, if not automatic, also relaying) to the validation layer. Additionally, the `localOracle` and `remoteOracle` must be of the same validation layer.
5555
4. Ensure you have whitelisted every single `input` token. If one input token is malicious, the order may be unclaimable. Additionally, for blacklistable tokens like USDC, ensure you are not on a blacklist.
5656
- If an order has a 0 input or output of a token you have not whitelisted, the order may not be fillable. Be careful about filling orders containing unfamiliar tokens.
57-
5. Ensure every `input` token uses the same lockid.
57+
5. Ensure every `input` token uses the same AllocatorId. If the lockId are different, the lock expiry should be checked for every lockId. Alternatively, check if all lockIds are equal.
5858
6. Ensure the potential `reset period` for a resource lock extends beyond the `expiry` AND there is no active withdrawal.
5959
7. Ensure the `allocatorID` is whitelisted. The allocator can block claims from processing (by withdrawing signatures or reusing nonces.)
6060
- The allocatorID is part of the `lock tag` for `inputs` (first 12 bytes).
@@ -72,11 +72,13 @@ The following is an attempt at an exhaustive list of validations that solvers mu
7272
6. You have sufficient tokens for `output.amount`.
7373
7. If the output has `calldata`, ensure you can execute it and other outputs atomically. For outputs on different chains, you may have to whitelist recipients if there is `calldata`.
7474
- On OP-chains, [CrossL2Inbox](https://specs.optimism.io/interop/predeploys.html#validatemessage) needs to be blacklisted in the entire call tree. If similar contracts exist on another chain, they also need to be blacklisted.
75-
8. Neither `call.length` nor `context.length` are more than 65'535 bytes long.
75+
8. Neither `call.length` nor `context.length` are more than 65'535 bytes long.
76+
9. Validate the context depending on order type. For Bitcoin specfically, ensure the encoded multiplier is relative to the Bitcoin value.
7677

7778
10. If the order has multiple outputs, ensure you can fill all outputs and the first output is set to your solver identifier. If all outputs are on the same chain, `fillBatch` can be used as a protective measure.
7879
11. Validate the `allocatorData`. You may have to do an on-chain call.
7980
12. Validate that the allocator `nonce` has not been spent previously by any user. The Order nonce is not a user nonce.
81+
13. If the InputSettler has any fees, check for an imminent fee change.
8082

8183

8284
:::note

0 commit comments

Comments
 (0)