Skip to content

Solver Registry (M0) - #772

Open
mel0ndev wants to merge 6 commits into
devfrom
feat/solver-registry
Open

Solver Registry (M0)#772
mel0ndev wants to merge 6 commits into
devfrom
feat/solver-registry

Conversation

@mel0ndev

@mel0ndev mel0ndev commented Aug 3, 2026

Copy link
Copy Markdown

No description provided.

@mel0ndev
mel0ndev requested a review from a team as a code owner August 3, 2026 18:55
@greptile-apps

greptile-apps Bot commented Aug 3, 2026

Copy link
Copy Markdown

Greptile Summary

The PR introduces an authenticated, route-specific solver registry and integrates it into M0 limit-order validation while preserving already-approved orders across solver rotation.

  • Adds guarded solver set, remove, overwrite, and lookup operations.
  • Restricts new M0 orders to the registered solver for their directional token route.
  • Adds salted order payloads and retains cancellation support after solver rotation.
  • Extends registry and adapter coverage for authorization, solver validation, rotation, and malformed inputs.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains; the registry now rejects zero-address assignments and refuses removal or overwrite of unset routes, resolving the previously reported sentinel-state ambiguity.

Important Files Changed

Filename Overview
src/base/Periphery/SolverRegistry.sol Adds authenticated directional-route solver management; the current guards fully resolve the prior zero-address and unset-state collision.
src/base/Periphery/adapters/M0Adapter.sol Validates salted M0 orders against the route registry while exempting exact hashes already approved by the swapper so existing orders remain manageable after rotation.
src/base/Periphery/BoringSwapper.sol Exposes the existing approved-hash getter through ISwapper for adapter-side lifecycle validation.
src/interfaces/ISwapper.sol Extends the stable swapper view interface with approvedHashes.
test/SolverRegistry.t.sol Covers registry mutation, authorization, directional route IDs, zero-address setting, and solver mismatch behavior.
test/adapters/M0Adapter.t.sol Extends M0 integration coverage for registered solvers, rotation, cancellation, salts, and address canonicalization.

Sequence Diagram

sequenceDiagram
  participant Admin
  participant Registry as M0SolverRegistry
  participant Swapper as BoringSwapper
  participant Adapter as M0Adapter
  participant OrderBook as M0 OrderBook
  Admin->>Registry: setSolver(tokenIn, tokenOut, solver)
  Swapper->>Adapter: verifyLimitOrder(config, swapper)
  Adapter->>Registry: getSolver(tokenIn, tokenOut)
  Registry-->>Adapter: registered solver
  Adapter->>Swapper: approvedHashes(protocolHash)
  Adapter-->>Swapper: validated OrderInfo
  Swapper->>OrderBook: openOrder(order)
  Admin->>Registry: overwriteSolver(oldSolver, newSolver)
  Swapper->>Adapter: verify existing order for cancellation
  Adapter->>Swapper: approvedHashes(protocolHash)
  Swapper->>OrderBook: cancelOrder(existing order)
Loading

Reviews (3): Last reviewed commit: "fix: allow cancelling orders with old so..." | Re-trigger Greptile

Comment thread src/base/Periphery/SolverRegistry.sol Outdated
RadioJulius
RadioJulius previously approved these changes Aug 4, 2026
@Zokunei

Zokunei commented Aug 4, 2026

Copy link
Copy Markdown

@greptileai

@Zokunei

Zokunei commented Aug 4, 2026

Copy link
Copy Markdown

@greptileai

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants