Skip to content

Pink Marble (v1.9.14)

Compare
Choose a tag to compare
@karalabe karalabe released this 13 May 09:36
· 433 commits to release/1.9 since this release
6d74d1e

Geth v1.9.14 is a regular maintenance release, but is also packs a punch with some interesting new features!

Ethereum mainnet currently contains over 700M transactions. Each full node maintains a search index, stating that transactions with hash H is stored in block B. This allows you to look up an arbitrary transaction from the past (at a significant storage cost). But how often do you look up transactions from years ago?

Geth v1.9.14 ships a --txlookuplimit flag, which specifies the number of recent blocks you want to maintain the search index for (by default it's 0 = since genesis). At its most extreme, you can set it to 1, to prune all past indexes. At the time of release, this reduces your LevelDB SSD footprint by 32GB! You can modify this flag at will, Geth will unindex/reindex in the background based on the current setting. If you unindex a lot of transactions, you might need to compact your database to reclaim the space immediately via debug.chaindbCompact().

Deleting transaction indexes locally is fine since they are not used in consensus nor in synchronization, so network health is unaffected. Light servers for now do need to maintain the full index since light clients rely on them. Huge props to @rjl493456442 and @holiman for this work (#20302).

txlookuplimit

In the current release, we've reworked gas estimation so that reverting transactions will give you a proper error, bubbling up the EVM revert reason (#20830). The release also renamed most of the RPC API related flags to make them consistent with our namespace style, but don't worry, the deprecated flags will keep working for the foreseeable future (#20935).

A rundown of shipped features:

  • Implement background transaction indexing and transaction index deletion (#20302).
  • Improve gas estimation to return the failure/revert reason too if available (#20830).
  • Make light client chain selection logic similar to full nodes on Clique PoA (#20931).
  • Drop the --override.istanbul and --override.muirglacier flags (#20942).
  • Rename a significant number of flags to have consistent namespaces (#20935).
  • Optimize the ABI decoder to only calculate method IDs once (#20895).
  • Remove legacy v5 discovery bootnodes used by LES (#20949).
  • Various ABI package refactors and cleanups (#21009, #21022).
  • Support overloaded struct fields in the ABI parser (#21060).
  • Implement account and storage trie range proofs (#20908).
  • Implement snapshot storage iteration (#20971).

A rundown of fixed bugs:

  • In case of a corrupted database, fail block processing, don't report bad block (#21039).
  • Fix a fast sync regression that didn't properly abort on premature shutdown (#20988).
  • Fix the logger to properly escape all special characters in context fields (#20987).
  • Fix the snapshot journal reloading to not lose deleted account markers (#21003).
  • Fix a trie data race when accessing preimages through the RPC APIs (#20923).
  • Fix the TCP P2P dialer to reject enode IDs that advertise TCP port 0 (#21008).
  • Fix gas estimation to cap max attempted usage at account balance (#21043).
  • Fix the Java abigen code generator to support void return types (#21002).
  • Fix the memory capper to be more aggressive on 32bit platforms (#21028).
  • Fix a data race in key import if the same is imported concurrently (#20915).
  • Fix a data race in the snapshot iteration (upcoming protocol) (#20948).
  • Fix a freezer termination annoyance that printed warnings (#21010).
  • Fix the state dumper to also include the zero address (#21038).
  • Fix an ethstats regression that was leaking tickers (#21071).
  • Fix receipt loss in empty Clique blocks after a crash (#21045).
  • Fix a memory leak in the snapshot storage iteration (#21036).
  • Fix accidental snapshot creation on archive nodes (#21025).
  • Fix startup parameters of Windows .lnk files (#21055).

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


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