Add EngineAPI and Txpool changes for Fusaka#15222
Conversation
8cda1ac to
8127da7
Compare
|
Waiting for #15067 |
b91a1d1 to
70d3f0e
Compare
|
At the moment i have "introduced" go-eth-kzg library side-by-side to go-kzg-4844, will unify the two in a subsequent PR |
There was a problem hiding this comment.
Pull Request Overview
This PR introduces EngineAPI updates and txpool changes required for the Fusaka upgrade.
- Updates blob handling in txpool by replacing separate Blobs, Commitments, and Proofs with a composite BlobBundles structure.
- Revises parsing, validation, and accessor methods (e.g. Blobs(), Commitments(), Proofs()) in TxnSlot and updates related tests and mocks.
- Adds new fusaka-specific logic such as the isOsaka time-based fork check and supporting configuration changes.
Reviewed Changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| txnprovider/txpool/txpool_grpc_server.go | Updated GetBlobs to return BlobBundles and transform them into blobs and proofs. |
| txnprovider/txpool/senders.go | Replaced BlobTxnType field accesses to use BlobBundles instead of old fields. |
| txnprovider/txpool/pool_txn_parser_test.go | Adjusted tests to use new accessor methods reflecting BlobBundles changes. |
| txnprovider/txpool/pool_txn_parser.go | Revised transaction parsing logic to populate BlobBundles and distribute proofs. |
| txnprovider/txpool/pool.go | Refactored blob txn validation and retrieval to use BlobBundles; added isOsaka logic. |
| txnprovider/txpool/pool_mock.go | Updated mocks to support the new GetBlobs signature returning BlobBundles. |
| Other configuration, workflow, and dependency files | Updated dependencies and added fusaka-specific test/workflow targets and EngineAPI features. |
Comments suppressed due to low confidence (1)
txnprovider/txpool/pool_txn_parser.go:202
- [nitpick] Add an inline comment explaining the significance of dataLen==1 (wrapperVersion detection) to improve maintainability.
if _, dataLen, err = rlp.ParseString(payload, p); err == nil && dataLen == 1 {
|
Please merge the latest |
| //fmt.Printf("%s: senderID=%d,nonce=%d,tip=%d,hash=%x\n", prefix, tx.senderID, tx.nonce, tx.tip, tx.IdHash) | ||
| } | ||
|
|
||
| func (tx *TxnSlot) Blobs() [][]byte { |
There was a problem hiding this comment.
Perhaps it doesn't matter much, but it's probably more efficient to refactor VerifyCellProofBatch to take []PoolBlobBundle so that we don't need these functions with copying.
There was a problem hiding this comment.
Yeah, makes sense. I just wanted to keep that function independent of pool, and the loops in there are just a placeholder before we settle between one of the gokzg libraries.
| versionedHashes, commitments, proofs, blobs := blobTx.GetBlobHashes(), blobTx.Commitments, blobTx.Proofs, blobTx.Blobs | ||
| lenCheck := len(versionedHashes) | ||
| if lenCheck != len(commitments) || lenCheck != len(proofs) || lenCheck != len(blobs) { | ||
| if lenCheck != len(commitments) || (lenCheck != len(proofs) && blobTx.WrapperVersion == 0) || lenCheck != len(blobs) { |
There was a problem hiding this comment.
Is it not worth it to add the Fusaka checks here?
There was a problem hiding this comment.
Assuming that Pool wouldn't let in bad txns, and only way to get Fusaka blocks is through getPayloadV5 that has the checks
| if blobCount > 0 { | ||
| if p.isOsaka() { | ||
| proofs := mt.TxnSlot.Proofs() | ||
| if len(proofs) != len(mt.TxnSlot.BlobBundles)*int(params.CellsPerExtBlob) { // cell_proofs contains exactly CELLS_PER_EXT_BLOB * len(blobs) cell proofs |
There was a problem hiding this comment.
Seems unnecessary here because the check is already done by validateBlobTxn
There was a problem hiding this comment.
No but the pool doesn't immediately remove pre-osaka transactions, and those shouldn't be included post osaka. This is a tricky bit at the transition block.
No description provided.