This repository was archived by the owner on Jan 16, 2026. It is now read-only.
refactor(node/service): simplify l1_watcher_rpc actor#3086
Merged
einar-oplabs merged 1 commit intomainfrom Dec 9, 2025
Merged
Conversation
Codecov Report❌ Patch coverage is ☔ View full report in Codecov by Sentry. |
19c20c7 to
9486cd0
Compare
9486cd0 to
654bea3
Compare
op-will
reviewed
Nov 26, 2025
Collaborator
op-will
left a comment
There was a problem hiding this comment.
Looks like a great start!
op-will
previously approved these changes
Nov 27, 2025
Collaborator
There was a problem hiding this comment.
Approving this, so PR comments can be addressed in a follow-up PR if necessary.
@einar-oplabs if you do merge as-is, please ensure end-to-end tests pass and remove the TODOs
op-will
reviewed
Dec 1, 2025
theochap
reviewed
Dec 1, 2025
theochap
reviewed
Dec 1, 2025
theochap
reviewed
Dec 1, 2025
We're iterating on this a bit, so removing approval for now
9ec8865 to
fd09693
Compare
778a9c7 to
7ba45fc
Compare
7ba45fc to
a642687
Compare
theochap
reviewed
Dec 3, 2025
theochap
reviewed
Dec 3, 2025
06d9236 to
2cd05e9
Compare
op-will
reviewed
Dec 5, 2025
The actor contained two event loops that are now joined in one in `L1WatcherActor`. The related `Context` and `State` structs are merged into the primary struct. The `RootProvider` field has been changed to a `Provider` trait to improve testability. Further, the `BlockStream` type has been isolated and rewritten to not use a reference to a `RootProvider` but a `Provider` trait.
9bedaf9 to
0b246d1
Compare
theochap
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Dec 10, 2025
The actor is split in two separate actors: `L1WatcherActor` and `L1QueryActor`. The `L1QueryActor` is promoted to a first-class actor and is now spawned from the main task. Each related `Context` and `State` structs are removed and the necessary fields are moved in to the actor's struct. For each actor an implementation of the builder pattern and custom error-types are provided. This makes it easier to apply inversion of control and do dependency injection. The construction of the actors has been moved downwards in `node.rs` to allow an incoming channel to be created before. Further, the `BlockStream` type has been isolated and rewritten to not use a reference but a clone of the L1 provider. ref: op-rs/kona#3071
theochap
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 14, 2026
The actor is split in two separate actors: `L1WatcherActor` and `L1QueryActor`. The `L1QueryActor` is promoted to a first-class actor and is now spawned from the main task. Each related `Context` and `State` structs are removed and the necessary fields are moved in to the actor's struct. For each actor an implementation of the builder pattern and custom error-types are provided. This makes it easier to apply inversion of control and do dependency injection. The construction of the actors has been moved downwards in `node.rs` to allow an incoming channel to be created before. Further, the `BlockStream` type has been isolated and rewritten to not use a reference but a clone of the L1 provider. ref: #3071
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The actor is split in two separate actors:
L1WatcherActorandL1QueryActor. TheL1QueryActoris promoted to a first-class actorand is now spawned from the main task.
Each related
ContextandStatestructs are removed and thenecessary fields are moved in to the actor's struct.
For each actor an implementation of the builder pattern and custom
error-types are provided. This makes it easier to apply inversion of
control and do dependency injection.
The construction of the actors has been moved downwards in
node.rstoallow an incoming channel to be created before.
Further, the
BlockStreamtype has been isolated and rewritten to notuse a reference but a clone of the L1 provider.
ref: #3071