Skip to content

v2.6.0#2065

Merged
marcello33 merged 595 commits intomasterfrom
v2.6.0-beta-candidate
Feb 18, 2026
Merged

v2.6.0#2065
marcello33 merged 595 commits intomasterfrom
v2.6.0-beta-candidate

Conversation

@marcello33
Copy link
Copy Markdown
Collaborator

Description

v2.6.0 stable candidate

hyeonLewis and others added 30 commits October 13, 2025 13:10
Fix ethereum/go-ethereum#32893.

In the previous ethereum/go-ethereum#32794, it
only handles the pending tx filter, while there are also head and log
filters. This PR applies the patch to all filter APIs and uses `defer`
to maintain code consistency.
This PR implements the partial read functionalities in the freezer, optimizing
the state history reader by resolving less data from freezer.

---------

Signed-off-by: jsvisa <delweng@gmail.com>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
This speeds up LogDist by 75% using 64-bit operations instead
of byte-wise XOR.

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
This speeds up DistCmp by 75% through using 64-bit operations instead of
byte-wise XOR.
This PR move the queue out of the main transaction pool.
For now there should be no functional changes.
I see this as a first step to refactor the legacypool and make the queue
a fully separate concept from the main pending pool.

---------

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
Co-authored-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This PR adds a `filterfuzz` subcommand to the workload tester that
generates requests similarly to `filtergen` (though with a much smaller
block length limit) and also verifies the results by retrieving all
block receipts in the range and locally filtering out relevant results.
Unlike `filtergen` that operates on the finalized chain range only,
`filterfuzz` does check the head region, actually it seeds a new query
at every new chain head.
This ensures the node is ready to accept other nodes into the
table before it is used in a test.

Closes #32863
The limit check for `MaxUint32` is done after the cast to `int`. On 64
bits machines, that will work without a problem. On 32 bits machines,
that will always fail. The compiler catches it and refuses to build.

Note that this only fixes the compiler build. ~~If the limit is above
`MaxInt32` but strictly below `MaxUint32` then this will fail at runtime
and we have another issue.~~ I checked and this should not happen during
regular execution, although it might happen in tests.
This happens normally after a restart, so it is better to use Info level
here.

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This pr addresses a few issues brought by the #32270 

- Add updates to pricedList after dropping transactions.
- Remove redundant deletions in queue.evictList, since
pool.removeTx(hash, true, true) already performs the removal.
- Prevent duplicate addresses during promotion when Reset is not nil.
…#32849)

This adds a temporary conversion path for blob transactions with legacy
proof sidecar. This feature will activate after Fusaka. We will phase
this out when the fork has sufficiently settled and client side
libraries have been upgraded to send the new proofs.
…peer (#32728)

Drop peer if sending the same transaction multiple times in a single message.

Fixes ethereum/go-ethereum#32724


---------

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
Co-authored-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This fixes a regression introduced in #32518. In that PR, we removed the
slowdown logic that would throttle lookups when the table runs empty.
Said logic was originally added in #20389.

Usually it's fine, but there exist pathological cases, such as hive
tests, where the node can only discover one other node, so it can only
ever query that node and won't get any results. In cases like these, we
need to throttle the creation of lookups to avoid crazy CPU usage.
Fix logging in the verkle dump path to report the actual key being
processed.
Previously, the loop always logged keylist[0], which misled users when
expanding multiple keys and made debugging harder. This change aligns
the
log with the key passed to root.Get, improving traceability and
diagnostics.
Adds ethclient support for the eth_simulateV1 RPC method, which allows
simulating transactions on top of a base state without making changes to
the blockchain.

---------

Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
New RPC method eth_sendRawTransactionSync(rawTx, timeoutMs?) that
submits a signed tx and blocks until a receipt is available or a timeout
elapses.

Two CLI flags to tune server-side limits:

--rpc.txsync.defaulttimeout (default wait window)

--rpc.txsync.maxtimeout (upper bound; requests are clamped)

closes ethereum/go-ethereum#32094

---------

Co-authored-by: aodhgan <gawnieg@gmail.com>
Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
This change addresses critical issues in the state object duplication
process specific to Verkle trie implementations. Without these
modifications, updates to state objects fail to propagate correctly
through the trie structure after a statedb copy operation, leading to
inaccuracies in the computation of the state root hash.

---------

Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
marcello33 and others added 24 commits January 29, 2026 13:38
Also added a nightly github action that runs race condition check
Fix race conditions detected in make test-race
* revert: P256VerifyGas to 3450

* fix: testdata

* chore: add eip7951 to p256Verify precompile

* delete: crypto/secp256r1/publickey.go

* fix(ci): use state-sync action
* fix(ci): test-state-sync

* chore: rename actions

* chore: nits
This is required by opcode test in kurtosis_smoke_test.sh
* tbdhf: CLZ opcode and P256 gas cost changes

* chore: nits

* revert: state-sync test change

* chore: nit

* chore: final nit

* fix: test

* chore: rename to lisovo

* feat: flexible base fee on lisovo HF (#2041)

* covering super low fee scenario

* moving configurable rules to lisovo

* fix missing tests

* chore: add amoy hf block number

---------

Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br>
* core, internal, params: lisovoPro HF and version bump

* core: add lisovoPro instructionset

* core: lisovo-lisovoPro instructionset test
…l is unreachable (#2056)

FetchMilestone was called with context.Background(), which has no deadline. When Heimdall becomes unreachable, FetchWithRetry enters an infinite retry loop that never returns. Since the ticker fires every second, a new blocked goroutine accumulates each tick — leading to OOM within minutes.

Add a 30s context timeout to bound each call, matching the existing pattern in retryHeimdallHandler (eth/backend.go). This caps in-flight goroutines at ~30 instead of growing unboundedly.
…2058)

* fix(shutdown): cancel in-flight Heimdall queries on engine shutdown

* chore: nit
…ocks (#2060)

The late-block adjustment in Prepare() uses an integer-second comparison
(header.Time < now.Unix()) to detect when a block is behind schedule and
needs additional build time. Because header.Time is an integer (seconds)
while the actual target time can have sub-second precision, a block can
be up to 999ms late without triggering the adjustment.

Example: with period=1s and parent.Time=T:

  header.Time        = T + 1                     (integer seconds)
  now                = T + 1.820                  (parent block is 820ms late)
  now.Unix()         = T + 1                      (truncated to seconds)
  header.Time < now.Unix() → false                (adjustment skipped!)

This affects both the default path (blockTime=0, where GetActualTime()
falls back to time.Unix(header.Time, 0)) and the custom blockTime path
(where ActualTime has sub-second precision from the parent cache chain).

With no adjustment, GetActualTime() returns a time already in the past.
The interrupt timer in commitWork() expires immediately, which sets the
interruptBlockBuilding flag before fillTransactions() runs. The txpool's
Pending() checks this flag on every address iteration and returns an
empty map, producing a block with 0 transactions even when the pool has
pending transactions.

Fix by replacing the integer comparison with a direct time comparison
against the block's actual target time:

  if now.After(header.GetActualTime()) {

GetActualTime() returns header.ActualTime when set (custom blockTime
with Rio, sub-second precision), or time.Unix(header.Time, 0) as
fallback (default path). This correctly detects lateness in both cases
without over-triggering for on-time blocks, since on-time blocks have
their target time in the future.
…der reads (#2057)

* exp: disable verifyPendingHeaders

* fix: cap verify pending headers at default span length + 1

* fix: add reorg metrics in verify pending headers

* chore: add tests

* refactor: use milestone fetcher and milestone's end block as the start block

* fix: tests
* builder, internal, params: implement new burnContract in lisovo / define lisovo height for mainnet / bump version

* fix lint
@marcello33 marcello33 changed the title V2.6.0 beta candidate v2.6.0 Feb 18, 2026
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
1 Security Hotspot
4.2% Duplication on New Code (required ≤ 3%)
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@codecov
Copy link
Copy Markdown

codecov bot commented Feb 18, 2026

Codecov Report

❌ Patch coverage is 39.26461% with 925 lines in your changes missing coverage. Please review.
✅ Project coverage is 49.62%. Comparing base (e18de16) to head (1f257a6).
⚠️ Report is 597 commits behind head on master.

Files with missing lines Patch % Lines
core/rawdb/database.go 0.55% 178 Missing ⚠️
core/rawdb/accessors_history.go 0.00% 61 Missing ⚠️
core/rawdb/ancienttest/testsuite.go 0.00% 57 Missing ⚠️
core/rawdb/accessors_state.go 15.15% 55 Missing and 1 partial ⚠️
core/overlay/state_transition.go 0.00% 47 Missing ⚠️
core/blockchain.go 61.76% 33 Missing and 6 partials ⚠️
accounts/abi/bind/backends/simulated.go 30.18% 35 Missing and 2 partials ⚠️
consensus/bor/heimdallgrpc/client.go 0.00% 32 Missing ⚠️
consensus/misc/eip4844/eip4844.go 51.78% 24 Missing and 3 partials ⚠️
core/rawdb/pruner.go 73.86% 18 Missing and 5 partials ⚠️
... and 51 more

❌ Your patch status has failed because the patch coverage (39.26%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #2065      +/-   ##
==========================================
+ Coverage   48.03%   49.62%   +1.58%     
==========================================
  Files         842      873      +31     
  Lines      144510   150616    +6106     
==========================================
+ Hits        69418    74742    +5324     
- Misses      70538    70819     +281     
- Partials     4554     5055     +501     
Files with missing lines Coverage Δ
accounts/abi/abigen/bind.go 32.75% <100.00%> (ø)
accounts/abi/reflect.go 89.93% <100.00%> (ø)
accounts/accounts.go 100.00% <ø> (ø)
accounts/keystore/key.go 62.90% <ø> (ø)
accounts/keystore/keystore.go 76.87% <100.00%> (+0.21%) ⬆️
accounts/keystore/passphrase.go 56.09% <ø> (ø)
accounts/keystore/presale.go 62.38% <ø> (ø)
accounts/scwallet/hub.go 0.00% <ø> (ø)
accounts/scwallet/securechannel.go 0.00% <ø> (ø)
accounts/usbwallet/hub.go 0.00% <ø> (ø)
... and 105 more

... and 265 files with indirect coverage changes

Files with missing lines Coverage Δ
accounts/abi/abigen/bind.go 32.75% <100.00%> (ø)
accounts/abi/reflect.go 89.93% <100.00%> (ø)
accounts/accounts.go 100.00% <ø> (ø)
accounts/keystore/key.go 62.90% <ø> (ø)
accounts/keystore/keystore.go 76.87% <100.00%> (+0.21%) ⬆️
accounts/keystore/passphrase.go 56.09% <ø> (ø)
accounts/keystore/presale.go 62.38% <ø> (ø)
accounts/scwallet/hub.go 0.00% <ø> (ø)
accounts/scwallet/securechannel.go 0.00% <ø> (ø)
accounts/usbwallet/hub.go 0.00% <ø> (ø)
... and 105 more

... and 265 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@marcello33 marcello33 merged commit 6f2d79b into master Feb 18, 2026
19 of 21 checks passed
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.