-
Notifications
You must be signed in to change notification settings - Fork 554
Disabling mine for stateless client #1814
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
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
kamuikatsurgi
approved these changes
Oct 10, 2025
avalkov
approved these changes
Oct 10, 2025
cffls
approved these changes
Oct 10, 2025
|
|
Disabled pip-66 tests after the @cffls hotfix. |
pratikspatil024
added a commit
that referenced
this pull request
Oct 29, 2025
* version: begin v1.15.12 release cycle * go.mod: update pebble to v1.1.5 to reduce clutter in go.sum (#31541) ``` go get github.com/cockroachdb/[email protected] go mod tidy ``` Co-authored-by: lightclient <[email protected]> * cmd/utils: don't allow network ID override if a preset network is specified (#31630) * beacon/blsync: fix requests encoding in engine_newPayloadV4 (#31775) This fixes an issue where blocks containing CL requests triggered an error in the engine API. The encoding of requests used base64 instead of hex. * p2p: add metrics for inbound connection errors (#31652) Add metics detailing reasons we reject inbound connections for, and reasons these connections fail during the handshake. * internal/web3ext: remove the legacy backtraceAt method (#31783) The function `BacktraceAt` has been removed in #28187 . But the API end-point `debug_backtraceAt` is not removed from the file `internal/web3ext/web3ext.go`. * core, ethdb: introduce database sync function (#31703) This pull request introduces a SyncKeyValue function to the ethdb.KeyValueStore interface, providing the ability to forcibly flush all previous writes to disk. This functionality is critical for go-ethereum, which internally uses two independent database engines: a key-value store (such as Pebble, LevelDB, or memoryDB for testing) and a flat-file–based freezer. To ensure write-order consistency between these engines, the key-value store must be explicitly synced before writing to the freezer and vice versa. Fixes - https://github.com/ethereum/go-ethereum/issues/31405 - https://github.com/ethereum/go-ethereum/issues/29819 * cmd/geth, internal: fix flaky console tests (#31784) This pull request bumps the timeout for flaky console tests on appveyor. * core/types: delete unused test variable (#31776) Delete the unused `Account.PrivateKey` variable. * core, triedb/pathdb: bail out error if write state history fails (#31781) This PR fixes an issue that could lead to data corruption. Writing the state history may fail due to insufficient disk space or other potential errors. With this change, the entire state insertion will be aborted instead of silently ignoring the error. Without this fix, state transitions would continue while the associated state history is lost. After a restart, the resulting gap would be detected, making recovery impossible. * core: implement in-block prefetcher (#31557) This pull request enhances the block prefetcher by executing transactions in parallel to warm the cache alongside the main block processor. Unlike the original prefetcher, which only executes the next block and is limited to chain syncing, the new implementation can be applied to any block. This makes it useful not only during chain sync but also for regular block insertion after the initial sync. --------- Co-authored-by: Marius van der Wijden <[email protected]> * all: create global hasher pool (#31769) This PR creates a global hasher pool that can be used by all packages. It also removes a bunch of the package local pools. It also updates a few locations to use available hashers or the global hashing pool to reduce allocations all over the codebase. This change should reduce global allocation count by ~1% --------- Co-authored-by: Gary Rong <[email protected]> * core/types: reduce allocations in tx.EffectiveGasTip (#31598) This PR introduces an allocation-free version of the Transaction.EffectiveGasTip method to improve performance by reducing memory allocations. ## Changes - Added a new `EffectiveGasTipInto` method that accepts a destination parameter to avoid memory allocations - Refactored the existing `EffectiveGasTip` method to use the new allocation-free implementation - Updated related methods (`EffectiveGasTipValue`, `EffectiveGasTipCmp`, `EffectiveGasTipIntCmp`) to use the allocation-free approach - Added tests and benchmarks to verify correctness and measure performance improvements ## Motivation In high-transaction-volume environments, the `EffectiveGasTip` method is called frequently. Reducing memory allocations in this method decreases garbage collection pressure and improves overall system performance. ## Benchmark Results As-Is BenchmarkEffectiveGasTip/Original-10 42089140 27.45 ns/op 8 B/op 1 allocs/op To-Be BenchmarkEffectiveGasTip/IntoMethod-10 72353263 16.73 ns/op 0 B/op 0 allocs/op ## Summary of Improvements - **Performance**: ~39% faster execution (27.45 ns/op → 16.73 ns/op) - **Memory**: Eliminated all allocations (8 B/op → 0 B/op) - **Allocation count**: Reduced from 1 to 0 allocations per operation This optimization follows the same pattern successfully applied to other methods in the codebase, maintaining API compatibility while improving performance. ## Safety & Compatibility This optimization has no side effects or adverse impacts because: - It maintains functional equivalence as confirmed by comprehensive tests - It preserves API compatibility with existing callers - It follows clear memory ownership patterns with the destination parameter - It maintains thread safety by only modifying the caller-provided destination parameter This optimization follows the same pattern successfully applied to other methods in the codebase, providing better performance without compromising stability or correctness. --------- Co-authored-by: lightclient <[email protected]> * metrics: add chain/mgasps to track gas usage rate (#31753) This adds a metric called `chain/mgasps`, which records how many million gas per second are being used during block insertion. The value is calculated as `usedGas * 1000 / elapsed`, and it's updated in the `insertStats.report` method. Also cleaned up the log output to reuse the same value instead of recalculating it. Useful for monitoring block processing throughput. --------- Co-authored-by: Gary Rong <[email protected]> * ethdb/pebble: expose stall counter of pebble (#31782) This pull request adds a more Pebble metrics, tracking the amount of write stalls with specific reasons * core/state: fix incorrect description of function behavior (#31809) * accounts/abi/abigen: remove unnecessary test files (#31804) fix #31793: resolve conflict markers in structs-abi.go.txt * crypto/kzg4844: use package github.com/crate-crypto/go-eth-kzg (#31806) I saw in https://github.com/ethereum/go-ethereum/pull/31378 introduced github.com/crate-crypto/go-eth-kzg to calculate the kzg hash, and github.com/crate-crypto/go-kzg-4844 was only used in the test files, so propose to drop it with go-eth-kzg instead * eth: fix returned blockContext for empty blocks in stateAtTransaction (#31768) Co-authored-by: lightclient <[email protected]> * core: use unix time to check fork readiness (#31800) * eth/catalyst: refactor engine api checks (#31182) This PR contains three refactors: - refactor the latest fork check that we use quite extensively - refactor the nil checks in NewPayloads --------- Co-authored-by: lightclient <[email protected]> * cmd/utils: always record preimages in dev mode (#31821) Fix a todo: force-enable this in --dev mode --------- Co-authored-by: jwasinger <[email protected]> * p2p/enode: add support for naming iterator sources (#31779) This adds support for naming the source iterators of FairMix, like so: mix.AddSource(enode.WithSourceName("mySource", iter)) The source that produced the latest node is returned by the new NodeSource method. * core/state, core/vm: update stateless gas costs to follow the verkle-gen-7 testnet (#31014) Adding values to the witness introduces a new class of issues for computing gas: if there is not enough gas to cover adding an item to the witness, then the item should not be added to the witness. The problem happens when several items are added together, and that process runs out of gas. The witness gas computation needs a way to signal that not enough gas was provided. These values can not be hardcoded, however, as they are context dependent, i.e. two calls to the same function with the same parameters can give two different results. The approach is to return both the gas that was actually consumed, and the gas that was necessary. If the values don't match, then a witness update OOG'd. The caller should then charge the `consumed` value (remaining gas will be 0) and error out. Why not return a boolean instead of the wanted value? Because when several items are touched, we want to distinguish which item lacked gas. --------- Signed-off-by: Guillaume Ballet <[email protected]> * AUTHORS, .mailmap: update name and email attribution (#31624) * cmd/geth, internal/era/eradl: add era1 downloader tool (#31823) This adds a geth subcommand for downloading era1 files and placing them into the correct location. The tool can be used even while geth is already running on the datadir. Downloads are checked against a hard-coded list of checksums for mainnet and sepolia. ``` ./geth download-era --server $SERVER --block 333333 ./geth download-era --server $SERVER --block 333333-444444 ./geth download-era --server $SERVER --epoch 0-10 ./geth download-era --server $SERVER --all ``` The implementation reuses the file downloader we already had for fetching build tools. I've done some refactoring on it to make sure it can support the new use case, and there are some changes to the build here as well. * build: upgrade -dlgo version to Go 1.24.3 (#31774) New security fix: https://groups.google.com/g/golang-announce/c/UZoIkUT367A * cmd/utils: remove deprecated LES flags (#31838) They were not widely used in users setups. * core, triedb/pathdb: final integration (snapshot integration pt 5) (#30661) In this pull request, snapshot generation in pathdb has been ported from the legacy state snapshot implementation. Additionally, when running in path mode, legacy state snapshot data is now managed by the pathdb based snapshot logic. Note: Existing snapshot data will be re-generated, regardless of whether it was previously fully constructed. * eth/protocols/eth: implement eth/69 (#29158) This PR implements eth/69. This protocol version drops the bloom filter from receipts messages, reducing the amount of data needed for a sync by ~530GB (2.3B txs * 256 byte) uncompressed. Compressed this will be reduced to ~100GB The new version also changes the Status message and introduces the BlockRangeUpdate message to relay information about the available history range. --------- Co-authored-by: Felix Lange <[email protected]> * eth: use headers in debug.GetModifiedAccountsBy* (#31765) Small optimization in debug_getModifiedAccountsBy* to avoid fetching block body. * cmd/devp2p/internal/ethtest: tests for BlockRangeUpdate (#31843) I added a test for BlockRangeUpdate in #29158 but forgot to enable it. Here I'm adding two more tests for it. Also applied a small refactoring to combine calls to `dial()` and `peer()` into a single function, since these two calls are duplicated in each test. * core: don't emit the warning of log indexing if the db was not initialized (#31845) * trie: use common.Hash as the key in secKeyCache map (#31786) * cmd/utils: remove duplicate code for influxDB tags (#31854) remove duplicate code Signed-off-by: Csaba Kiraly <[email protected]> * internal: remove eth_{compile,getWork,submitWork} from console (#31856) The `compile` and `eth_getWork` `eth_submitWork` apis were not available anymore, so try to remove them * internal/reexec: fix broken link to Docker/Moby in comment (#31859) Hey team—noticed a dead link, replaced it with a working URL https://github.com/moby/moby/blob/master/pkg/reexec/reexec.go - old link https://github.com/moby/moby/blob/master/pkg/reexec/reexec_deprecated.go - new link * README: update broken JSON-RPC API documentation link (#31860) I've updated the broken link to point to the current official Ethereum JSON-RPC API documentation at https://ethereum.org/en/developers/docs/apis/json-rpc/. This is the correct and up-to-date location for the Ethereum Execution Layer APIs documentation. The link should now work properly. * core/txpool/legacypool: fix flaky test TestAllowedTxSize #30975 (#31836) Some tests involving transactions near the txMaxSize limit were flaky. This was due to ECDSA signatures occasionally having leading zeros, which are omitted during RLP encoding — making the final transaction size 1 byte smaller than expected. To address this, a new helper function pricedDataTransactionWithFixedSignature was added. It ensures both r and s are exactly 32 bytes (i.e., no leading zeros), producing transactions with deterministic size. * eth/tracers/native: add erc7562 tracer (#31006) This PR introduces a new native tracer for AA bundlers. Bundlers participating in the alternative mempool will need to validate userops. This tracer will return sufficient information for them to decide whether griefing is possible. Resolves #30546 --------- Co-authored-by: Sina M <[email protected]> * core/state: reduce allocation in updateStateObject (#31861) Optimize updateStateObject to reduce an allocation. * eth/catalyst: move witness methods from engine api (#31867) No functional changes, just moves the witness methods into its own file * eth/tracers: Improve test coverage for toWord (#31846) * core/txpool: add explicit max blob count limit (#31837) Fixes #31792. --------- Co-authored-by: lightclient <[email protected]> * build: Update EEST to v4.5.0 (#31880) We deleted outdated [email protected] release by mistake, so this PR updates the referenced EEST release to the correct latest version. @s1na I removed the TODO comment because I think this solves it, unless it meant something else. --------- Co-authored-by: MariusVanDerWijden <[email protected]> * internal/era: update link to documentation (#31879) Updated reference URL in accumulator.go comment to point to the correct location of the historical-hashes-accumulator documentation in the Ethereum portal network specs * crypto: use pure Go signature implementation in tinygo (#31878) tinygo is having problems compiling the C implementation * consensus: remove clique RPC APIs (#31875) * .gitea: add initial workflow file (#31885) * .gitea: update release build actions (#31886) Trying to make the docker build work. * core/state: fix copy of storageChange (#31874) Missing field origvalue when copying storageChange. * .gitea: add cron build script (#31890) Also swaps the push build scripts and adds environment output. * internal/build: add support for Github Actions CI environment (#31891) This adds support for the Github actions environment in the build tool. Information from environment variables, like the build number and branch/tag name, is used to make decisions about uploads and package filenames. * core: remove unused queued import status (#31870) * core/vm: fix bls benchmark (#31896) Fixes #31893 * triedb/pathdb: introduce lookup structure to optimize state access (#30971) This pull request introduces a mechanism to improve state lookup efficiency in pathdb by maintaining a lookup structure that eliminates unnecessary iteration over diff layers. The core idea is to track a mutation history for each dirty state entry residing in the diff layers. This history records the state roots of all layers in which the entry was modified, sorted from oldest to newest. During state lookup, this mutation history is queried to find the most recent layer whose state root either matches the target root or is a descendant of it. This allows us to quickly identify the layer containing the relevant data, avoiding the need to iterate through all diff layers from top to bottom. Besides, the overhead for state lookup is constant, no matter how many diff layers are retained in the pathdb, which unlocks the potential to hold more diff layers. Of course, maintaining this lookup structure introduces some overhead. For each state transition, we need to: (a) update the mutation records for the modified state entries, and (b) remove stale mutation records associated with outdated layers. On our benchmark machine, it will introduce around 1ms overhead which is acceptable. * .gitea: adjust cron schedule (#31915) This should make the scheduled build actually run. * .gitea: add env to scheduled builds (#31918) * .gitea: port more builds from travis and fix PPA env (#31919) * .gitea: fix secrets passing (#31920) * .gitea: fix apt update (#31921) * .gitea: fix archive uploads and run PPA upload on release push (#31922) * .gitea: fix arm64 build (#31923) * .gitea: run release build on tag push (#31924) * cmd/geth, cmd/utils: log prefunded account/key in ephemeral development mode (#31898) This PR modifies the disclaimer/banner that is printed when starting up Geth in dev mode: * if the client is spun up in ephemeral dev mode with a keystore override, the address of the first (prefunded) account is printed. * if the client is spun up in ephemeral mode without a keystore override, the genesis allocation contains a single static prefunded EOA account. It's address and private key are logged. * the banner is printed at the end of client initialization to make it more prominent. Previously, it was logged towards the beginning of client initialization and subsequent logging from startup filled the terminal, pushing it out of view of the user. Other change is that we now use a static prefunded dev account instead of generating a random one when instantiating a new dev mode chain. This is an example of what the banner looks like: ``` WARN [05-28|23:05:16.475] You are running Geth in --dev mode. Please note the following: WARN [05-28|23:05:16.475] WARN [05-28|23:05:16.475] 1. This mode is only intended for fast, iterative development without assumptions on WARN [05-28|23:05:16.475] security or persistence. WARN [05-28|23:05:16.475] 2. The database is created in memory unless specified otherwise. Therefore, shutting down WARN [05-28|23:05:16.475] your computer or losing power will wipe your entire block data and chain state for WARN [05-28|23:05:16.475] your dev environment. WARN [05-28|23:05:16.475] 3. A random, pre-allocated developer account will be available and unlocked as WARN [05-28|23:05:16.475] eth.coinbase, which can be used for testing. The random dev account is temporary, WARN [05-28|23:05:16.475] stored on a ramdisk, and will be lost if your machine is restarted. WARN [05-28|23:05:16.475] 4. Mining is enabled by default. However, the client will only seal blocks if transactions WARN [05-28|23:05:16.475] are pending in the mempool. The miner's minimum accepted gas price is 1. WARN [05-28|23:05:16.475] 5. Networking is disabled; there is no listen-address, the maximum number of peers is set WARN [05-28|23:05:16.475] to 0, and discovery is disabled. WARN [05-28|23:05:16.475] WARN [05-28|23:05:16.475] WARN [05-28|23:05:16.475] Running in ephemeral mode. The following account has been prefunded in the genesis: WARN [05-28|23:05:16.475] WARN [05-28|23:05:16.475] Account WARN [05-28|23:05:16.475] ------------------ WARN [05-28|23:05:16.475] 0x71562b71999873db5b286df957af199ec94617f7 (10^49 ETH) WARN [05-28|23:05:16.475] WARN [05-28|23:05:16.475] Private Key WARN [05-28|23:05:16.475] ------------------ WARN [05-28|23:05:16.475] 0xb71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291 WARN [05-28|23:05:16.475] ``` closes #31796 --------- Co-authored-by: jwasinger <[email protected]> * .travis.yml: remove master branch push builds (#31927) Release artefact building has been migrated to another system (Gitea), so we can finally stop using Travis CI. However, in order to have a fail-safe for the release, I'm leaving the config in and it will still trigger builds on Travis for tagged releases. That way, if our new system fails to work for the next release, we will still have the option of using Travis. * go.mod: bump flock package version (#31909) The newer version has a stub implementation for unsupported targets, which allows us to compile to more exotic targets. * .gitea: modify scheduled workflow times (#31946) * eth: return null for not-found in BlockByNumberOrHash (#31949) This changes the API backend to return null for not-found blocks. This behavior is required by the RPC When `BlockByNumberOrHash` always returned an error for this case ever since being added in https://github.com/ethereum/go-ethereum/pull/19491. The backend method has a couple of call sites, and all of them handle a `nil` block result because `BlockByNumber` returns `nil` for not-found. The only case where this makes a real difference is for `eth_getBlockReceipts`, which was changed in #31361 to actually forward the error from `BlockByNumberOrHash` to the caller. * core/rawdb: integrate eradb backend for RPC (#31604) This implements a backing store for chain history based on era1 files. The new store is integrated with the freezer. Queries for blocks and receipts below the current freezer tail are handled by the era store. --------- Co-authored-by: Gary Rong <[email protected]> Co-authored-by: Felix Lange <[email protected]> Co-authored-by: lightclient <[email protected]> * core/filtermaps: remove filter base row cache, add group read (#31852) This PR changes the database access of the base part of filter rows that are stored in groups of 32 adjacent maps for improved database storage size and data access efficiency. Before this grouped storage was introduced, filter rows were not cached because the access pattern of either the index rendering or the search does not really benefit from caching. Also no mutex was necessary for filter row access. Storing adjacent rows in groups complicated the situation as a search typically required reading all or most of adjacent rows of a group, so in order to implement the single row read operation without having to read the entire group up to 32 times, a cache for the base row groups was added. This also introduced data race issues for concurrenct read/write in the same group which was avoided by locking the `indexLock` mutex. Unfortunately this also led to slowed down or temporarily blocked search operations when indexing was in progress. This PR returns to the original concept of uncached, no-mutex filter map access by increasing read efficiency in a better way; similiarly to write operations that already operate on groups of filter maps, now `getFilterMapRow` is also replaced by `getFilterMapRows` that accepts a single `rowIndex` and a list of `mapIndices`. It slightly complicates `singleMatcherInstance.getMatchesForLayer` which now has to collect groups of map indices accessed in the same row, but in exchange it guarantees maximum read efficiency while avoiding read/write mutex interference. Note: a follow-up refactoring is WIP that further changes the database access scheme by prodiving an immutable index view to the matcher, makes the whole indexer more straightforward with no callbacks, and entirely removes the concept of matcher syncing with `validBlocks` and the resulting multiple retry logic in `eth/filters/filter.go`. This might take a bit longer to finish though and in the meantime this change could hopefully already solve the blocked request issues. * eth/catalyst: change warning to error for 'too many bad block attempts' (#31940) This situation was failing quietly for me recently when I had a partial data corruption issue. Changing the log level to Error would increase visibility for me. * eth/filters: fix pruned history error for genesis block (#31941) Fixes an issue where querying logs for block ranges starting from 0 would fail with an irrelevant error on a pruned node. Now the correct "history is pruned" error will be returned. * metrics: disable CPU metrics on tinygo (#31953) * eth/catalyst: use atomics instead of locks (#31955) * accounts/abi: error when packing negative values in unsigned types (#31790) This is an alternative approach to https://github.com/ethereum/go-ethereum/pull/31607 , that doesn't break backwards-compatibility with abigen. Note that this does change the behavior of `Argument.Pack`: previously, packing negative values for a `uint` parameter would cause them to be represented in signed binary representation via two's complement. Now, it will fail explicitly in this case. However, I don't see a reason to support this functionality. The ABI already explicitly supports signed integers. There's no reason that a smart contract author would choose to store signed values in a `uint` afaict. --------- Co-authored-by: MariusVanDerWijden <[email protected]> * cmd/utils: update SepoliaFlag usage (#31961) The Sepolia testnet has transitioned to pos following The Merge. * eth/downloader: fix missing receipt (#31952) This fixes a regression introduced by #29158 where receipts of empty blocks were stored into the database as an empty byte array, instead of an RLP empty list. Fixes #31938 --------- Co-authored-by: Felix Lange <[email protected]> * core/vm: implement EIP 7823 - Set upper bounds for MODEXP (#31818) * crypto/kzg4844: avoid copying blobs for marshaling (#31911) LLVM is not able to handle large arrays on stack * eth, p2p: improve dial speed by pre-fetching dial candidates (#31944) This PR improves the speed of Disc/v4 and Disc/v5 based discovery by adding a prefetch buffer to discovery sources, eliminating slowdowns due to timeouts and rate mismatch between the two processes. Since we now want to filter the discv4 nodes iterator, it is being removed from the default discovery mix in p2p.Server. To keep backwards-compatibility, the default unfiltered discovery iterator will be utilized by the server when no protocol-specific discovery is configured. --------- Signed-off-by: Csaba Kiraly <[email protected]> Co-authored-by: Felix Lange <[email protected]> * cmd/geth: fix era1 download location to match store (#31951) This changes the era1 downloader to place the files into the correct location where geth will actually use them. Also adds integration with the new --datadir.era flag. * core/vm: implement EIP 7883 - ModExp Gas Cost Increase (#31606) https://eips.ethereum.org/EIPS/eip-7883 --------- Co-authored-by: MariusVanDerWijden <[email protected]> Co-authored-by: Felix Lange <[email protected]> * eth/catalyst: implement getBlobsV2 (#31791) Implements `engine_getBlobsV2` which is needed for PeerDAS. --------- Co-authored-by: Felix Lange <[email protected]> * ethdb/pebble: adjust the number of memory tables (#31970) This pull request adjusts the number of allowed memory tables in Pebble. Pebble allows configuring an arbitrary number of memory tables to hold unflushed data. When the current memtable becomes full, it is scheduled for flushing, and a new memtable is allocated to accept subsequent writes. However, if too many memtables accumulate and are waiting to be flushed, subsequent writes will stall. Originally, only two memtables were configured, each with a size of 512 MB for Ethereum mainnet. While this setup works well under normal conditions, it becomes problematic under heavy write loads. In such scenarios, flushing is only triggered when more than 512 MB of data is pending, which may not be responsive enough. Even worse, if compactions are running concurrently, flushing memtables can become slow due to the heavy IO overhead, leading to write stalls across the system. This pull request tries to mitigate the performance degradation by having more memory tables but with a smaller size. In this case, the pending writes can be flushed more smoothly and responsively. * eth: initialize blobTxPool (#31992) Fixes a regression introduced in #31791, see https://github.com/ethereum/go-ethereum/pull/31791#issuecomment-2955554641 * cmd/workload: introduce transaction-trace test (#31288) This pull request introduces a new test suite in workload framework, for transaction tracing. **test generation** `go run . tracegen --trace-tests trace-test.json http://host:8545` and you can choose to store the trace result in a specific folder `go run . tracegen --trace-tests trace-test.json --trace-output ./trace-result http://host:8545` **test run** `./workload test -run Trace/Transaction --trace-invalid ./trace-invalid http://host:8545` The mismatched trace result will be saved in the specific folder for further investigation. * params: enable osaka fork in MergedTestChainConfig (#31993) * eth/filters: add timestamp to derived logs (#31887) The block timestamp field is now added to the logs returned by eth_getLogs. * core/vm, cmd/evm: remove EOF (#32000) With EOF removed from the Osaka fork, and no longer being tested, the implementation will now just be bitrotting. I'm opting to remove it so it doesn't get in the way of other changes. * crypto/kzg4844: remove kzg initialization (#32017) This fixes a regression in the state tests where we always initialized the KZG library. This was added to test some stuff in #31791 * metrics: add chain/gas for cumulative gas usage (#32004) This is a followup to #31753. A cumulative counter is more useful when we need to measure / aggregate the metric over a longer period of time. It also means we won't miss data, e.g. our prometheus scrapes every 30 seconds, and so may miss a transient spike in the pre-aggregated mgas/s. --------- Co-authored-by: Gary Rong <[email protected]> * trie: no need to store preimage if not enabled (#32012) As the preimage will only be stored if `t.preimages != nil`, so no need to save them into local cache if not enabled. This will reduce the memory wasted to copy the bytes --------- Signed-off-by: jsvisa <[email protected]> * metrics: remove use of reflect in metrics registration code (#31962) Co-authored-by: Marius van der Wijden <[email protected]> * core/vm: implement updates to modexp gas cost changes in EIP-7883 (#32015) Implements the updated gas cost changes introduced in https://github.com/ethereum/EIPs/commit/5cdd75157d78522bde8dc58977717c14cd7f2789 * Makefile: add make evm (#32029) * eth/tracers: flag for empty acounts in prestateTracer (#31855) This PR introduces a flag that enables returning of newly created state objects in the prestateTracer. **Rationale** Having this information is useful because local execution can more easily distinguish between newly created objects and system contracts. --------- Co-authored-by: Sina Mahmoodi <[email protected]> * crypto/bn256: default to gnark (#32024) * go.mod: update gnark-crypto to v0.18.0 (#32034) mainly to pull in https://github.com/Consensys/gnark-crypto/pull/693 * tracers/prestate: always remove empty accounts from pre-state (#31427) The prestateTracer had the intention of excluding accounts that were empty prior to execution from the prestate. This was being done only for created contracts. This PR makes it so all such empty accounts are excluded. This behavior is configurable using the `includeEmpty: true` flag introduced in #31855. --------- Signed-off-by: Ignacio Hagopian <[email protected]> Co-authored-by: Sina Mahmoodi <[email protected]> * node: fix data race on httpConfig.prefix (#32047) This fixes a data race when accessing the `httpConfig.prefix` field. This field can be modified while the server is running through `enableRPC`. The fix is storing the prefix in the handler, which is accessed through the atomic pointer. alternative to #32035 fixes https://github.com/ethereum/go-ethereum/issues/32019 * Revert "crypto/bn256: default to gnark (#32024)" This reverts commit e0cf89ecfaa29b40dc548eec16e071242b40eedd. * fix: skip storage entries with missing preimage keys (#32051) When `GetKey` is called, a missing preimage can cause the function to return a `nil` key. This, in turn, makes `account.Storage` persist an incorrect value. * ethdb/pebble: lower the compaction debt (#31988) This pull request reduces the threshold for triggering compaction at level0, leading to less compaction debt. This change is helpful in the case of heavy write-load, mitigating the case of heavy write stalls caused by compaction. closes https://github.com/ethereum/go-ethereum/issues/31830 * accounts: fix data race when closing manager (#31982) Fixes a data race on the `wallets` slice when closing account Manager. At the moment, there is a data race between a go-routine calling the Manager's `Close` function and the background go-routine handling most operations on the `Manager`. The `Manager`'s `wallets` field is accessed without proper synchronization. By moving the closing of wallets from the `Close()` function into the background thread, this issue can be resolved. * go.mod: bump golang.org/x/net from 0.36.0 to 0.38.0 (#31658) * crypto/bn256: fix gnark deserialisation (#32055) fixes the gnark deserialisation --------- Co-authored-by: Felix Lange <[email protected]> * tests/fuzzers: added bn marshaling fuzzers (#32053) Adds marshaling fuzzing for G1 and G2 to oss-fuzz. Also aligns the behavior of the google library to that of gnark and cloudflare, which only ever read the first 64 / 128 bytes of the input, regardless of how long the input is * build: upgrade -dlgo version to Go 1.24.4 (#31978) * eth/catalyst: fetch header on forkchoiceUpdated (#31928) closes https://github.com/ethereum/go-ethereum/issues/31254 --------- Co-authored-by: Gary Rong <[email protected]> * all: reuse the global hash buffer (#31839) As https://github.com/ethereum/go-ethereum/pull/31769 defined a global hash pool, so we can reuse it, and also remove the unnecessary KeccakState buffering --------- Co-authored-by: Gary Rong <[email protected]> * crypto/bn256/cloudflare: pull in upstream fix for R27 and R29 usage (#32057) Pulls in https://github.com/cloudflare/bn256/pull/48 to remove usage of R27 and R29 [which are reserved](https://go.dev/doc/asm#arm64). * eth,core: terminate the downloader immediately when shutdown signal is received (#32062) Closes https://github.com/ethereum/go-ethereum/issues/32058 * core/rawdb: don't decode the full block body in ReadTransaction (#32027) Reading a single transaction out of a block shouldn't need decoding the entire body --------- Co-authored-by: Felix Lange <[email protected]> Co-authored-by: Gary Rong <[email protected]> * core: simplify effectiveTip calculation (#31771) Since we have the effective gas price in the message, we can compute tip by simply subtracting the basefee. No need to recompute the effective price. --------- Co-authored-by: Felix Lange <[email protected]> * core: consolidate BlockChain constructor options (#31925) In this pull request, the original `CacheConfig` has been renamed to `BlockChainConfig`. Over time, more fields have been added to `CacheConfig` to support blockchain configuration. Such as `ChainHistoryMode`, which clearly extends beyond just caching concerns. Additionally, adding new parameters to the blockchain constructor has become increasingly complicated, since it’s initialized across multiple places in the codebase. A natural solution is to consolidate these arguments into a dedicated configuration struct. As a result, the existing `CacheConfig` has been redefined as `BlockChainConfig`. Some parameters, such as `VmConfig`, `TxLookupLimit`, and `ChainOverrides` have been moved into `BlockChainConfig`. Besides, a few fields in `BlockChainConfig` were renamed, specifically: - `TrieCleanNoPrefetch` -> `NoPrefetch` - `TrieDirtyDisabled` -> `ArchiveMode` Notably, this change won't affect the command line flags or the toml configuration file. It's just an internal refactoring and fully backward-compatible. --------- Co-authored-by: Felix Lange <[email protected]> * .gitea: touch cron workflow files * trie: delete secKeyCacheOwner (#31785) The optimization tried to defer allocating the cache map until it was used for the first time. It's a relic from earlier times, when tries were copied often. This seems unnecessary now, so we can just create the map when the trie is created. --------- Co-authored-by: Felix Lange <[email protected]> * .gitea: show environment in release-ppa.yml * crypto/bn256/gnark: align marshaling behavior (#32065) Aligns the marshaling behavior of gnark to google and cloudflare Co-authored-by: kevaundray <[email protected]> * crypto/bn256: add documentation on subgroup checks for G2 (#32066) This PR improves the IsOnCurve methods for BN254 G2 points by: * Clarifying its behavior the docstring, making it explicit that it verifies both the point being on the curve and in the correct subgroup. * Adding an in-line comment explaining the subgroup membership check (c.Mul(Order)). * Minor wording adjustments for readability and consistency. * ethdb: Implement DeleteRange in batch (#31947) implement #31945 --------- Co-authored-by: prpeh <[email protected]> Co-authored-by: Gary Rong <[email protected]> * core/state: expose the state reader stats (#31998) This pull request introduces a mechanism to expose statistics from the state reader, specifically related to cache utilization during state prefetching. To improve state access performance, a pair of state readers is constructed with a shared local cache. One reader to execute transactions ahead of time to warm up the cache. The other reader is used by the actual chain processing logic, which can benefit from the prefetched states. This PR adds visibility into how effective the cache is by exposing relevant usage statistics. --------- Signed-off-by: Csaba Kiraly <[email protected]> Co-authored-by: Csaba Kiraly <[email protected]> * core/state: improve the prefetcher concurrency allowance (#32071) Improve the prefetcher concurrency allowance. * core/state: fix prefetch on single core CPU (#32075) We need at least one prefetch goroutine. SetLimit(0) would block prefetch. Signed-off-by: Csaba Kiraly <[email protected]> * triedb/pathdb, eth: use double-buffer mechanism in pathdb (#30464) Previously, PathDB used a single buffer to aggregate database writes, which needed to be flushed atomically. However, flushing large amounts of data (e.g., 256MB) caused significant overhead, often blocking the system for around 3 seconds during the flush. To mitigate this overhead and reduce performance spikes, a double-buffer mechanism is introduced. When the active buffer fills up, it is marked as frozen and a background flushing process is triggered. Meanwhile, a new buffer is allocated for incoming writes, allowing operations to continue uninterrupted. This approach reduces system blocking times and provides flexibility in adjusting buffer parameters for improved performance. * eth: quick canceling block inserting when debug_setHead is invoked (#32067) If Geth is engaged in a long-run block synchronization, such as a full syncing over a large number of blocks, invoking `debug_setHead` will cause `downloader.Cancel` to wait for all fetchers to stop first. This can be time-consuming, particularly for the block processing thread. To address this, we manually call `blockchain.StopInsert` to interrupt the blocking processing thread and allow it to exit immediately, and after that call `blockchain.ResumeInsert` to resume the block downloading process. Additionally, we add a sanity check for the input block number of `debug_setHead` to ensure its validity. --------- Signed-off-by: jsvisa <[email protected]> Co-authored-by: Gary Rong <[email protected]> * cmd/clef: update readme (#32070) Replaced the outdated and broken link to the Web3 Secret Storage Definition with the current official URL from ethereum.org in the Clef README. This ensures users have access to up-to-date and accurate documentation for the keystore file format. * eth/tracers: prestate lookup EIP7702 delegation account (#32080) Implement https://github.com/ethereum/go-ethereum/issues/32078 Parse and lookup the delegation account if EIP7702 is enabled. --------- Signed-off-by: jsvisa <[email protected]> * cmd/geth: era-download logic fix (#32081) Downloading from a range was failing because it would return and error early with an error misinterpreting "start-end". --------- Co-authored-by: shantichanal <[email protected]> Co-authored-by: Gary Rong <[email protected]> * miner: default gaslimit 45M (#32087) We believe it is safe to raise the gaslimit to 45M before the Fusaka fork. So this PR changes the default to 45M. * core/rawdb, triedb/pathdb: implement history indexer (#31156) This pull request is part-1 for shipping the core part of archive node in PBSS mode. * cmd/geth, triedb: add pathdb state verification (#32086) This pull request ports the snapshot iteration logic from the legacy implementation. * core, consensus/beacon: defer trie resolution (#31725) Previously, the account trie for a given state root was resolved immediately when the stateDB was created, implying that the trie was always required by the stateDB. However, this assumption no longer holds, especially for path archive nodes, where historical states can be accessed even if the corresponding trie data does not exist. * cmd/utils: fix formatting for beacon flag errors to fit Fatalf form (#32090) Noticed that the errors for the blsync flags were not formatted correctly for `Fatalf(..)`. * eth, triedb/pathdb: permit write buffer allowance in PBSS archive mode (#32091) This pull request fixes a flaw in PBSS archive mode that significantly degrades performance when the mode is enabled. Originally, in hash mode, the dirty trie cache is completely disabled when archive mode is active, in order to disable the in-memory garbage collection mechanism. However, the internal logic in path mode differs significantly, and the dirty trie node cache is essential for maintaining chain insertion performance. Therefore, the cache is now retained in path mode. * core, eth, triedb: serve historical states over RPC (#31161) This is the part-2 for archive node over path mode, which ultimately ships the functionality to serve the historical states * triedb/pathdb: fix journal resolution in pathdb (#32097) This pull request fixes a flaw in the PBSS state iterator, which could return empty account or storage data. In PBSS, multiple in-memory diff layers and a write buffer are maintained. These layers are persisted to the database and reloaded after node restarts. However, since the state data is encoded using RLP, the distinction between nil and an empty byte slice is lost during the encode/decode process. As a result, invalid state values such as `[]byte{}` can appear in PBSS and ultimately be returned by the state iterator. Checkout https://github.com/ethereum/go-ethereum/blob/master/triedb/pathdb/iterator_fast.go#L270 for more iterator details. It's a long-term existent issue and now be activated since the snapshot integration. The error `err="range contains deletion"` will occur when Geth tries to serve other peers with SNAP protocol request. --------- Co-authored-by: Felix Lange <[email protected]> * all: incorporate state history indexing status into eth_syncing response (#32099) This pull request tracks the state indexing progress in eth_syncing RPC response, i.e. we will return non-null syncing status until indexing has finished. * version: release go-ethereum v1.16.0 stable * version: begin v1.16.1 release cycle * .gitea: trigger PPA upload on tag * .travis.yml: remove travis configuration * all: replace override.prague with osaka (#32093) replace `--override.prague` with `--override.osaka` Signed-off-by: jsvisa <[email protected]> * node: do not double-wrap KV stores (#32089) For no apparent reason, KV stores were getting wrapped in `nofreezedb` first and then in `freezerdb`. * eth: correct tracer initialization in BlockchainConfig (#32107) core.BlockChainConfig.VmConfig is not a pointer, so setting the Tracer on the `vmConfig` object after it was passed to options does *not* apply it to options.VmConfig This fixes the issue by setting the value directly inside the `options` object and removing the confusing `vmConfig` variable to prevent further mistakes. * .gitea: switch release builds to static linking (#32118) This is to avoid compatibility issues with mismatched glibc versions between the builder and deployment target. Fixes #32102 * .gitea: fix 386 upload * .gitea: disable cron schedule * triedb: reset state indexer after snap synced (#32104) Fix the issue after initial snap sync with `gcmode=archive` enabled. ``` NewPayload: inserting block failed error="history indexing is out of order, last: null, requested: 1" ``` --------- Signed-off-by: Delweng <[email protected]> Co-authored-by: Gary Rong <[email protected]> * eth/filters: add address limit to filters (#31876) The address filter was never checked against a maximum limit, which can be somewhat abusive for API nodes. This PR adds a limit similar to topics ## Description (AI generated) This pull request introduces a new validation to enforce a maximum limit on the number of addresses allowed in filter criteria for Ethereum logs. It includes updates to the `FilterAPI` and `EventSystem` logic, as well as corresponding test cases to ensure the new constraint is properly enforced. ### Core functionality changes: * **Validation for maximum addresses in filter criteria**: - Added a new constant, `maxAddresses`, set to 100, to define the maximum allowable addresses in a filter. - Introduced a new error, `errExceedMaxAddresses`, to handle cases where the number of addresses exceeds the limit. - Updated the `GetLogs` method in `FilterAPI` to validate the number of addresses against `maxAddresses`. - Modified the `UnmarshalJSON` method to return an error if the number of addresses in the input JSON exceeds `maxAddresses`. - Added similar validation to the `SubscribeLogs` method in `EventSystem`. ### Test updates: * **New test cases for address limit validation**: - Added a test in `TestUnmarshalJSONNewFilterArgs` to verify that exceeding the maximum number of addresses triggers the `errExceedMaxAddresses` error. - Updated `TestInvalidLogFilterCreation` to include a test case for an invalid filter with more than `maxAddresses` addresses. - Updated `TestInvalidGetLogsRequest` to test for invalid log requests with excessive addresses. These changes ensure that the system enforces a reasonable limit on the number of addresses in filter criteria, improving robustness and preventing potential performance issues. --------- Co-authored-by: zsfelfoldi <[email protected]> * Fix log indexer noise after debug_setHead operations (#31934) ## Summary This PR resolves Issue #31929 by reducing log noise generated by the log indexer after `debug_setHead` operations. ## Problem Description When `debug_setHead` is called to rewind the blockchain, blocks are removed from the database. However, the log indexer's `ChainView` objects may still hold references to these deleted blocks. When `extendNonCanonical()` attempts to access these missing headers, it results in: 1. **Repeated ERROR logs**: `Header not found number=X hash=0x...` 2. **Log noise** that can mask other important errors 3. **User confusion** about whether this indicates a real problem ## Root Cause Analysis The issue occurs because: - `debug_setHead` removes blocks from the blockchain database - Log indexer's `ChainView` may still reference deleted block hashes - `extendNonCanonical()` in `core/filtermaps/chain_view.go` tries to fetch these missing headers - The existing `return false` logic properly handles the error, but logs at ERROR level ## Solution This is a **logging improvement only** - no functional logic changes: ### Changes Made 1. **Log level**: Changed from `ERROR` to `DEBUG` 2. **Log message**: Enhanced with descriptive context about chain view extension 3. **Comments**: Added explanation for when this situation occurs 4. **Behavior**: Maintains existing error handling (`return false` was already present) ### Code Changes ```go // Before log.Error("Header not found", "number", number, "hash", hash) return false // After // Header not found - this can happen after debug_setHead operations // where blocks have been deleted. Return false to indicate the chain view // is no longer valid rather than logging repeated errors. log.Debug("Header not found during chain view extension", "number", number, "hash", hash) return false ``` ## Testing ### Automated Tests - ✅ All existing filtermaps tests pass: `go test ./core/filtermaps -v` - ✅ No regressions in related functionality ### Manual Verification 1. **Before fix**: Started geth in dev mode, generated blocks, called `debug_setHead(3)` → **5 repeated ERROR logs** 2. **After fix**: Same scenario → **4 DEBUG logs, no ERROR noise** ### Test Environment ```bash # Setup test environment rm -rf ./dev-test-data ./build/bin/geth --dev --datadir ./dev-test-data --http --http.api debug,eth,net,web3 --verbosity 4 # Generate test blocks and trigger issue curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"debug_setHead","params":["0x3"],"id":1}' http://localhost:8545 ``` ## Related Issues - Fixes #31929 ## Additional Context This issue was reported as spurious error messages appearing after `debug_setHead` operations. The investigation revealed that while the error handling was functionally correct, the ERROR log level was inappropriate for this expected scenario in development/debugging workflows. The fix maintains full compatibility while significantly improving the debugging experience for developers using `debug_setHead`. --------- Co-authored-by: Sun Tae, Kim <[email protected]> Co-authored-by: zsfelfoldi <[email protected]> * core/filtermaps: clean up log format of unindexing message (#32123) Sorry for not fully fixed in https://github.com/ethereum/go-ethereum/pull/31761, now the log format of unindexing message is cleaned up, to make it consistent with the indexing message. * eth/catalyst: fix the log message in newPayloadV4 (#32125) It should be `newPayloadV4 must only be called for prague payloads` for the V4 payload error * internal/ethapi: prealloc map for the txpool api (#32110) use `make(map, len(txpool))` to prealloc the map for the txpool content, to avoid the map growing in the loop. * ethapi: reduce some of the wasted effort in GetTransactionReceipt (#32021) Towards https://github.com/ethereum/go-ethereum/issues/26974 --------- Co-authored-by: Gary Rong <[email protected]> * internal: remove unused shh and swarm modules from console (#32073) Similar to https://github.com/ethereum/go-ethereum/pull/31856, remove the not availabe shh, swarm modules in the console. --------- Co-authored-by: Gary Rong <[email protected]> * core/filtermaps: define APIs for map, epoch calculation (#31659) This pull request refines the filtermap implementation, defining key APIs for map and epoch calculations to improve readability. This pull request doesn't change any logic, it's a pure cleanup. --------- Co-authored-by: zsfelfoldi <[email protected]> * core/types: blockTimestamp in logs is hex-encoded (#32129) closes #32120 * core/rawdb, triedb/pathdb: fix two inaccurate comments (#32130) * eth/catalyst: fix edge case in simulated backend (#31871) geth cmd: `geth --dev --dev.period 5` call: `debug.setHead` to rollback several blocks. If the `debug.setHead` call is delayed, it will trigger a panic with a small probability, due to using the null point of `fcResponse.PayloadID`. --------- Co-authored-by: Marius van der Wijden <[email protected]> * accounts/abi: generate TryPack* methods for abigen v2 bindings (#31692) 1. Fix the error return format. **todo**: ~~`bindtype` needs more complex logic to fix it.~~ ` if err != nil { return nil, err } if err == nil { return obj, nil } ` 2. ~~Return pointer type object to avoid copying the whole struct content.~~ 3. Give the panic decision to the user. 4. Fix empty line at the end of function. **TODO**: ~~fix some related test cases.~~ --------- Co-authored-by: Jared Wasinger <[email protected]> * version: release go-ethereum v1.16.1 stable * Fix build issues * Fix tests * Fixed tests * Fix CI * core: Fix tests * eth: Fix tests * internal: Fix tests * devp2p: Set LatestBlock and LatestBlockHash in test * integration tests: Refactor NewBlockChain init * eth/filters: Add blockTimestamp to test expected logs * eth/filters: Update MockDatabase impl according to the new interface * integration tests: Refactor NewBlockchain init * eth/protocols: Update tests to support protocol 69 * tracers: Fix genesis for erc7562 tracer tests * eth/tracers: Remove duplicated ApplyTransactionWithEVM call * p2p: Remove remaining protocol 67 definitions * p2p: Fix eth/69 handshake in tests * eth/tracers: Set proper genesis for 7702/delegate test * fix upstream merge tests (#1707) * core: add get all receipts by hash helper * chore: bump cosmos-sdk (#1704) * eth/protocols/eth: include state-sync tx receipt in eth/69 response * core: remove GetAllReceiptsByHash function * core/rawdb: remove GetAllReceiptsByHash * core: track cache hit/miss for bor receipts * eth/protocols/eth: exclude state-sync in receipt root calculations * eth/protocols/eth: club bor receipt with all tx receipts for a block * eth/protocols/eth: exclude state-sync receipts in root hash calculation * core: extract and save bor receipts during sync * fix TestPrestateTracer and skip TestBroadcastMalformedBlock69 * fix TestGetModifiedAccounts * fix lint * feat: bump kurtosis and migrate to pos-workflows (#1706) * remove unused lint annotation * core: assign empty values for missing state-sync receipts * core: write bor receipts in kv db * core: check for empty receipts while writing in kv db * internal, eth: disable snap sync momentarily (#1696) * eth/core: add logs for debugging * params: version bump to v2.2.10-beta * disable snapsync on default eth configs * feat: remove matic-cli e2e-tests (#1709) * fix filter tests / temp disable TestValidatorsBlockProduction * temp disable TestMiningAfterLocking * core: Key-Value Priority Read on BorReceipts (#1699) * Key Value Read Priority on BorReceipts * simplify code * Revert "internal, eth: disable snap sync momentarily (#1696)" This reverts commit f3844811cda1c9c4c23f3e167f0f6a5e78742963. * eth: syncmode default to snap * Revert "eth: syncmode default to snap" This reverts commit 2c735b22b27c8436f8c9b070ed44a2c63f0f83db. * params: version bump to v2.2.10-beta2 * chore: make function comments match function names (#1650) Signed-off-by: stellrust <[email protected]> * eth/protocols: add nil check for tx before calling GetOptions (#1656) * chore: make function comments match function names (#1658) Signed-off-by: jishudashu <[email protected]> * core/state: use mutex for access list r/w operations * core: catch panic in block-stm processing * use mutex for access list r/w operations * consistent comment for skipped tests * params: version bump to v2.2.10 * Improving fail handling from reorgs (#1677) * proper error handling for blockchain instantiation * nil check on ethstats * nil check over ourTD * fix: dbcmd (#1714) * return if etherbase is empty * chore: set disableFreeze to true --------- Signed-off-by: stellrust <[email protected]> Signed-off-by: jishudashu <[email protected]> Co-authored-by: Manav Darji <[email protected]> Co-authored-by: Krishang Shah <[email protected]> Co-authored-by: Pratik Patil <[email protected]> Co-authored-by: Lucca Martins <[email protected]> Co-authored-by: stellrust <[email protected]> Co-authored-by: Yuan-Yao Sung <[email protected]> Co-authored-by: jishudashu <[email protected]> * BlockByNumberOrHash return error if block not found * downloader: Change test to use protocol 69 * p2p: Add block propagation handlers for eth/69 * tests: Enable TestMiningAfterLocking * tests: Enable TestBroadcastMalformedBlock69 * Revert "fix upstream merge tests (#1707)" (#1725) This reverts commit 9b117f35050138fad21ad713db61b43a5476e86d. * fix filter tests / temp disable TestValidatorsBlockProduction * tests: Enable TestValidatorsBlockProduction * disable snapsync on default eth configs * remove unused lint annotation * fix lint * fix TestGetModifiedAccounts * fix TestPrestateTracer and skip TestBroadcastMalformedBlock69 * Enable TestBroadcastMalformedBlock69 * Fix tests * Fix tests * Fix tests * Disable snap sync tests temporarily * Disable snap sync tests temporarily * Prefetch witness * Fix parallel execution * Up depndencies * Fix tests * fix: TestSimulateV1 basefee-non-validation case (#1789) * fix(eth/downloader/whitelist): decrement chain meter on failure (#1771) * Decrement chain meter instead of peer meter * Decrement chain meter instead of peer meter * chore: bump kurtosis-pos (#1805) * chore: bump kurtosis-pos * chore: bump to 1.1.16 * core, internal/ethapi: derive cumulative gas for bor receipts (#1806) * core/types: derive cumulative gas for bor receipt * internal/ethapi: update testdata with non empty cumulative gas * core/types: small fix * core: derive cumulative gas used and persist in db for bor receipts * Remove TODOs * eth, core: handle state-sync data in eth/69 messages This PR adds the ability to send state-sync transaction receipts (or bor receipts in short) in eth/69 protocol (which is newly added from upstream). This will allow nodes using snap sync to persist the state-sync transaction receipts (as there's no execution involved in snap sync and hence they're not generated locally). This PR changes the implementation of 2 p2p messages: - GetReceiptsMsg (code: 0x0f): Fetches bor receipts for requested blocks and include them in the final encoded message - ReceiptsMsg (code: 0x10): Accepts the bor receipts from incoming p2p packet. They are excluded from receipt root (in header) and hence this needs to be taken care of while handling incoming receipts. * eth: handle integer underflow for reporting total delay in block tracking Avoid wraparound of total delay values when logging due to integer underflow. Switch to using int64 instead of uint64. The log initially assumed that current time would always be ahead of header's block time which is not true anymore (as blocks can be announced early) breaking this assumption. * remove bloom filter from bor logs (#1811) * Disabling mine for stateless client (#1814) * disabling mine * disable pip-66 integration test * fix message * Enable custom HTTP Modules in dev-mode (#1589) * cli: Don't force HTTP modules in dev-mode The HTTP modules were forced to a specific list in dev mode, thus disabling the user's choice of active modules. * state: Don't log prefetcher error when terminated This is useless, it's not an actual error. * Fix selfdestruct for parallel execution * Added unit test for parallel evm selfdestruct * Merge pull request #1823 from 0xPolygon/lmartins/kv-check-on-write Backfill StateSync Command Improvements * core: Use `TriesInMemory` from config (#1590) * core: Use `TriesInMemory` from config The config setting got mistakenly removed in this PR https://github.com/maticnetwork/bor/pull/1300/files * eth/fetcher: Fix race condition in tests The `tester.fetcher` is already started in `newTester` * eth/fetcher: Fix race condition in test The bool was modified in a goroutine, read in another. * bump version * Port mining optimizations for veblop (#1783) * feat: disabling gogc override * internal/cli: add GC variables in config * core,eth,internal/cli,triedb/pathdb: add maxdifflayers to config * consensus/bor: fix header timestamp when time is in the past When the calculated header timestamp based on parent time and producer delay falls in the past, ensure we add the full producer delay to the current time rather than just setting it to current time. This prevents immediate timeout issues in the commit interrupt mechanism where blocks would be interrupted immediately due to negative time delays. Previously, when header.Time < now, we would set header.Time = now, which could still result in timing issues during block building. Now we properly calculate header.Time = now + CalcProducerDelay() to ensure adequate time for block building operations. * consensus/bor,internal/cli,params: add header timestamp fix when in past * perf(core/blockstm): optimize HasReadDep for small input sizes Add performance optimization to HasReadDep function based on production metrics showing ~3M calls with median size of 15. For small inputs (<=512 elements), use direct nested loop comparison instead of map allocation to improve performance due to better cache locality and avoiding allocation overhead. Additionally: - Replace map[Key]bool with map[Key]struct{} to reduce memory usage - Add Prometheus metrics to track function calls and input sizes - Add detailed comments explaining the optimization rationale The cutoff of 512 was determined through benchmarking and captures >50% of production calls, providing significant performance improvement for the common case while maintaining O(n+m) complexity for larger inputs. * core: add hasReadDepCallCounter and readsMapSizeHist metrics * eth.internal/cli,triedb: fix lint * core,eth,internal/cli,triedb/pathdb: rm maxdifflayers config * core: add dagBuildTimer * Revert "consensus/bor,internal/cli,params: add header timestamp fix when in past" This reverts commit 76f6ac5afef4309ec18184cf07618fc25cefff55. * triedb/pathdb: rm invalid comment * internal/cli: rm unused function --------- Co-authored-by: John Hilliard <[email protected]> * fix txs count in segment import report (#1831) * Remove incorrect modification to `prepare()` (#1832) * fix receipts and logs on stateless node (#1833) * Cutomizable block time in block producer (#1817) * Cutomizable block time in block producer * minor fix * Fix test * Refactor * Add tests * Stateless Pruning (#1828) * pruning refactor and freeze disable * block pruner * lint * minor fixes * update pruner * include witness producers on pruning * Info logs * improve logs * increase block prune interval * fix receipts and logs on stateless node * genesis protection * remove genesis from tests * meaningful info logs * fix block pruner cursor key --------- Signed-off-by: Guillaume Ballet <[email protected]> Signed-off-by: Csaba Kiraly <[email protected]> Signed-off-by: jsvisa <[email protected]> Signed-off-by: Ignacio Hagopian <[email protected]> Signed-off-by: Delweng <[email protected]> Signed-off-by: stellrust <[email protected]> Signed-off-by: jishudashu <[email protected]> Co-authored-by: Felix Lange <[email protected]> Co-authored-by: Alex Zaytsev <[email protected]> Co-authored-by: lightclient <[email protected]> Co-authored-by: jwasinger <[email protected]> Co-authored-by: Csaba Kiraly <[email protected]> Co-authored-by: JukLee0ira <[email protected]> Co-authored-by: rjl493456442 <[email protected]> Co-authored-by: maskpp <[email protected]> Co-authored-by: Marius van der Wijden <[email protected]> Co-authored-by: Satoshi Is Here <[email protected]> Co-authored-by: Marcel <[email protected]> Co-authored-by: Klimov Sergey <[email protected]> Co-authored-by: SHADOW <[email protected]> Co-authored-by: wellna <[email protected]> Co-authored-by: Delweng <[email protected]> Co-authored-by: Guillaume Ballet <[email protected]> Co-authored-by: Charlotte <[email protected]> Co-authored-by: Marius Kjærstad <[email protected]> Co-authored-by: Sina M <[email protected]> Co-authored-by: Zhou <[email protected]> Co-authored-by: James Niken <[email protected]> Co-authored-by: VolodymyrBg <[email protected]> Co-authored-by: steven <[email protected]> Co-authored-by: shahafn <[email protected]> Co-authored-by: Péter Garamvölgyi <[email protected]> Co-authored-by: Mario Vega <[email protected]> Co-authored-by: Merkel Tranjes <[email protected]> Co-authored-by: Ömer Faruk Irmak <[email protected]> Co-authored-by: buddho <[email protected]> Co-authored-by: Arya Nair <[email protected]> Co-authored-by: Felföldi Zsolt <[email protected]> Co-authored-by: William Morriss <[email protected]> Co-authored-by: Lunor <[email protected]> Co-authored-by: Joe Chen <[email protected]> Co-authored-by: Sean Liao <[email protected]> Co-authored-by: shazam8253 <[email protected]> Co-authored-by: Nebojsa Urosevic <[email protected]> Co-authored-by: Sina Mahmoodi <[email protected]> Co-authored-by: kevaundray <[email protected]> Co-authored-by: Ignacio Hagopian <[email protected]> Co-authored-by: cz <[email protected]> Co-authored-by: Herbert …
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.
Description
Disabling mine for stateless client.
Changes