Commit graph

17270 commits

Author SHA1 Message Date
rjl493456442
26d0b2171c
core, eth/catalyst, beacon/engine: update for glam8 (#35514)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Keeper Build (push) Has been cancelled
/ Windows Build (push) Has been cancelled
/ Docker Image (push) Has been cancelled
A few updates for glamsterdam devnet, taking the original commits from
@spencer-tb

- making the TargetGasLimit as the optional parameters
- ensuring the system call's code exists (EIP-7002/7251/8282)
- rework the fork selection rules in the engine API

---------

Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
2026-08-18 09:40:10 +08:00
Csaba Kiraly
6017c756e2
crypto/kzg4844: add BlobsFromDataCells for zero-KZG blob reconstruction (#35528)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
When the full data domain (cell indices 0..DataPerBlob-1) is present, a
blob is the concatenation of its data cells, so it can be reconstructed
without any KZG work. Add BlobsFromDataCells, which returns the blobs by
concatenation when the data cells are present in canonical order and
declines otherwise (so callers fall back to RecoverBlobs). Its accepted
inputs are a strict subset of those accepted by RecoverBlobs, so a
successful result is byte-identical; being pure byte copying it is
independent of the selected KZG backend.

Shared primitive: used both to skip KZG recovery when serving blobs and
by the cell-recovery path (RecoverCells).
2026-08-17 15:08:13 +02:00
이호재
f1df7a0e26
eth: return error instead of panicking on debug_executionWitness (#35544)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-08-17 14:22:20 +08:00
0xSHKWON
6bb0588ad8
common/lru, core/vm: count key bytes against the precompile cache budget (#35526)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Keeper Build (push) Has been cancelled
/ Windows Build (push) Has been cancelled
/ Docker Image (push) Has been cancelled
#35473 keys the precompile cache on the input, but SizeConstrainedCache
only counts the value’s bytes, so a cacheable empty output (e.g. a
failed ECRECOVER) is never evicted and grows the cache without bound.

Skipping empty outputs alone would still leave sha256/ripemd160 ~256x
over budget, and would only hold as long as every failing output happens
to be empty.
2026-08-13 18:17:00 -05:00
Bosul Mun
aa1f2fcf51
eth/fetcher: validate announced blob tx size against announcer's protocol version (#35524)
eth/72 announces blob transactions without the blob payload while eth/71
includes it, so the same transaction is announced with different
sizes. Compare each announcement against the size expected for that
peer's version instead of a single size so that honest peers on either version
are no longer dropped on delivery.
2026-08-13 17:42:52 +02:00
Jochem Brouwer
393555b097
eth: don't read a blob pool that is still initialising (#35509)
Some checks are pending
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
/ Linux Build (push) Waiting to run
`BlobPool.Init` builds the lookup, index and store without holding
`p.lock`, and `eth/backend.go` publishes the pool to `blobpool.NewCache`
before `txpool.New` runs Init. Cache.update spawns a goroutine calling
`getByVhash`, so it can read the pool mid-construction:

```
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x28]
    blobpool.(*BlobPool).getByVhash(...)  blobpool.go:1303
    blobpool.(*Cache).update.func1()      cache.go:429
```

`Init` fills the lookup inside `billy.Open`, whose index callback runs
`parseTransaction` -> `trackTransaction`, and assigns `p.store` only
once `billy.Open` returns. For that window a lookup hit names a
transaction whose store does not exist yet, and `p.store.Get`
dereferences nil.

Build the cache after `txpool.New` so no reader exists while `Init` runs
-- `getByVhash` has exactly one caller -- and have `getByVhash` read the
store under the same lock as the lookup, returning nil when it is not
set.

A benchmark harness that restarts the client once per test hit this on
1-4% of starts; a node that starts once rarely will.
2026-08-13 13:26:11 +02:00
rjl493456442
35fe1bf69c
core/state: unset the block-level accessList in Finalise (#35498)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
This PR explicitly clears the referenced block access list at the end of
each transaction. This is essential because accounts are shadow-copied
into the global block access list, and it prevents accidental mutations
through stale references in StateDB.
2026-08-13 10:56:10 +08:00
rjl493456442
7924511bf6
build, internal: add retry mechanism in package uploading (#35510)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
See https://github.com/ethereum/go-ethereum/issues/35435 for more
information
2026-08-12 10:58:40 -05:00
SillyZir
4307ee86f8
eth/syncer: only synthesize finalized/safe markers with an explicit sync target (#35433)
Fixes #35418.

After a restart, the syncer sets the finalized marker to head−64 and the
safe marker to head−32 on every downloader sync event, ignoring epoch
boundaries. Since this service is registered unconditionally and
`api_backend` serves `CurrentFinalBlock()` verbatim,
`eth_getBlockByNumber("finalized")` can return a mid-epoch block that
was never finalized and can still be reorged.

The synthesized markers exist to make `finalized`/`safe` usable when no
consensus client is attached. This change scopes them to exactly that
case: they are only set when an explicit sync target has been specified
(`--synctarget`), which is the only mode where no CL supplies real
checkpoints. Normal nodes now never override consensus-client
checkpoints.

`TestSyncerDoesNotInventFinalityMarkers` syncs a node to head with no CL
finality input and asserts the chain's finalized/safe markers stay
unset; it fails on master (finalized invented at head−64) and passes
with this change.

---------

Co-authored-by: SillyZir <269283839+SillyZir@users.noreply.github.com>
Co-authored-by: Jonny Rhea <5555162+jrhea@users.noreply.github.com>
Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
2026-08-12 10:57:13 -05:00
rjl493456442
ee0607cdcc
cmd, core, eth, internal: deprecate state sizer (#35520)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
StateSize is a development tool for calculating and tracking the size of
the state. It was requested by ethPandaOps a while ago, but it has since
been superseded by another approach that captures state changes via a
live tracer. Therefore, this tool can be retired to reduce maintenance
overhead.
2026-08-12 19:36:55 +08:00
Jonny Rhea
98a0080a2c
core/vm: key the precompile cache on the input instead of its hash (#35473)
#35388 keys the cache on `keccak256(address, input)`. Hashing the input
is most of the cost of a lookup, and it scales with input size, so a
large input is expensive to look up even when the result is trivial.
That is why several precompiles had to opt out to stay ahead of it.

@ayamiyaguchi spotted this and wrote the first commit here, which
excluded the precompiles the key cost was hurting most. This takes the
same finding in a different direction by making the key cheap in the
first place, so those precompiles do not need excluding.

The solution here is to key on the input bytes directly, plus three
changes that follow from it:

1) Entries used to share one LRU, so a high-volume precompile could
evict the pairing and modexp results the cache exists to hold. Each
precompile now gets its own.

2) Now that the key is the input, entries run from tens of bytes to
kilobytes, and a count means very different memory depending on the mix.
Each precompile gets 1 MiB of keys and values.

3) A precompile is cached only if it says so, and can narrow an input to
the bytes that determine the result via `NormalizeInput` so padding
lands on the entry the unpadded call already made.

### Benchmarks

Medians of five runs. 

#### Lookup versus running the precompile, at real vector sizes

| precompile           |  input |     #35388 |    this PR |       run |
|----------------------|--------|------------|------------|-----------|
| ECREC                |    128 |     480 ns |      55 ns |   18.2 µs |
| SHA256               |    128 | not cached |      58 ns |     79 ns |
| RIPEMD160            |    128 | not cached |      55 ns |    454 ns |
| ID                   |    128 | not cached | not cached |     16 ns |
| MODEXP               |    609 |     1.1 µs |     128 ns |    2.9 µs |
| BN254_ADD            |    128 |     478 ns |      54 ns |    1.0 µs |
| BN254_MUL            |     96 |     279 ns |      52 ns |   13.4 µs |
| BN254_PAIRING        |    384 |     698 ns |      85 ns |  490.1 µs |
| BLAKE2F              |    213 |     486 ns |      67 ns |    118 ns |
| KZG_POINT_EVALUATION |    192 |     488 ns |      61 ns |  785.8 µs |
| BLS12_G1ADD          |    256 |     697 ns |      68 ns |    1.9 µs |
| BLS12_G1MSM          |    160 |     488 ns |      60 ns |   95.4 µs |
| BLS12_G2ADD          |    512 |     911 ns |     103 ns |    2.9 µs |
| BLS12_G2MSM          |    288 |     708 ns |      74 ns |  181.3 µs |
| BLS12_PAIRING_CHECK  |    384 |     713 ns |      85 ns |  445.6 µs |
| BLS12_MAP_FP_TO_G1   |     64 |     282 ns |      45 ns |   30.7 µs |
| BLS12_MAP_FP2_TO_G2  |    128 |     490 ns |      55 ns |  135.0 µs |
| P256VERIFY           |    160 |     494 ns |      60 ns |   33.6 µs |

RIPEMD160 wasn't cached before and a lookup now costs 55 ns against 454
ns to run it. BN254_ADD was cached previously, but at 478 ns to look up
against a 1 µs run the cache was barely paying for itself. With this
change, the lookup is now 54 ns and much more worth it.

#### The same measurement at the largest eligible input, 8 KiB

| precompile           |     #35388 |          this PR |       run |
|----------------------|------------|------------------|-----------|
| ECREC                |    12.9 µs |            74 ns |    131 ns |
| SHA256               | not cached |           1.1 µs |    2.6 µs |
| RIPEMD160            | not cached |           1.2 µs |   17.9 µs |
| ID                   | not cached |       not cached |    969 ns |
| MODEXP               |    13.0 µs |            56 ns |     50 ns |
| BN254_ADD            |    12.9 µs |            67 ns |     60 ns |
| BN254_MUL            |    12.9 µs |            56 ns |    6.4 µs |
| BN254_PAIRING        |    12.8 µs | 5 ns, not cached |      2 ns |
| BLAKE2F              |    12.9 µs | 5 ns, not cached |      1 ns |
| KZG_POINT_EVALUATION |    12.9 µs | 4 ns, not cached |      1 ns |
| BLS12_G1ADD          |    12.8 µs | 5 ns, not cached |      1 ns |
| BLS12_G1MSM          |    13.0 µs | 4 ns, not cached |      1 ns |
| BLS12_G2ADD          |    13.0 µs | 4 ns, not cached |      1 ns |
| BLS12_G2MSM          |    12.9 µs | 4 ns, not cached |      1 ns |
| BLS12_PAIRING_CHECK  |    13.0 µs | 5 ns, not cached |      1 ns |
| BLS12_MAP_FP_TO_G1   |    13.0 µs | 4 ns, not cached |      1 ns |
| BLS12_MAP_FP2_TO_G2  |    12.8 µs | 4 ns, not cached |      1 ns |
| P256VERIFY           |    13.0 µs | 4 ns, not cached |      1 ns |

The `#35388` column is flat at ~13 µs because the key is a hash of the
input and does not depend on which precompile receives it. In the `this
PR` column, the number beside "not cached" is the cost of deciding not
to build a key: those precompiles require an exact length, so an 8 KiB
input is one they will reject, and there is no result worth keying. The
`run` column here is mostly a length rejection rather than work, so it
is context for the other two columns rather than a comparison.

---------

Co-authored-by: aya <aya@ethereum.org>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2026-08-12 09:41:46 +02:00
0xSHKWON
ceced06cb0
eth/downloader: don't signal sync startup before fetchers register for cancellation (#35515)
Close the started signal only after the fetchers are registered on
cancelWg, so suspend's Cancel actually waits for them instead of racing
the registration.
2026-08-12 15:31:51 +08:00
Jochem Brouwer
8f1a3fee9f
eth/catalyst: make headBlock reorging to finalized possible (#35519)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-08-12 13:22:38 +08:00
Chase Wright
87ab9435f5
eth/catalyst: pass targetGasLimit through in testing_buildBlockV1 (#35501)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
`testing_buildBlockV1` decodes `targetGasLimit` from the payload
attributes but does not pass it to `miner.BuildPayloadArgs`. The miner
then falls back to its configured gas ceiling, so the field is silently
ignored. The engine API path (`forkchoiceUpdated`) already passes it
through.

This matters for fixture generation in ethereum/execution-apis, where
`testing_buildBlockV1` builds Amsterdam test blocks and the gas limit
must honor the CL-provided target (see ethereum/execution-apis#857 and
ethereum/execution-apis#862).

The new test builds an Amsterdam block with a target inside the
per-block adjustment bound and checks the payload hits it exactly.
2026-08-11 20:28:01 +08:00
rjl493456442
c3185d9030
core/rawdb: retain BAL in bad blocks (#35423)
This PR introduces the functionalities to persist the local-built bad
blocks alongside additional execution details.
2026-08-11 19:58:26 +08:00
rjl493456442
42c5059b58
eth/protocols/snap: add tests and comments (#35477)
This PR updates some descriptions of snap sync v2, attaching two unit
tests.
2026-08-11 15:15:31 +08:00
rjl493456442
255842b750
core: revert block validation optimization (#35490)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
Reverts ethereum/go-ethereum#35403

Partially resolve https://github.com/ethereum/go-ethereum/issues/35478

Note, it's safe for mainnet, as the block-level accessList hasn't been
enabled yet.
2026-08-10 14:47:29 +08:00
rjl493456442
82061af43f
core/vm, params, tests: update gas price parameters (#35497)
https://github.com/ethereum/EIPs/pull/12083
2026-08-10 14:46:13 +08:00
0xSHKWON
b3e26093ec
eth/downloader: don't log stale access list reservations as errors (#35493)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
Since #35386 blocks are delivered without waiting for their access list,
a reserved BAL task can outlive its block and hit the stale branch of
`reserveHeaders`, which logs at error level — demote that case to debug.

---------

Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
2026-08-10 13:11:14 +08:00
cui
3735c34ffe
graphql: add slotNumber and BALHash to block schema (#35469) 2026-08-10 11:34:51 +08:00
0xSHKWON
219d2f22a1
core, params: rename RegularPerAuthBaseCost to ExecutionPerAuthBaseCost (#35486)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
Completes the regular → execution gas rename from #35457. The constant
now matches the EIP-8037 spec name `EXECUTION_PER_AUTH_BASE_COST`.

Pure mechanical rename, no value change.
2026-08-09 21:50:43 +08:00
0xoasis
cae76d5a3c
core/rawdb: verify canonical hash before reading ancient BAL (#35471)
Some checks are pending
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Linux Build (push) Waiting to run
2026-08-08 21:14:04 +08:00
daixiheguu
7e520c4310
eth/protocols/snap: advance catch-up pivot after batch commit (#35463)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-08-08 16:24:04 +08:00
rjl493456442
2a439ba452
eth/downloader: implement BAL downloading (#35386)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Keeper Build (push) Has been cancelled
/ Windows Build (push) Has been cancelled
/ Docker Image (push) Has been cancelled
This PR implements the BAL downloader. Once the Amsterdam fork is
enabled, BALs are scheduled for download for BAL-eligible blocks.

Unlike mandatory components such as block bodies, BALs are optional and
are downloaded on a best-effort basis. If a block's essential components
are ready for delivery before its BAL has been retrieved, the block will
be delivered without the BAL.
2026-08-06 14:36:01 +02:00
cui
b14428613b
eth/catalyst: use IsAmsterdam when sealing simulated beacon blocks (#35392)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-08-06 16:20:18 +08:00
0xoasis
c6c7ffbbaf
cmd/geth: release iterator in checkStateContent (#35376)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-08-06 10:32:47 +08:00
0xSHKWON
8e77ddbaa0
core: fail fast on transaction error in parallel block execution (#35465) 2026-08-06 10:21:22 +08:00
cui
a235d28192
accounts/abi: set stringKind for contract-typed arguments (#35345)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-08-05 14:58:41 +08:00
cui
2d8bc9f8c3
cmd/geth: return storage slot count from traverseStorage (#35302) 2026-08-05 14:34:28 +08:00
0xSHKWON
476ecbc571
core: surface database errors in parallel block execution (#35461) 2026-08-05 14:02:24 +08:00
0xSHKWON
9b702a9955
eth/downloader: hold pivotLock when reading pivot header in progress report (#35462) 2026-08-05 14:02:01 +08:00
Mario Vega
6d201e61c6
core: genesis slot number parsing (#35464)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
Small fix to the parsing of the `slotNumber` in the genesis file. Found
during hive testing.
2026-08-05 10:00:08 +08:00
Guillaume Ballet
e25efd2c62
common/mclock: rename symbol to remove conflicts with other languages (#35460)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
Calling a function `do` is fine in go, but when interacting with other
languages, namely C, this clashes with a known keyword, which some
compilers don't like.
2026-08-04 20:04:26 +08:00
0xSHKWON
1e0679c7e2
core, core/state: fix preimage recording in parallel block execution (#35459)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-08-04 15:55:36 +08:00
0xSHKWON
c42d4e4177
core: attach the precompile cache in parallel block execution (#35443) 2026-08-04 15:35:12 +08:00
rjl493456442
6434bc91d4
core, eth: rename regular gas to execution gas (#35457)
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2026-08-04 14:35:06 +08:00
Jonny Rhea
b483fe9e71
eth/syncer: fix nil deref when the target block is missing (#35442)
i didn't try to trigger the nil deref, but fixing it shouldn't be
controversial
2026-08-04 14:16:45 +08:00
rjl493456442
5131c031dd
cmd, consensus, core, miner: update 7997 (#35458)
https://eips.ethereum.org/EIPS/eip-7997
2026-08-04 07:54:29 +02:00
Marius van der Wijden
92a3bed7f2
core: update 2780 and 8038 parameters (#35454)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
https://github.com/ethereum/EIPs/pull/12056
https://github.com/ethereum/EIPs/pull/11997
2026-08-04 10:36:49 +08:00
0xSHKWON
83f0795a60
core: fix data race on the BLOCKHASH cache in parallel block execution (#35441) 2026-08-04 08:41:08 +08:00
spencer
7a1b11564c
core/txpool/blobpool: fall back to pool in GetCells for blob-mode cache entries (#35439)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Keeper Build (push) Has been cancelled
/ Windows Build (push) Has been cancelled
/ Docker Image (push) Has been cancelled
## Description

Blob mode cache entries (the default until a CL advertises
`engine_getBlobsV4` via `engine_exchangeCapabilities`) carry no cells,
but `Cache.GetCells` treated any entry as a hit and served null cells
from the empty custody set instead of falling back to the pool.

Found via the EELS execute-blobs simulator (EIP-8070 `engine_getBlobsV4`
tests), which never calls `engine_exchangeCapabilities`: null cells
appeared intermittently depending on the race with the 1s top-K preload.
With the fix the suite passes 139/139 (from 87/139 on master).
2026-07-30 17:39:50 +02:00
Jonny Rhea
b988c00bf4
eth/protocols/snap: purge stale sync state when snap sync v2 is re-enabled (#35316)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Keeper Build (push) Has been cancelled
/ Windows Build (push) Has been cancelled
/ Docker Image (push) Has been cancelled
If snap sync v2 is re-enabled after a previous sync already completed
and committed its pivot, the leftover journal is now discarded instead
of resumed.
2026-07-29 10:59:18 +08:00
rjl493456442
454ca784c5
core: implement parallel block execution with BAL (#35264)
Some checks are pending
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
/ Linux Build (push) Waiting to run
This PR implements the parallel block executor, with the execution
pre-state
derived from the block-level access list.
2026-07-28 15:17:09 +02:00
Bosul Mun
38271784c2
eth/protocols: fix Cells/GetCells RLP encoding (#35428)
Some checks are pending
/ Linux Build (arm) (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Docker Image (push) Waiting to run
/ Linux Build (push) Waiting to run
This PR aligns the `Cells` and `GetCells` message implementations with
the spec: https://github.com/ethereum/devp2p/blob/master/caps/eth.md#getcells-0x14

Previously, `GetCellsPacket` and `CellsPacket` embedded `GetCellsRequest` 
and `CellsResponse`. This caused them to be encoded as nested lists, which
does not match the wire format defined by the spec. This PR inlines their fields
to flatten the RLP layout of `Cells` and `GetCells`.
2026-07-28 13:13:32 +08:00
Jonny Rhea
d6f222a081
core, core/vm: precompile result caching (#35388)
Blocks heavy in precompile calls (e.g. Aztec's proof settlement txs)
spend most of their processing time on operations (ECMUL, pairings, KZG
point evaluation, MODEXP) that the state prefetcher has already computed
and thrown away.

This PR adds a precompile result cache shared between the prefetcher and
block processing (and the miner), following the JumpDestCache pattern.
Note that cached precompiles are keyed by address and input, with
entries partitioned by the active precompile set, so a fork that changes
the behavior behind an address can never be served results from before
it.

---------

Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2026-07-28 10:47:33 +08:00
Marius van der Wijden
1bfc028d43
miner: don't seal block if a db error occurred (#35427)
A corrupted node should not create a bad block, but rather error out

---------

Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
2026-07-28 10:30:40 +08:00
rjl493456442
3dad51ec5b
version: start v1.17.6 release cycle (#35425)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
2026-07-27 21:17:45 +08:00
rjl493456442
9621c6ad10
version: release v1.17.5 (#35421) 2026-07-27 16:14:16 +08:00
rjl493456442
cff7fcbb95
go.mod: update snappy dependency (#35422)
This PR updates the go-snappy dependency.
2026-07-27 09:34:59 +02:00
rjl493456442
ca1f2e4d38
core: fix tx size calculation (#35406)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Keeper Build (push) Has been cancelled
/ Windows Build (push) Has been cancelled
/ Docker Image (push) Has been cancelled
This PR fixes the incorrect size calculation for blob sidecar. The
original formula is for legacy sidecar without the version tag. As the
legacy version has been deprecated and no longer supported by the Geth's
blobPool, the size calculation should also be flipped to sidecar v1.
2026-07-24 10:50:20 +02:00