feat: de-duplicate payloads from persisted beacon blocks#7034
feat: de-duplicate payloads from persisted beacon blocks#7034matthewkeil wants to merge 18 commits intounstablefrom
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## unstable #7034 +/- ##
============================================
+ Coverage 49.24% 49.32% +0.07%
============================================
Files 578 577 -1
Lines 37443 37369 -74
Branches 2168 2162 -6
============================================
- Hits 18440 18431 -9
+ Misses 18963 18898 -65
Partials 40 40 |
Performance Report✔️ no performance regression detected Full benchmark results
|
46649b0 to
c893952
Compare
d9fa635 to
dea3b7d
Compare
|
Closing. Needs to be reimplemented. There are two attempts at this on branches and both have good ideas and useable code. However there were issues with sim tests to get this to work. Need to disable the sim-merge tests. The EL required for mining does not have the endpoint needed to pull the transaction and withdrawals to unblind the blocks so those test are impossible to run. Need to remove them and reimplement this on current unstable for it to work correctly. First attempt to do this always used full blocks in the code. This is not necessary as most use cases can work with just the header. The second implementation was this one. In this attempt the blinded blocks are passed around internally and used for most situations and are only unblinded for the few places that they need to be (api for full blocks and reqresp). There are bugs though in this impl so it needs to be massaged because there were sync issues when attempting to run this. Never debugged though because got stuck on the sim test issue and was waiting for our team meeting to discuss that and never circled back. |
|
Here is one of the branches. This one has code for doing serialized blinding and unblinding. |
|
Here is a second attempt to get this working. Has an updated version of the serialized blinding and unblinding code as well as more thorough testing. In review with Lion we reverted serialized code and just went with deserialized updates. His concern was that the splicing using byte offsets is pretty complicated because of all of the nested containers with variable offset data at the ends. It may be worth looking at this again but we should pay attention to the fact that if the blocks change at forks the serialized code will need to be maintained. |
Motivation
Replace #6029
Motivation
Lodestar is saving data that is also saved in the execution client database. In particular we are persisting transactions and withdrawals in the
blockandblockArchivedatabases.Description
Stores blinded blocks in both the hot and cold db. Modifies calls for data retrieval that require the full block, ReqResp and API, to splice in the missing transactions and withdrawals.