Skip to content

Conversation

@qianhh
Copy link
Collaborator

@qianhh qianhh commented Aug 22, 2025

This PR merges v1.15.0...v1.15.11 of Geth into bane-main and aimed to close #496 and #517.

Progress

  • v1.15.0
  • v1.15.1...v1.15.11
  • The node functions normally and consensus runs fine (1/4/7 privnet).
  • Mainnet/T4 sync is OK.

The list of important PRs that were merged. @AnnaShaleva, @txhsl, please have a look at these PRs before the review.

Merged but Reverted

@txhsl
Copy link
Contributor

txhsl commented Sep 3, 2025

You can try to accept core/blockchain design for post-merge chain, it still works for pre-merge chain. Or I can open a PR for this,

@txhsl
Copy link
Contributor

txhsl commented Sep 3, 2025

The merge of ./Makefile need to be refined, e.g. the line of .PHONY and missing command fmt. Put help after devtools, obey the order of declaration.

@qianhh
Copy link
Collaborator Author

qianhh commented Sep 4, 2025

You can try to accept core/blockchain design for post-merge chain, it still works for pre-merge chain. Or I can open a PR for this,

This issue has already been created. #507

txhsl added a commit that referenced this pull request Sep 4, 2025
@txhsl
Copy link
Contributor

txhsl commented Sep 4, 2025

This issue has already been created. #507

I've uploaded 19f4dd5 to describe the difference from my v1.15.11. It works on privnets, so let's have a check.

The Ethereum change about Beacon.VerifyHeader needs to be evaluated, but the left things should work, maybe in a more v.1.15 way.

txhsl added a commit that referenced this pull request Sep 4, 2025
txhsl added a commit that referenced this pull request Sep 4, 2025
txhsl added a commit that referenced this pull request Sep 4, 2025
@qianhh
Copy link
Collaborator Author

qianhh commented Sep 4, 2025

I've uploaded 19f4dd5 to describe the difference from my v1.15.11. It works on privnets, so let's have a check.

The Ethereum change about Beacon.VerifyHeader needs to be evaluated, but the left things should work, maybe in a more v.1.15 way.

Starting the 7CNs privnet will get stuck at block 30.

@txhsl
Copy link
Contributor

txhsl commented Sep 4, 2025

Starting the 7CNs privnet will get stuck at block 30.

There seems something wrong in synchronization and reorg, just for reference. I can spend some time looking into it.

Fixed, but this time a test TestPrunedImportSideWithMerging is failing, so still digging.

txhsl added a commit that referenced this pull request Sep 5, 2025
txhsl added a commit that referenced this pull request Sep 5, 2025
@txhsl
Copy link
Contributor

txhsl commented Sep 5, 2025

Starting the 7CNs privnet will get stuck at block 30.

@qianhh I reworked the low level chain implementation based on bsc, there is no impossible reorg any more.

Have a try on 4bc167f. I wish we can merge this part from upstream in this PR, because IMO it is an essential part of v1.15, maybe even the beacon consensus changes.

@qianhh
Copy link
Collaborator Author

qianhh commented Sep 5, 2025

Have a try on 4bc167f. I wish we can merge this part from upstream in this PR, because IMO it is an essential part of v1.15, maybe even the beacon consensus changes.

OK, I'll test it again. The BSC issue was resolved because the consensus was separated from the beacon and no longer used the beacon for packaging. That is, a post-merge process was carried out. I also implemented a version(624241e) based on BSC, the test results seem to be fine.

txhsl added a commit that referenced this pull request Sep 11, 2025
txhsl added a commit that referenced this pull request Sep 11, 2025
txhsl added a commit that referenced this pull request Sep 15, 2025
fjl and others added 12 commits September 16, 2025 15:37
This is an attempt to work around a gcc issue in the Docker build.
This reverts commit 7b96ec4dae8d4ddeffc761c7757c12e2d2b8bf74.
This changes the `-upload` flag to just toggle the upload. The remote
image name is now configured using the `-hub` flag.
This PR builds on #29040 and updates it to the new version of the spec.
I filled the EEST tests and they pass.

Link to spec: https://eips.ethereum.org/EIPS/eip-7623

---------

Co-authored-by: Marius van der Wijden <[email protected]>
Co-authored-by: lightclient <[email protected]>
Co-authored-by: lightclient <[email protected]>
I caught this error on Hive. It was introduced by
ethereum/go-ethereum#31071 because after adding
the equality check the request type 0 will be rejected.
Removes duplicate code in the interpreter loop.
Fixes a typo in the error message within the `fuzzCrossG2Add`
function. The panic message incorrectly references "G1 point addition
mismatch" when it should be "G2 point addition mismatch," as the
function deals with G2 points.

This doesn't affect functionality but could cause confusion during
debugging. I've updated the message to reflect the correct curve.
This is a follow-up PR to #29792 to get rid of the data file sync.

**This is a non-backward compatible change, which increments the
database version from 8 to 9**.

We introduce a flushOffset for each freezer table, which tracks the position
of the most recently fsync’d item in the index file. When this offset moves
forward, it indicates that all index entries below it, along with their corresponding
data items, have been properly persisted to disk. The offset can also be moved
backward when truncating from either the head or tail of the file.

Previously, the data file required an explicit fsync after every mutation, which
was highly inefficient. With the introduction of the flush offset, the synchronization
strategy becomes more flexible, allowing the freezer to sync every 30 seconds
instead.

The data items above the flush offset are regarded volatile and callers must ensure
they are recoverable after the unclean shutdown, or explicitly sync the freezer
before any proceeding operations.

---------

Co-authored-by: Felix Lange <[email protected]>
This PR fixes a data race in SetupGenesisWithOverride.
@txhsl
Copy link
Contributor

txhsl commented Oct 11, 2025

@qianhh I think I've fully merged ethereum/go-ethereum#31414, please check and update the PR introduction if possible. This feature needs testing as well.

@txhsl txhsl linked an issue Oct 11, 2025 that may be closed by this pull request
txhsl and others added 2 commits October 11, 2025 17:29
*: revert customized behaviors about finalized block
Copy link
Contributor

@txhsl txhsl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM now, further improvement is still welcome.

@txhsl
Copy link
Contributor

txhsl commented Oct 16, 2025

Seems like I misunderstood the blob data handling, the current EL implementation is only a collector of blob transaction.

There are two store-and-prune places for blob data in the Ethereum network:

  1. In EL blob pool, there is a short-term storage, https://github.com/ethereum/go-ethereum/blob/0a2c21acd59767cb07c950ad86c67ee8b6db49ab/core/txpool/blobpool/limbo.go#L127;
  2. In CL file system, there is a long-term storage, https://github.com/OffchainLabs/prysm/blob/develop/beacon-chain/db/filesystem/layout.go#L240.

The whole life cycle of a blob is like the following:

  1. Blob transactions are sent to EL blob pool;
  2. Blob metadata and sidecars are committed to CL;
  3. CL confirms the blob transaction and store the data;
  4. EL deletes the temporary storage for blob transactions after CL finalized (about 12.8 mins, 2 epochs of 32 blocks);
  5. CL prunes the file storage for blob data after expiration (about 18.2 days, 4096 epochs of 32 blocks).

Since the EL temporary storage implemented with https://github.com/holiman/billy, it is not designed to persist a blob for its full life cycle, and we don't have methods to access them correctly.

// newSlotter creates a helper method for the Billy datastore that returns the
// individual shelf sizes used to store transactions in.
//
// The slotter will create shelves for each possible blob count + some tx metadata
// wiggle room, up to the max permitted limits.
//
// The slotter also creates a shelf for 0-blob transactions. Whilst those are not
// allowed in the current protocol, having an empty shelf is not a relevant use
// of resources, but it makes stress testing with junk transactions simpler.
func newSlotter(maxBlobsPerTransaction int) func() (uint32, bool) {
slotsize := uint32(txAvgSize)
slotsize -= uint32(blobSize) // underflows, it's ok, will overflow back in the first return
return func() (size uint32, done bool) {
slotsize += blobSize
finished := slotsize > uint32(maxBlobsPerTransaction)*blobSize+txMaxSize
return slotsize, finished
}
}

About the db design, we can refer to its introduction. If we refer to the configuration of billy shelves, it defines a fixed number of shelves for a specific maxBlobsPerTransaction setting. The most important thing is, this storage builds a full index in Geth memory.

I can't leave this storage keeping increasing, it's not publicly accessible or efficient, because it is only designed to handle PoS reorgs. Let's solve this in #520, here we give it a fallback value for pruning.

@txhsl
Copy link
Contributor

txhsl commented Oct 20, 2025

@songb2 detected a transaction root mismatch error with blob transactions in dBFT, checking.

@txhsl
Copy link
Contributor

txhsl commented Oct 20, 2025

@songb2 detected a transaction root mismatch error with blob transactions in dBFT, checking.

Fixed, the root is dBFT fetched full blob data from local pool, but sidecar should not be included in the block.

@txhsl txhsl linked an issue Oct 20, 2025 that may be closed by this pull request
@txhsl
Copy link
Contributor

txhsl commented Oct 21, 2025

@songb2 Open issues if you find any error, I'm going to merge.

@txhsl txhsl merged commit 18f8547 into bane-main Oct 21, 2025
2 checks passed
@txhsl txhsl deleted the upd-v1.15.11 branch October 21, 2025 07:57
@AnnaShaleva AnnaShaleva mentioned this pull request Oct 23, 2025
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.

Handle and verify blob transactions in dBFT correctly Failed chain freezer on Privnet Upgrade Geth to v1.15+