Skip to content

core, eth: implement sparse blobpool#34047

Open
healthykim wants to merge 77 commits into
ethereum:masterfrom
healthykim:bs/cell-blobpool/sparse-v2
Open

core, eth: implement sparse blobpool#34047
healthykim wants to merge 77 commits into
ethereum:masterfrom
healthykim:bs/cell-blobpool/sparse-v2

Conversation

@healthykim

@healthykim healthykim commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

This is a draft PR for sparse blobpool.

It applies the prototype changes that existed here and here on top of master (with assistance from AI).

@fjl fjl changed the title [Draft] cmd, core, crypto, eth: implement EIP-8070 (sparse blobpool) [Draft] EIP-8070 - sparse blobpool May 14, 2026
@fjl fjl force-pushed the bs/cell-blobpool/sparse-v2 branch from fd05dab to 36ef898 Compare May 14, 2026 17:55
@fjl fjl force-pushed the bs/cell-blobpool/sparse-v2 branch from 36ef898 to 7aa045c Compare May 14, 2026 17:56
@healthykim

healthykim commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

@fjl I am leaving this comment to keep a record of what we discussed today.

Problem: Since we include transactions from the same account in nonce order, if there is a partial transaction, subsequent transactions with higher nonces from the same from account cannot be included by us. I refer to these as blocked transactions (feel free to recommend a better name)

Because a partial transaction can be injected by running multiple nodes above the threshold around the victim, we need a restriction for such transactions. I have two ideas for this.

  1. Cap the total size of blocked transactions

Under this policy, we drop transactions whenever size(blockedTxs) > blockedCap || size(txs) > cap (Here blockedCap can be like cap * 0.5). During the eviction, blocked transactions are always considered as cheaper than normal transactions, regardless of the fee they pay. This policy may drop some real valuable transactions, so I am not fully convinced about this part, but on the other hand, I still think it makes sense because blocked transactions are not immediately includable anyway.

  1. Fetch the blocking transaction to unblock blocked transactions

Under this policy, when size(blockedTxs) > blockedCap && size(txs) <= cap, we try to change the status of blocked transactions by fetching the full blob of the partial transaction that blocks the subsequent transactions.
We can record something similar to knownTxs to check which peer is serving as a provider for each transaction. If fetching the blocking transaction fails, we drop that transaction and the subsequent blocked transactions. Otherwise it would be okay because now the blocked suffix is shorter than before we fetch the full blob.

I think we can apply both approaches together. I have not implemented the second approach yet. I am working on it butI couldn't find better architecture than adding more dependencies for now.

@healthykim healthykim force-pushed the bs/cell-blobpool/sparse-v2 branch from 6770096 to c796080 Compare July 8, 2026 12:58
@healthykim healthykim changed the title [Draft] EIP-8070 - sparse blobpool core, eth: implement sparse blobpool Jul 14, 2026
@healthykim healthykim marked this pull request as ready for review July 14, 2026 15:55
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.

2 participants