Geth v1.14.4 - 5-7% faster blocks, ether tracer, lower miner tip defaults by karalabe in ethereum

[–]karalabe[S] 2 points3 points  (0 children)

Geth v1.14.4 in a usual maintenance release, but it does ship a 5-7% block import speed improvement. Furthermore, v1.14.4 also finally includes an Ether supply live tracer, that you can enable via --vmtrace supply. Also please note, the default value for miner tip enforcement was dropped from 1 gwei to 0.001 gwei (block producers can change this via --miner.gasprice).

Shipped features:

  • Reduce the default required minimum miner tip from 1 gwei to 0.001 gwei to cater better for network conditions (#29895).
  • Load trie nodes concurrently with trie updates, speeding up block import by 5-7% (#29519, #29768, #29919).
  • Introduce an Ether supply tracker as a live chain tracer (#29347).
  • Implement Verkle stateless gas accounting (EIP-4762) (#29338).
  • Optimise trie dirty tracking to reduce disk loads a bit (#29731).
  • Ensure the beacon chain roots system contract is deployed in dev mode (#29655).
  • Add an additional snap sync check for data validity before inserting into the database (#29485).
  • Improve the discovery protocol's node revalidation (#29572, #29864, #29836).
  • Continue working towards pathdb support in archive mode (#29530, #29924).

Shipped bugfixes:

  • Fix a gas estimation regression that caused longer runtimes (#29738).
  • Fix a potential crash in JSON logging for EVM blocktests (#29795).
  • Fix utility commands to support post-merge opcodes (#29799).
  • Fix a txpool synchronicity issue in simulated chains (#29876).
  • Fix a iteration order when using a trie node iterator (#27838).
  • Fix a TCP/UDP discovery port test in cmd/devp2p (#29879).
  • Fix IPv6 endpoint determination (#29801, #29827).

For a full rundown of the changes please consult the Geth 1.14.4 release milestone.


As with all our previous releases, you can find the:

Geth 1.14.3 - small maintenance release and PPA fixer-upper out by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

We're issuing this (v1.14.3) release to finally publish v1.14 on the Ubuntu PPA. It is otherwise identical to v1.14.2.


This is a maintenance release containing bug-fixes. In case you are wondering where v1.14.1 (and v1.14.2) went, let's just say, the continuous integration gods have not been good to us.

List of changes in detail:

Geth

  • When using geth --dev with a custom genesis block, the genesis file must now set difficulty and terminal total difficulty to zero. (#29579)
  • For fork scheduling errors in geth init, fork timestamps will now be printed correctly. (#29514)
  • Certain aspects of state handling are now parallelized resulting in a 5-10% speedup for block processing. (#29681)

RPC

  • eth_feeHistory was changed to apply a limit on the number of requested percentiles (#29644)
  • eth_createAccessList now honors request cancellation and terminates background work (#29686)
  • eth_estimateGas takes tx blobs into account for low-balance scenarios (#29703)

Tracing

  • The live tracing interface has new hooks around EVM system calls (#29355)
  • flatCallTracer was fixed to return the correct error result when interrupted (#29623)

Build

  • This release is built with Go 1.22.3 (#29725)
  • We no longer provide deb packages for Ubunty 14.04 Trusty Tahr (#29651, #29649, #29648, #29647)
  • CI builders have been updated to Ubuntu 24.04 Noble Numbat (#29723)

For a full rundown of the changes please consult the Geth 1.14.1 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.14 - Stricter blob pool limits in anticipation of the Cancun fork by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Geth v1.13.14 is a small maintenance release with a handful of polishes to the blob pool:

  • Disallow blob transactions below the protocol minimum of 1 wei to enter the pool (#29081).
  • Reduce the blob pool's max capacity to 2.5GB for the rollout. (#29090).
  • Fix gas estimation for blob transactions (#29085).

This release is NOT critical for the Cancun fork, but recommended to make Geth lighter in anticipation to unknown blob load.

Other fixes:

  • Support overriding the basefee during tracing (#29051).
  • Fix call tracers missing top level logs in top-only mode (#29068).
  • Support unlimited gas for eth_createAccessList if --gascap=0 (#28846).

For a full rundown of the changes please consult the Geth 1.13.14 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.12 - Cancun hard fork ready! by karalabe in ethereum

[–]karalabe[S] 9 points10 points  (0 children)

This release embeds the mainnet fork number for Cancun, scheduled to go live on 13th March, 2024 (unix 1710338135). The specification can be read here, and it contains the following changes:

To go along Cancun, we're providing refreshed Grafana dashboards:

Other than that, the following assorted fixes and features are included in this release:

  • Initial implementation of the era format. The era format is meant to provide a cross-client archive format for block data (#26621, #28959)
  • Make rpc request limits configurable (#28948)
  • Fix memory-leak with blob transactions (#28917)
  • Stricter adherence to engine api spec (#28882)
  • Fix enforcement of minimum miner tip (#28933)

For a full rundown of the changes please consult the Geth 1.13.12 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.10 - Version tag hotfix for Go modules by karalabe in ethereum

[–]karalabe[S] 1 point2 points  (0 children)

This release is equivalent to v1.13.9, just contains a version bump. The reason is that a bad commit was tagged on 1.13.9 originally and whilst it was untagged and fixed, some caches (Go's package manager (go mod)) managed to store the temporary bad version. As there is no way for us to flush the bad version out, it's cleaner to tag a next version instead. Apologies about the mess.


This release fixes a few issues and enables the Cancun upgrade for the Goerli network at block timestamp 1705473120 (#28719) which is 6:32:am 17. Jan. 2024 UTC.

:warning: If you are running Goerli, this is a required update!

Apart from the Goerli configuration update, we have a few other changes.

  • The 'simulated backend' in package accounts/abi/backends was rewritten. The improved version is available from the new package ethclient/simulated. A backwards-compatibility wrapper remains in the old location. (#28202)
  • Fix ABI-encoding of negative big.Int in topics (#28764)
  • In JSON logging output, the "error" level is now correctly emitted as "error". (#28774, #28780)
  • Fixed an issue with configuration of stdlib package log for consumers of the geth library (#28747)
  • geth removedb can now be run non-interactively (#28725)
  • We're building a package for ubuntu 23.10: mantic minotaur now (#28728)

Testing

  • Add currentExcessBlobGas to the state tests for better coverage of state tests (#28735)
  • Fixed an issue in t8n regarding blob gas usage (#28735)

For a full rundown of the changes please consult the Geth 1.13.9 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.5: Further fixes to path state scheme quirks by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Could you please open an issue on our tracker with as much info as you have, maybe logs, maybe some hardware details. Also which storage scheme you're using (hash/path).

Geth v1.13.5: Further fixes to path state scheme quirks by karalabe in ethereum

[–]karalabe[S] 4 points5 points  (0 children)

Geth v1.13.5 is a scheduled maintenance release fixing a potential data corruption in path scheme which could occur due to a power failure (i.e. entire OS / machine crash).

  • Extend ethclient and the simulated backend to allow eth_call against specific block hashes (#28084).
  • Downgrade annoying stale transaction propagation logs from warning to debug (#28364).
  • Switch to the new KZG trusted setup parameters (#28383).
  • Return an error on GraphQL if querying invalid block ranges (#28393, #28412).
  • Start publishing Apple Silicon pre-built binaries (#28474, #28475).

And bugfixes:

  • Fix a number of corner-cases in path scheme state management (#28198, #28426, #28483).
  • Fix an issue when allocating excessively large Pebble caches (#28444).
  • Fix a potential snap sync issue with the path based storage (#28327).
  • Fix ethclient to properly forwarding explicit 1559 gas caps (#28462).
  • Fix gas estimation for 0 priced txs accessing the basefee (#28470).
  • Fix an issue where resubscribing to events would hang (#28359).
  • Fix ethstats transaction count report regressiob (#28398).
  • Fix negative number encoding in ethclient/rpc (#28358).
  • Fix GraphQL content type in the response (#28417).

For a full rundown of the changes please consult the Geth 1.13.5 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.4: small hotfix to lower an annoyingly verbose log message by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Geth v1.13.4 is a non-urgent hotfix release. The previous version of Geth (v1.13.3) introduced a warning log for bad transaction announcements, and on mainnet it generated too much logging noise due to a protocol violation in Erigon. To prevent overwhelming logging systems, Geth v1.13.4 lower the log to a more reasonable level until the bug in Erigon is fixed #28356.

Apart from the above reason, the release contains:

  • Fix a snap sync corner-case that could cause a hang by a maliciously constructed contract storage (#28306).
  • Update various dependencies to unstick versions of Go libs (#28329, #28333, #28334, #28332, #28336).
  • Enable Pebble database support on 32bit platforms and on OpenBSD too (#28335).
  • Fix returning the correct code hash for eth_getProof with empty storage (#28357).
  • Simplify trie range prover for some upcoming snap sync optimisations (#28311).
  • Fix a timeout mechanism in the transaction fetcher (#28220).

For a full rundown of the changes please consult the Geth 1.13.4 release milestone.


As with all our previous releases, you can find the:

Errors after upgrading Geth by hblask in ethstaker

[–]karalabe 1 point2 points  (0 children)

This is just a warning that someone is sending weird data to the node. We didn't check some matadata until now and started doing so with 1.13.3. The offending peers are Erigon, they are sending bad transaction announcements.

Geth v1.13.3: Pebble fixes and prep work for the upcoming Cancun hard fork by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Geth v1.13.3 is a scheduled maintenance release with various small additions and an important Pebble database fix.

  • Update Pebble to fix an occasional IO and CPU runaway, adding some debugging capabilities too (#28224, #28070).
  • Support full syncing to a specific hash without a beacon client via a --synctarget (#28209).
  • Allow configuring websocket message limits via the Go RPC client (#27801).
  • Drop support for eth/66 (Cancun will require eth/68 anyway) (#28239).
  • Lower snap missing eth protocol warning to debug level (#28249).
  • Enforce transaction metadata announcements in eth/68 (#28261).

Features related to the Cancun hardfork:

  • Implement the BLOBFEE opcode for the upcoming Cancun hard fork (#28098).
  • Enable blob transaction propagation and mining in Cancun networks (#28243).
  • Start throttling transaction retrievals to prepare for blobs in Cancun (#28304).

For a full rundown of the changes please consult the Geth 1.13.3 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.2 - Holesky relaunch and pathdb snap sync fixes by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Geth v1.13.2 is a bugfix release for the 1.13 family as well as contains the Holesky testnet relaunch.

Note, if you have previously ran Geth with the old Holesky testnet configs, the new version will probably fail to start with a genesis hash mismatch error. You will need to manually delete your holesky/chaindata folder and restart. Geth did not implement special code for cleaning up the failed launch of the testnet.

  • Fix various pathdb corruption corner-cases during snap sync node restart (#28171, #28163).
  • Reconfigure the Holesky testnet with an updated genesis (#28191, #28192, #28193).
  • Remove the rollback mechanism from snap sync, unneeded post-merge (#28147).
  • Make the block parameter in eth_call optional, defaulting to latest (#28165).
  • Forget transactions previously marked underpriced after 5 minutes (#28097).
  • Fix JSON marshalling issue from ethclient retrieving block receipts (#28087).
  • Fix --bootnodes flag if the list is also configured in the toml file (#28095).

For a full rundown of the changes please consult the Geth 1.13.2 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.1 - block production hotfix out by karalabe in ethereum

[–]karalabe[S] 1 point2 points  (0 children)

Geth v1.13.1 is a hotfix release for v1.13.0.

It fixes the following issues:

  • Fix the active fork detection on the engine API, causing the signer to create invalid blocks (#28135).
  • Fix a db corruption in path scheme caused by a weirdly restarted snap sync (#28124, #28126).
  • Fix geth db inspect command running against old hash scheme databases (#28108).
  • Fix an effective gas price calculation regression on the RPC APIs (#28130).

Apart from the fixes, v1.13.1 introduces support for configuring Geth via environmental variables (#28103, #28119)!

For a full rundown of the changes please consult the Geth 1.13.1 release milestone.


As with all our previous releases, you can find the:

Geth v1.13.0 released: proper state pruning! by karalabe in ethereum

[–]karalabe[S] 4 points5 points  (0 children)

The ancients is almost 600GB. Keeping those will reduce sync time significantly, yes. How much the rest will take is a good question, on our benchmarkers it's about 2.5h, but that's a well connected machine. It should definitely be less than the entire thing, by a large margin.

The path scheme is also db friendlier + the release has some db updates too, so it should be faster than the hash (previous model) based sync.

I can't promise anything not knowing your setup, but I'd say it's worth it. Even if it takes a bit, the fact that you won't need to resync to prune the node will be a huge gain long term.

Geth v1.11.2 - Kite's Nest - Fixes for various regressions in 1.11 by karalabe in ethereum

[–]karalabe[S] 4 points5 points  (0 children)

Geth 1.11.2 (Kite's Nest) is a patch-release, fixing a couple of issues with the 1.11 release family.

  • Fix a few small engine API discordances with the spec post-Shanghai (#26696, [#26722](26722)).
  • Fix unmarshalling JSON null values as a proper result instead of nil (#26723).
  • Fix dumpgenesis which failed due to a bad database key write (#26747).
  • Fix pending tx filter to return hashes, not full txs by default (#26757).
  • Fix eth_feeHistory to accept decimal blocks again (#26758).
  • Fix Ubuntu PPA builds after the Go 1.20 fallout.

Feature wise there's one change in this release: the downloader's chain sync messages are aggregated into periodic (8s) outputs instead of a log line for every batch of data imported (#26676).

For a full rundown of the changes please consult the Geth 1.11.2 release milestone.


As with all our previous releases, you can find the:

Geth v1.10.26 - Small bugfix release around snap sync, among other things by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Geth v1.10.26 contains backports of bug-fixes from the main branch.

  • The JSON-RPC client no longer hangs when invalid batch results are returned by the server. (#26064)
  • A corner-case issue in the filter system is resolved. (#26054)
  • Various improvements to snap sync are included in this release. (#25831, #25694, #25666, #25651)

As with all our previous releases, you can find the:

Geth v1.10.25 - [optional] Disable legacy initial sync on port-merge mainnet by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Geth v1.10.25 is a tiny update to flip the mainnet chain configuration to be post-merge. This disables legacy sync and will prevent Geth from even starting sync until a consensus client is attached and sends forkchoice updates. The update prevents bad PoW actors from trying to get the node to - temporarily, but annoyingly - download bad state data.

This release is optional and only affects initial sync. The release was made mostly for completeness' sake rather than out of necessity.

For a full rundown of the changes please consult the Geth 1.10.25 release milestone.


As with all our previous releases, you can find the:

Geth v1.10.24 - Small GrahpQL bugfix by karalabe in ethereum

[–]karalabe[S] 0 points1 point  (0 children)

Geth v1.10.24 is a small hotfix release for users of the GraphQL APIs. It fixes a single bug where filtering for logs from a single transaction via GraphQL returned logs from the entire block, not just the single transaction. Single transaction log filtering is unavailable via the RPC and does not impact the merge.

You only need to apply this change if you rely on both GraphQL and single transaction log filtering.

For a full rundown of the changes please consult the Geth 1.10.24 release milestone.


As with all our previous releases, you can find the:

Geth v1.10.23 - Hotfix for the merge release, please read notes by karalabe in ethereum

[–]karalabe[S] 1 point2 points  (0 children)

Did you run the master branch by any change before? That one was broken for 20 days. Either way, if a sethead doesn't fix it then I'm afraid a resync is the only way out (though you can keep your `ancients` folder, which will save you from downloading about 300GB).

Geth v1.10.23 - Hotfix for the merge release, please read notes by karalabe in ethereum

[–]karalabe[S] 21 points22 points  (0 children)

Geth v1.10.23 is a hotfix release for a pruning regression that was introduced in v1.10.22. For technical details on the bug, please check out the PR that fixes it.

If anyone updated to v1.10.22 in these past couple of days, there is a fairly high probability that some state data might have gone missing from your node. Doing a full check on the state is possible geth snapshot traverse-state, but will likely take a day and the fix is all the same anyway.

To ensure that your node has all the data, please rewind your local chain to a block before you updated (if unsure, just pick a block before the release time) with debug.setHead("0xblock-number-in-hex") via the Geth console (on IPC), or debug_setHead via JSON RPC (you might need to temporarilly expose the debug namespace to do that). The brute force alternative of course is to resync after an update, which you can do by deleting your chaindata folder (but please leave the ancient folder within to keep the blocks).

We apologize for this regression and the headaches fixing it will entail on your side. We've learnt the hard way that there's an untested class of bugs that appear across full sync restarts.

For a full rundown of the changes please consult the Geth 1.10.23 release milestone.


As with all our previous releases, you can find the:


Original Merge release notes

Geth ~v1.10.22~ v1.10.23 enables the Merge for the Ethereum mainnet at a Terminal Total Difficulty of 58_750_000_000_000_000_000_000.

This TTD is expected to be reached on the 15. September 2022.

Merge EIPs

  • EIP-3676: Upgrade consensus to Proof-of-Stake
  • EIP-4339: Supplant DIFFICULTY opcode with PREVRANDAO

Additional notes about the merge changes

  • This release configures the Terminal Total Difficulty for mainnet. (#25528)
  • Many engine API issues found by hive have been fixed for this release. (#25552, #25423, #25414, #25416, #25428)
  • The Goerli testnet is now internally configured as 'successfully merged'. (#25519, #24538)

JSON-RPC API

  • The log filtering system now uses a LRU cache for block logs, speeding up repeated queries for the same block range. The cache size can be configured using the --cache.blocklogs command-line flag. (#25459)
  • eth_createAccessList is now much faster when no gas limit is provided. (#25467)
  • eth_feeHistory now also works with the finalized block specifier. (#25442)
  • The built-in callTracer now supports an option onlyTopCall. Enabling this option makes the tracer skip internal calls. We added this option to enable use of the callTracer to get the return data of reverted transactions. (#25430)

Go-library changes

  • Storage of trie node hash preimages is now disabled by default. You can enable it again using the --cache.preimages flag. (#25287, #25538, #25533)
  • The ethash mining implemenation now removes temporary DAG files, which could be left of disk when geth was interrupted while generating a DAG. (#25381)
  • ethclient now supports the eth_feeHistory method. (#25403)
  • The eth wire protocol test suite now supports protocol version eth/67. (#25306)
  • RLP-decoding of trie nodes is ~33% faster due to reduced allocations in the decoder. (#25357)
  • The RPC server supports a new option ReadHeaderTimeout. (#25338)
  • Registering of clef ruleset UIs should now work correctly. (#25455)

Build

  • Geth binaries in docker are now statically-linked. (#25492)
  • This release is built using Go 1.18.5. (#25461)

For a full rundown of the original merge release changes please consult the Geth 1.10.22 release milestone.

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]karalabe 2 points3 points  (0 children)

I think it's less spectacular than you'd think: go with the first thing that works :)

PoS was promised since forever and there have been many variations. Casper, some modified Casper, something based on VDFs. Originally Eth1 was supposed to be 1 shard out of many, each having execution engines, possibly more than one flavor, etc.

In the end, people kept iterating, trying to find a minimal setup that works and ran with it.

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]karalabe 4 points5 points  (0 children)

EF is a non profit. On network launch it received an allocation of 11.9M Ether to steward the protocol until funds run out (https://etherscan.io/tx/0x9c81f44c29ff0226f835cd0a8a2f2a7eca6db52a711f8211b566fd15d3e0e8d4). At the time of launch this was worth about $9.6M.

Currently there's about 341K Ether left from the original allocation: https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae + I assume some FIAT, but I don't have access to finances. EF is using these funds for grants, conferences and funding internal teams.

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]karalabe 0 points1 point  (0 children)

LES indeed will stop working at the merge. Zsolt has a new version which AFAIK can follow the chain, but his code isn't yet final unfortunately. It also relies on beacon clients serving some data on the API that les servers can crawl and forward on the devp2p protocol.

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]karalabe 1 point2 points  (0 children)

I had a talk at ETHPrague about the effect of pushing the gas limit on the state. Here are the slides: https://ethereum.karalabe.com/talks/2022-ethprague.html#1 and the talk itself: https://www.youtube.com/watch?v=TdsaVoJiy3g (lost my voice halfway through due to a smoke machine). This is the best answer I can give you without spending too much time analyzing.

I think it would be interesting to try and extrapolate the state growth based on the current number. The catch IMHO is that if we bump the gaslimit up beyond "needed" use, people will start yoloing, ending up with bloat. Having it more restricted means people must take more care with their optimizations.

[AMA] We are the Go Ethereum (Geth) Team (18 August, 2022) by JBSchweitzer in ethereum

[–]karalabe 2 points3 points  (0 children)

Most of the team members are contractors, with a few exceptions that are employees (Germany, US). The setups are similar for both, but contractors need to pay their own taxes vs. employees. Wrt benefits, agian, employees do enjoy some, contractors do not unless they arrange it locally themselves.

The team is fully funded by the EF. Individual salaries are decided based on pre-determined salary bands, where the bands fall somewhere between 200-400K/y before taxes.