feat(network)!: fully migrate replay transport to p2p network#873
Merged
feat(network)!: fully migrate replay transport to p2p network#873
Conversation
Test results187 tests 187 ✅ 18m 21s ⏱️ Results for commit e12767b. ♻️ This comment has been updated with latest results. |
RomanBrodetski
previously approved these changes
Feb 11, 2026
Collaborator
RomanBrodetski
left a comment
There was a problem hiding this comment.
Looks good!
Would be great if @popzxc could also review as he was following this whole initiative 🙏
popzxc
previously approved these changes
Feb 13, 2026
Member
popzxc
left a comment
There was a problem hiding this comment.
Overall, great job! Left some nits, but don't think that they're worth blocking the merge; will be fine with merging as-is.
popzxc
previously approved these changes
Feb 13, 2026
popzxc
approved these changes
Feb 13, 2026
itegulov
added a commit
that referenced
this pull request
Feb 17, 2026
## Summary Follow-up to #873 with a few improvements: * Bounded channel for network->sequencer communication to ensure network does not save insane amount of records before sequencer is up (which can take a couple of minutes depending on L1 state recovery). * Shared `starting_block` state for all connections. This makes sure we do not restart streaming from the same block again and again on reconnection to main node. * Tuned ban duration and backoff duration to better match our current needs * Removed unused replay wire formats (forgot to do it in last PR) This is the version currently deployed to stage which has been running fine for the last ~24h <!-- Briefly explain what this PR does. What problem does it solve? --> <!-- If your change is *breaking* (semver-major), please UNCOMMENT and fill out the sections below. These are required for PRs whose title is marked as breaking via conventional commits (e.g. `feat!: ...`, `fix!: ...`). Make sure that the contents are _actually_ helpful for people who can be self-hosting our software. --> <!-- ## Breaking Changes - Who is affected? (e.g. protocol in general, EN users, main node) - What exactly is breaking? (changed DB schema or wiring protocol, added configs) - Are there migration steps required for consumers? - Links to any related docs / migration guides. ## Rollout Instructions - Order of operations (deploy backend, then clients, etc). - Monitoring / alerting to watch during rollout. - Rollback plan (what to revert, how to mitigate if things go wrong). -->
EmilLuta
pushed a commit
that referenced
this pull request
Feb 25, 2026
🤖 I have created a release *beep* *boop* --- ## [0.16.0](v0.15.1...v0.16.0) (2026-02-25) ### ⚠ BREAKING CHANGES * **network:** fully migrate replay transport to p2p network ([#873](#873)) * change api l2 l1 log format ([#875](#875)) ### Features * add block hash to revm divergence panic message ([#880](#880)) ([92a9eaf](92a9eaf)) * **batch-verification:** make HTTPS connection a 2-way stream ([#862](#862)) ([a96e9a0](a96e9a0)) * change api l2 l1 log format ([#875](#875)) ([26ea56f](26ea56f)) * index reverted blocks by hash ([#867](#867)) ([8e360fb](8e360fb)) * **mempool:** rewrite via in-memory subpools ([#869](#869)) ([b3bbca8](b3bbca8)) * **network:** bounded channel + shared starting block state ([#884](#884)) ([5de34e2](5de34e2)) * **network:** fully migrate replay transport to p2p network ([#873](#873)) ([a8e963a](a8e963a)) ### Bug Fixes * Apply fixes for cargo deny ([#892](#892)) ([e4eef3c](e4eef3c)) * Commit after each tx in revm consistency checker ([#898](#898)) ([384ff31](384ff31)) * get rid of broadcast in mempool ([#910](#910)) ([01b53fd](01b53fd)) * remove transaction r and s paddings ([#890](#890)) ([3079e59](3079e59)) * **rpc:** return hex-encoded subscription ids ([#877](#877)) ([0dbc703](0dbc703)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <zksync-era-bot@users.noreply.github.com>
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
This PR gets rid of legacy block replay transport protocol in favour of the new devp2p-driven implementation. Most of the implementation work was done some time ago before this PR, here I am mostly ironing out remaining issues and finalizing the migration.
I tested this manually on the new bootstrap node with static IP address. Hit me in DMs to give you an instruction on how to do it (don't want to expose the IP address here before we finalize everything).
Breaking Changes
sequencer_block_replay_download_addresssequencer_block_replay_server_enabledsequencer_block_replay_server_addressgeneral_node_roleis a new config parameter that is required to be set on ENsRollout Instructions
sequencer_block_replay_*config parameters from all nodesgeneral_node_roleset toexternal