-
Notifications
You must be signed in to change notification settings - Fork 212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement set reconciliation based sync (syncv2) #5769
Conversation
Parent links make it impossible to implement (semi-)persistent mode
Not tested yet
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #5769 +/- ##
=========================================
- Coverage 81.7% 81.7% -0.1%
=========================================
Files 312 334 +22
Lines 34625 38076 +3451
=========================================
+ Hits 28306 31127 +2821
- Misses 4480 4908 +428
- Partials 1839 2041 +202 ☔ View full report in Codecov by Sentry. |
@mathcrypto the discussion was not finished yet, but I restarted it #5785 (comment) |
Existing fetcher will be used for blobs
Don't send back items received from the peer
Remove monoid tree for now and remove test dependencies. Use Go 1.23 range over function feature instead of custom iterator protocol.
@ivan4th This PR is reaching 14k LoC. Do you think you could start factoring out changes that are already done and could be reviewed to separate PRs? |
@poszu that's the plan. Currently debugging ATX sync and this may cause a few more changes in |
Motivation
Existing sync is causing a lot of resource usage, including memory consumption and network traffic, and can't replace gossip which can also be unreliable at times.
Description
This implements the new sync protocol as described here.
The algorithm is based on Range-Based Set Reconciliation paper by Aljoscha Meyer and also loosely based on SREP: Out-Of-Band Sync of Transaction Pools for Large-Scale Blockchains paper by Novak Boškov, Sevval Simsek, Ari Trachtenberg, and David Starobinski.
Test Plan
Add systests that verify new sync.
Verify on testnet, then on mainnet.
TODO
atxsdata