cmd/geth: log current key in expandVerkle instead of keylist[0]#32689
Merged
gballet merged 1 commit intoethereum:masterfrom Oct 16, 2025
Merged
cmd/geth: log current key in expandVerkle instead of keylist[0]#32689gballet merged 1 commit intoethereum:masterfrom
gballet merged 1 commit intoethereum:masterfrom
Conversation
gballet
approved these changes
Oct 16, 2025
rjl493456442
pushed a commit
to rjl493456442/go-ethereum
that referenced
this pull request
Oct 28, 2025
…reum#32689) 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.
atkinsonholly
pushed a commit
to atkinsonholly/ephemery-geth
that referenced
this pull request
Nov 24, 2025
…reum#32689) 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.
prestoalvarez
pushed a commit
to prestoalvarez/go-ethereum
that referenced
this pull request
Nov 27, 2025
…reum#32689) 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.
UlysseCorbeil
pushed a commit
to streamingfast/go-ethereum
that referenced
this pull request
Feb 18, 2026
* eth/filters: uninstall subscription in filter apis on error (ethereum#32894) Fix ethereum#32893. In the previous 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. * triedb, core/rawdb: implement the partial read in freezer (ethereum#32132) 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> * p2p/enode: optimize LogDist (ethereum#32887) This speeds up LogDist by 75% using 64-bit operations instead of byte-wise XOR. --------- Co-authored-by: Felix Lange <fjl@twurst.com> * p2p/enode: optimize DistCmp (ethereum#32888) This speeds up DistCmp by 75% through using 64-bit operations instead of byte-wise XOR. * core/txpool/legacypool: move queue out of main txpool (ethereum#32270) 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> * cmd/workload: filter fuzzer test (ethereum#31613) 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. * p2p/discover: wait for bootstrap to be done (ethereum#32881) This ensures the node is ready to accept other nodes into the table before it is used in a test. Closes ethereum#32863 * triedb/pathdb: catch int conversion overflow in 32-bit (ethereum#32899) 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. * eth/catalyst: remove useless log on enabling Engine API (ethereum#32901) * eth: do not warn on switching from snap sync to full sync (ethereum#32900) This happens normally after a restart, so it is better to use Info level here. Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com> * core/txpool/legacypool: fix pricedList updates (ethereum#32906) This pr addresses a few issues brought by the ethereum#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. * accounts/abi: check presence of payable fallback or receive before proceeding with transfer (ethereum#32374) remove todo * internal/ethapi: convert legacy blobtx proofs in sendRawTransaction (ethereum#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. * rpc: fix flaky test TestServerWebsocketReadLimit (ethereum#32889) * eth/protocols/eth: reject message containing duplicated txs and drop peer (ethereum#32728) Drop peer if sending the same transaction multiple times in a single message. Fixes 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> * p2p/discover: remove hot-spin in table refresh trigger (ethereum#32912) This fixes a regression introduced in ethereum#32518. In that PR, we removed the slowdown logic that would throttle lookups when the table runs empty. Said logic was originally added in ethereum#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. * version: release go-ethereum v1.16.5 stable * version: begin v1.16.6 release cycle * cmd/geth: log current key in expandVerkle instead of keylist[0] (ethereum#32689) 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. * ethclient: add support for eth_simulateV1 (ethereum#32856) 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> * internal/ethapi: add eth_SendRawTransactionSync (ethereum#32830) 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#32094 --------- Co-authored-by: aodhgan <gawnieg@gmail.com> Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com> * core/state: state copy bugfixes with Verkle Trees (ethereum#31696) 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> * eth/ethconfig : fix eth generate config (ethereum#32929) * eth, internal: add blob conversion for SendRawTransactionSync (ethereum#32930) * solve conflicts * cmd/utils: use maximum uint64 value for receipt chain insertion (ethereum#32934) * use context for witness and fix its test * fix witness test due to state type change * remove geth discarded code / reformat * fix AnnouncementsOnly tests * tracers data edits due to tests run * eth/fetcher: add metrics for tracking slow peers (ethereum#32964) This PR introduces two new metrics to monitor slow peers - One tracks the number of slow peers. - The other measures the time it takes for those peers to become "unfrozen" These metrics help with monitoring and evaluating the need for future optimization of the transaction fetcher and peer management, for example i n peer scoring and prioritization. Additionally, this PR moves the fetcher metrics into a separate file, `eth/fetcher/metrics.go`. * eth/fetcher: remove dangling peers from alternates (ethereum#32947) This PR removes dangling peers in `alternates` map In the current code, a dropped peer is removed from alternates for only the specific transaction hash it was requesting. If that peer is listed as an alternate for other transaction hashes, those entries still stick around in alternates/announced even though that peer already got dropped. * triedb/pathdb: fix index out of range panic in decodeSingle (ethereum#32937) Fixes TestCorruptedKeySection flaky test failure. https://github.com/ethereum/go-ethereum/actions/runs/18600235182/job/53037084761?pr=32920 * core/types: prealloc map in HashDifference as in TxDifference (ethereum#32946) * eth/filters: avoid rebuild the hash map multi times (ethereum#32965) * core/vm: don't call SetCode after contract creation if initcode didn't return anything (ethereum#32916) The code change is a noop here, and the tracing hook shouldn't be invoked if the account code doesn't actually change. * cmd/keeper: use the ziren keccak precompile (ethereum#32816) Uses the go module's `replace` directive to delegate keccak computation to precompiles. This is still in draft because it needs more testing. Also, it relies on a PR that I created, that hasn't been merged yet. _Note that this PR doesn't implement the stateful keccak state structure, and it reverts to the current behavior. This is a bit silly since this is what is used in the tree root computation. The runtime doesn't currently export the sponge. I will see if I can fix that in a further PR, but it is going to take more time. In the meantime, this is a useful first step_ * params: enable osaka on dev mode (ethereum#32917) enables the osaka fork on dev mode --------- Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com> * core/txpool: Initialize journal writer for tx tracker (ethereum#32921) Previously, the journal writer is nil until the first time rejournal (default 1h), which means during this period, txs submitted to this node are not written into journal file (transactions.rlp). If this node is shutdown before the first time rejournal, then txs in pending or queue will get lost. Here, this PR initializes the journal writer soon after launch to solve this issue. --------- Co-authored-by: Gary Rong <garyrong0905@gmail.com> * core/state: prevent SetCode hook if contract code is not changed (ethereum#32980) This PR prevents the SetCode hook from being called when the contract code remains unchanged. This situation can occur in the following cases: - The deployed runtime code has zero length - An EIP-7702 authorization attempt tries to unset a non-delegated account - An EIP-7702 authorization attempt tries to delegate to the same account * triedb/pathdb: make batch with pre-allocated size (ethereum#32914) In this PR, the database batch for writing the history index data is pre-allocated. It's observed that database batch repeatedly grows the size of the mega-batch, causing significant memory allocation pressure. This approach can effectively mitigate the overhead. * bump codeql versions * cmd/geth: add flag to set genesis (ethereum#32844) This PR is an alternative to ethereum#32556. Instead of trying to be smart and reuse `geth init`, we can introduce a new flag `--genesis` that loads the `genesis.json` from file into the `Genesis` object in the same path that the other network flags currently work in. Question: is something like `--genesis` enough to start deprecating `geth init`? -- ```console $ geth --datadir data --hoodi .. INFO [10-06|22:37:11.202] - BPO2: @1762955544 .. $ geth --datadir data --genesis genesis.json .. INFO [10-06|22:37:27.988] - BPO2: @1862955544 .. ``` Pull the genesis [from the specs](https://raw.githubusercontent.com/eth-clients/hoodi/refs/heads/main/metadata/genesis.json) and modify one of the BPO timestamps to simulate a shadow fork. --------- Co-authored-by: rjl493456442 <garyrong0905@gmail.com> * core/types: remove unused `ErrInvalidTxType` var (ethereum#32989) The var `ErrInvalidTxType` is never used in the code base. * blockAlloc test * core/state: fix the flaky TestSizeTracker (ethereum#32993) * cmd/devp2p: distinguish the jwt in devp2p and geth (ethereum#32972) This PR fixes some docs for the devp2p suite and uses the CLI library's required value instead of manually checking if required flags are passed. * p2p: silence on listener shutdown (ethereum#33001) Co-authored-by: Felix Lange <fjl@twurst.com> * cmd/utils: use IsHexAddress method (ethereum#32997) Using the `IsHexAddress` method will result in no gaps in the verification logic, making it simpler. * crypto: implement ziren keccak state (ethereum#32996) The ethereum#32816 was only using the keccak precompile for some minor task. This PR implements a keccak state, which is what is used for hashing the tree. * rpc: fix a flaky test of the websocket (ethereum#33002) Found in https://github.com/ethereum/go-ethereum/actions/runs/17803828253/job/50611300621?pr=32585 ``` --- FAIL: TestClientCancelWebsocket (0.33s) panic: read tcp 127.0.0.1:36048->127.0.0.1:38643: read: connection reset by peer [recovered, repanicked] goroutine 15 [running]: testing.tRunner.func1.2({0x98dd20, 0xc0005b0100}) /opt/actions-runner/_work/_tool/go/1.25.1/x64/src/testing/testing.go:1872 +0x237 testing.tRunner.func1() /opt/actions-runner/_work/_tool/go/1.25.1/x64/src/testing/testing.go:1875 +0x35b panic({0x98dd20?, 0xc0005b0100?}) /opt/actions-runner/_work/_tool/go/1.25.1/x64/src/runtime/panic.go:783 +0x132 github.com/ethereum/go-ethereum/rpc.httpTestClient(0xc0001dc1c0?, {0x9d5e40, 0x2}, 0xc0002bc1c0) /opt/actions-runner/_work/go-ethereum/go-ethereum/rpc/client_test.go:932 +0x2b1 github.com/ethereum/go-ethereum/rpc.testClientCancel({0x9d5e40, 0x2}, 0xc0001dc1c0) /opt/actions-runner/_work/go-ethereum/go-ethereum/rpc/client_test.go:356 +0x15f github.com/ethereum/go-ethereum/rpc.TestClientCancelWebsocket(0xc0001dc1c0?) /opt/actions-runner/_work/go-ethereum/go-ethereum/rpc/client_test.go:319 +0x25 testing.tRunner(0xc0001dc1c0, 0xa07370) /opt/actions-runner/_work/_tool/go/1.25.1/x64/src/testing/testing.go:1934 +0xea created by testing.(*T).Run in goroutine 1 /opt/actions-runner/_work/_tool/go/1.25.1/x64/src/testing/testing.go:1997 +0x465 FAIL github.com/ethereum/go-ethereum/rpc 0.371s ``` In `testClientCancel` we wrap the server listener in `flakeyListener`, which schedules an unconditional close of every accepted connection after a random delay, if the random delay is zero then the timer fires immediately, and then the http client paniced of connection reset by peer. Here we add a minimum 10ms to ensure the timeout won't fire immediately. Signed-off-by: jsvisa <delweng@gmail.com> * remove TODOs * eth/tracers: fix crasher in TraceCall with BlockOverrides (ethereum#33015) fix ethereum#33014 --------- Co-authored-by: lightclient <lightclient@protonmail.com> * .gitea/workflows, build: add release build for keeper (ethereum#32632) * build: fix keeper build (ethereum#33018) At the time keeper support was added into ci.go, we were using a go.work file to make ./cmd/keeper accessible from within the main go-ethereum module. The workspace file has since been removed, so we need to build keeper from within its own module instead. * core/rawdb, triedb/pathdb: re-structure the trienode history header (ethereum#32907) In this PR, several changes have been made: (a) restructure the trienode history header section Previously, the offsets of the key and value sections were recorded before encoding data into these sections. As a result, these offsets referred to the start position of each chunk rather than the end position. This caused an issue where the end position of the last chunk was unknown, making it incompatible with the freezer partial-read APIs. With this update, all offsets now refer to the end position, and the start position of the first chunk is always 0. (b) Enable partial freezer read for trienode data retrieval The partial freezer read feature is now utilized in trienode data retrieval, improving efficiency. * rpc: remove unused vars (ethereum#33012) * core/state: improve accessList copy (ethereum#33024) * remove validate_pr workflow * fix lint * core: don't modify the shared chainId between tests (ethereum#33020) * fix config rpc * core/types: optimize modernSigner.Equal (ethereum#32971) Equal is called every time the transaction sender is accessed, even when the sender is cached, so it is worth optimizing. --------- Co-authored-by: Felix Lange <fjl@twurst.com> * core: refine condition for using legacy chain freezer directory (ethereum#33032) * internal/jsre: pass correct args to setTimeout/setInterval callbacks (ethereum#32936) ## Description - Summary: Correct the JS timer callback argument forwarding to match standard JS semantics. - What changed: In `internal/jsre/jsre.go`, the callback is now invoked with only the arguments after the callback and delay. - Why: Previously, the callback received the function and delay as parameters, causing unexpected behavior and logic bugs for consumers. * .github: add 32-bit CI targets (ethereum#32911) This adds two new CI targets. One is for building all supported keeper executables, the other is for running unit tests on 32-bit Linux. --------- Co-authored-by: Felix Lange <fjl@twurst.com> * accounts/abi/bind/v2: fix error assertion in test (ethereum#33041) * p2p: cleanup v4 if v5 failed (ethereum#33005) Clean the previous resource (v4) if the latter (v5) failed. * common: simplify FileExist helper (ethereum#32969) * eth/downloader: fix incorrect waitgroup in test `XTestDelivery` (ethereum#33047) * eth/tracers: fix prestateTracer for EIP-6780 SELFDESTRUCT (ethereum#33050) fix ethereum#33049 * common: fix duration comparison in PrettyAge (ethereum#33064) This pull request updates `PrettyAge.String` so that the age formatter now treats exact unit boundaries (like a full day or week) as that unit instead of spilling into smaller components, keeping duration output aligned with human expectations. * core/rawdb: fix db inspector by supporting trienode history (ethereum#33087) * params: set osaka and BPO1 & BPO2 mainnet dates (ethereum#33063) Sets the fusaka, bpo1, bpo2 timestamps for mainnet see: https://notes.ethereum.org/@bbusa/fusaka-bpo-timeline * version: release go-ethereum v1.16.6 * version: begin v1.16.7 release cycle * go.mod: update to c-kzg v2.1.5 (ethereum#33093) We unfortunately missed this update for the Geth v1.16.6 release, but it is critical. * version: release go-ethereum v1.16.7 stable * fix lint * miner: set maxBlockSizeBufferZone to zero * cmd: go mod tidy * eth/protocols/wit: made protocol version consistent (ethereum#1940) * chore: fix function name in comment and correct spelling error in config.go (ethereum#1956) Signed-off-by: findfluctuate <findfluctuate@outlook.com> * chore: remove repetitive word in comment (ethereum#1909) Signed-off-by: liuyueyangxmu <liuyueyangxmu@outlook.com> * core/txpool: added nil checks to prevent crash in stateless mode (ethereum#1961) * Enforce patch code coverage (ethereum#1964) * Enforce patch code coverage * Use CODECOV_TOKEN explicitly * consensus/bor,core,eth,internal/ethapi,tests: regen mocks and fix tests * eth: fix lint * internal/ethapi: fix tests * eth: skip TestBlobTransactionAnnounce * core, eth: added LRU memory cache to save witnesses in memory (ethereum#1962) * core, eth: added LRU memory cache to save 256 witnesses in memory * core: added unit test for LRU witness cache * added a wrapper function to write witness in the db and add cache * minor check * added more tests to increase coverage * fix lint * update tests * core: rm redundant updation of queuedEvictionMeter * internal/cli: port txsync flags to new-cli * eth, internal: add logquerylimit into internal cli * chore: fix linter * consensus/bor: ensure late blocks have sufficient build time (ethereum#1963) * consensus/bor: ensure late blocks have sufficient build time When a parent block is sealed late (actual seal time exceeds its timestamp), the next block had insufficient time to include transactions, resulting in empty blocks. Problem: - Parent block timestamp: T=2s, sealed at T=4s (2s late) - Next block gets timestamp: parent + period = 4s - Current time: 4s - Build time available: 0s → empty block Solution: Set header.Time = now + blockPeriod when scheduled time has passed, giving blocks full build time regardless of parent seal latency. * Address comment * version: begin v1.16.8 release cycle * core/txpool: drop peers on invalid KZG proofs Co-authored-by: Gary Rong <garyrong0905@gmail.com> Co-authored-by: MariusVanDerWijden <m.vanderwijden@live.de>: * crypto/ecies: use aes blocksize Co-authored-by: Gary Rong <garyrong0905@gmail.com> * version: release go-ethereum v1.16.8 stable * Return nil from heimdall mock on milestone/checkpoint (ethereum#1988) * fix randomly failing TestCalcBaseFeeDelhi (ethereum#1987) * Increase veblop timeout to 8 seconds (ethereum#1986) * track cache metrics on bps * track commit time of a block on bp * finalize and assemble metrics * intermediate root timer * tests * fix integration tests * simplify test * lint issue * blockchain reader tests * more tests * more bor tests * fix lint * handle duplicate lines * more improvs on duplicates * more duplicate handling * ignore test utils for coverage and more tests * update code cov * fix ingore regex * moving test helpers to test files * remove unnecessary verkle on beacon and more bor coverage * fix(rpc): eth_simulateV1 method handler crash (ethereum#1955) * Verify BlobScheduleConfig before calling CalcBlobFee * set Nil withdrawals for bor simulation * simChainHeadReader implements core.BorStateSyncer * simplify fork checking * lint fixing * Add non nil chainConfig for testcase --------- Co-authored-by: Pratik Patil <pratikspatil024@gmail.com> * txpool: add stuck transaction rebroadcast mechanism (ethereum#1992) * txpool: add stuck transaction rebroadcast mechanism When transactions are broadcast to peers, they're marked as "known" in each peer's knownTxs cache. If the network send fails or the peer fails to request transaction body, the peer will never receive the transaction but the hash remains in knownTxs, preventing future rebroadcasts and causing transactions to get stuck. This change adds a periodic rebroadcast mechanism that: - Identifies immediately executable transactions older than RebroadcastInterval but younger than RebroadcastMaxAge - Clears their hashes from peers' knownTxs caches - Rebroadcasts them to the network * minor fix * Update default rebroadcast interval to 30s * add tests * Address comments * fix: add bor hfs to description and readheadertimeout in config (ethereum#2003) * init: CLAUDE.md file (ethereum#2000) * init: CLAUDE.md file * chore: add some core component and maintaining this file section * chore: add before making changes section * consensus/eip1559: add bhilai HF tests and minor refactor (ethereum#1990) * Validator Set Overrides on Config (ethereum#1958) * validator set overrides * including config of mainnet in missing files * more tests for coverage * remove duplication * Add Claude Assistant Workflows (ethereum#2006) * Add workflow fils * Disallow external contributors * Use opus * bind, params: fix bind/v2 tests and warn about invalid config/flag (ethereum#2007) * Switch to GCR * chore: fix lint and tidy cmd * params: change forks order * common: check for err * eth: fix config test * fix(ci): use custom kurtosis branch (ethereum#2012) * core, eth, internal: fix tests * core, internal: defensive unsubscribe on headers chan * cmd, p2p: fix bug and return on error * chore: fix lint * eth: implemented peer consensus based witness verification (ethereum#1766) * eth: implemented peer consensus based witness verification * eth/fetcher: update peer drop mechanism * eth: added dynamic page limit for witness based on gas limit * eth: fix lint * eth: download witness within limit and block for verificatio * eth: fix lint * eth, core: added a check to fix a potential vulnerability and added test case * eth, core: include the original peer in the consenses to get consenses between 3 peers * eth: implemented RequestWitnessPageCount * eth: implemented wit/2 and added new message type to get the witness metadata * eth: updated mock file * eth: removed code duplication * eth: dropping peer immediately when page count verification fails * eth: added more comments * eth/fetcher: removed the witness verification cache * eth: excluded the original peer from the selection * eth: using peer jailing * eth: more jailing when bahaving maliciously * renamed wit1 to wit0 and wit2 to wit1 * added tests * added more tests * fixed code duplication and lint * eth: added unit tests * eth: added unit tests for handleGetWitnessMetadata and the GetWitnessMetadataPacket case in Handle * eth: added unit tests for RequestWitnessMetadata and ReplyWitnessMetadata * eth/protocols/wit: added unit test for handleGetWitnessMetadata and handleWitnessMetadata * eth/protocols/wit: fixed panic in TestReplyWitnessMetadata * eth/protocols/wit: added unit test to verify wit/1 map and switch between protocols * eth: covered remaining lines in peer.go * eth: covered remaining lines in handler_eth.go * eth: smaller test to increase coverage * eth: test to test the handler's Handle function * eth: test remaining jail peer function * eth: fixed panic * eth: added get the gas limit from parent header, fallback to config if unavailable * eth/fetcher: updated unit test to test calculatePageThreshold * eth: added metrics for peer witness verification * reduced code duplication in unit tests * eth/protocols/wit: donot update the version number of wit0 * chore: fix lint * internal/cli: port TrieJournalDirectory and EnableStateSizeTracking * Various improvements (ethereum#1950) * consensus: avoid mixed fork root hash (#18) * consensus, core: state sync txs limits (#20) * eth/downloader: solve milestones whitelist concurrency bug (#22) * eth/downloader: fix test (#22) * eth: fix merkle root reorg on nil chain (#23) * consensus/bor/heimdallgrpc: fix grpc client (#12) * Revert "consensus, core: state sync txs limits (#20)" This reverts commit fdbbccc2fceaa6d65657371f8ec151250002c24d. * core: fix stateSync inner mismatch (issue 34) * miner: fix flaky commitInterrupt tests * chore: minor fixes on heimdall grpc client * cmd: tidy on cmd package * chore: fix lint * ci: load kurtosis images from gcr instead of docker hub (ethereum#2014) * chore: remove `cd` for `working-directory` * chore: free disk space directly in the kurtosis pre-run step * chore: regroup build steps * chore: use kurtosis-pos pre and post actions * ci: parallel docker builds * chore: remove kurtosis-pos path * ci: fix workflow permissions * fix: typo * chore: move permissions at the job level * test * fix: job order * chore: nit * fix: install polycli * chore: nit * chore: log local image info * Dynamic EIP-1559 params setup (ethereum#1989) * remove base fee validation * moving flags to miner setup * set values properly * proper format * claude feedback and coverage * minor missing cover scenario * lint fix * remove claude ignore * remove duplicate and fix tests * increase coverage * lint * Including integration tests for config changes and params divergence * boundary limits * race condition fix * Test validator's ability to rewind upon span rotation (ethereum#1960) * Test validator's ability to rewind upon span rotation * Add unit tests * Remove dup code * Parallelize tests * eth/protocols/eth: remove todo in p2p handlers * core: made parallel state processor and state processor consistent, to accept ChainContext * eth/tracers: include state sync tx in traces post-Madhugiri (ethereum#2010) * chore: fix lint * eth: fix concurrent map writes panic in witness protocol (ethereum#2023) Protect failedRequests map access with mapsMu lock in receiveWitnessPage and buildWitnessRequests to prevent "concurrent map writes" panic when multiple goroutines update retry counts simultaneously. * eth/fetcher: skip blob related test * core: (blockstm) added a check to discard negative tx dependencies * fix(api): tracers tests for state-sync tx (ethereum#2026) * Updating enodes for mainnet and amoy (ethereum#2021) * Updating enodes for mainnet and amoy * Fixed formatting * pruner: covering reorg scenarios (ethereum#1916) * pruning with reorg resistance * offline reorg logic * extra test * cover beyond head test scenario * consensus/bor: use CodeChangeUnspecified * Fix race conditions detected in make test-race Also added a nightly github action that runs race condition check * Address CR comments * Enable rebroadcast by default (ethereum#2028) * revert: P256VerifyGas to 3450 (ethereum#2030) * 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 (ethereum#2032) * fix(ci): test-state-sync * chore: rename actions * chore: nits * Enable rebroadcast by default (ethereum#2028) (ethereum#2037) * Install polycli in kurtosis e2e (ethereum#2036) This is required by opcode test in kurtosis_smoke_test.sh * lisovo: CLZ opcode and P256 gas cost changes (ethereum#2040) * 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 (ethereum#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> * chore: bump version * consensus/misc/eip4844: small update to fix simulatev1 crash (ethereum#2054) * core, internal, params: lisovoPro HF and version bump (ethereum#2055) * core, internal, params: lisovoPro HF and version bump * core: add lisovoPro instructionset * core: lisovo-lisovoPro instructionset test * consensus/bor: fix goroutine leak in runMilestoneFetcher when Heimdall is unreachable (ethereum#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. * fix(shutdown): cancel in-flight Heimdall queries on engine shutdown (ethereum#2058) * fix(shutdown): cancel in-flight Heimdall queries on engine shutdown * chore: nit * consensus/bor: fix sub-second late block detection producing empty blocks (ethereum#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. * fix(core): cap verifyPendingHeaders to prevent OOM from unbounded header reads (ethereum#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 * cmd: bump go * builder, internal, params: pip-82 and lisovo HF in mainnet (ethereum#2064) * builder, internal, params: implement new burnContract in lisovo / define lisovo height for mainnet / bump version * fix lint --------- Signed-off-by: jsvisa <delweng@gmail.com> Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com> Signed-off-by: findfluctuate <findfluctuate@outlook.com> Signed-off-by: liuyueyangxmu <liuyueyangxmu@outlook.com> Co-authored-by: Lewis <lewis.kim@kaia.io> Co-authored-by: Delweng <delweng@gmail.com> Co-authored-by: Gary Rong <garyrong0905@gmail.com> Co-authored-by: cui <cuiweixie@gmail.com> Co-authored-by: Felix Lange <fjl@twurst.com> Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de> Co-authored-by: Csaba Kiraly <csaba.kiraly@gmail.com> Co-authored-by: Felföldi Zsolt <zsfelfoldi@gmail.com> Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Co-authored-by: Csaba Kiraly <cskiraly@users.noreply.github.com> Co-authored-by: mishraa-G <divyansh.mishra.mec23@itbhu.ac.in> Co-authored-by: Galoretka <galoretochka@gmail.com> Co-authored-by: hero5512 <lvshuaino@gmail.com> Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com> Co-authored-by: aodhgan <36907214+aodhgan@users.noreply.github.com> Co-authored-by: aodhgan <gawnieg@gmail.com> Co-authored-by: Youssef Azzaoui <y@azzaoui.fr> Co-authored-by: ucwong <ucwong@126.com> Co-authored-by: CertiK <138698582+CertiK-Geth@users.noreply.github.com> Co-authored-by: Bosul Mun <bsbs8645@snu.ac.kr> Co-authored-by: maskpp <maskpp266@gmail.com> Co-authored-by: jwasinger <j-wasinger@hotmail.com> Co-authored-by: Kyrin <kyrincode@gmail.com> Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com> Co-authored-by: lightclient <lightclient@protonmail.com> Co-authored-by: Rizky Ikwan <rizzikwann@gmail.com> Co-authored-by: anim001k <140460766+anim001k@users.noreply.github.com> Co-authored-by: Austin Larson <78000745+alarso16@users.noreply.github.com> Co-authored-by: Coder <161350311+MamunC0der@users.noreply.github.com> Co-authored-by: wit liu <wit765765346@gmail.com> Co-authored-by: maradini77 <140460067+maradini77@users.noreply.github.com> Co-authored-by: Pratik Patil <pratikspatil024@gmail.com> Co-authored-by: findfluctuate <findfluctuate@outlook.com> Co-authored-by: liuyueyangxmu <liuyueyangxmu@outlook.com> Co-authored-by: Jerry <jerrycgh@gmail.com> Co-authored-by: Lucca Martins <lucca_martins30@yahoo.com.br> Co-authored-by: Angel Valkov <avalkov@polygon.technology> Co-authored-by: Krishang <109511742+kamuikatsurgi@users.noreply.github.com> Co-authored-by: kamuikatsurgi <shahkrishang11@gmail.com> Co-authored-by: Raneet Debnath <35629432+Raneet10@users.noreply.github.com> Co-authored-by: Manav Darji <manavdarji.india@gmail.com> Co-authored-by: Raneet Debnath <raneetdebnath10@gmail.com> Co-authored-by: ChanHongMing <91173675+ChanHongMing@users.noreply.github.com> Co-authored-by: Adam Dossa <adossa@polygon.technology> Co-authored-by: Adam Dossa <adam.dossa@gmail.com> Co-authored-by: Léo Vincent <28714795+leovct@users.noreply.github.com> Co-authored-by: Sanket Saagar Karan <ssaagar@polygon.technology>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.