Skip to content

Erigon Beta 1 announcement

ledgerwatch edited this page Oct 29, 2021 · 11 revisions

Erigon (formerly known as turbo-geth) has been in development since Dec 2017, and we started alpha releases on 30th of July 2020. Alpha marked the stage of development where we invited the users to use the software, and provide us with feedback. But we also knew that there a lot of missing pieces of functionality, and that there would still be a lot of changes to the data model. We are very grateful to all the people who decided to give Erigon a try, and shared their successes and failures with us. At some point through the alpha program, we set out criteria for our transition to beta stage, where active development of the first version will mostly stop, and only bug fixes and critical features would be added. These were the criteria:

  1. Separable p2p sentry component and the new algorithm for downloading block headers and block bodies, more aligned with the "staged sync" architecture than pre-existing algorithms.
  2. Migration of the backend database from LMDB to MDBX, for more flexible API and better diagnostics.
  3. Support for mining/block composition.
  4. Separable consensus engine.

So far, 3 out of 4 criteria have been met. We will have to admit that the 4th criterion will not be met in the first version, and is moved to the version two. In the intervening time, Ethereum London hard fork brought about EIP-1559, which required changes in the transaction pool, so we prioritised separable transaction pool suitable for EIP-1559, above the separable consensus engine. We still think that separable consensus engine is very important for further growth of the ecosystem, but decided that it will not be in the version one. However, we are pleased to note that the separable transaction pool with the support of EIP-1559 is implemented and will be part of Erigon version one. Another requirement that we imposed on ourselves for the transition to beta version one was at least some mechanism for regression testing of the JSON RPC API, something that most users of Erigon rely on. We are pleased to announce that some initial ground work has been done and we have set up QA (Quality Assurance) server, which will become part of our toolbox for better release engineering. Current version can be seen on https://erigon.dev and the repository linked to it is https://github.com/ledgerwatch/rpctests. We will continue to build up the QA server as a part of Erigon beta one program.

Our collaboration with StarkWare on the Fermion project, led us to research and experimentation work with will form the basis of the Erigon version two. The work on it has already started, and currently it is mostly about and efficient and practical version of "state sync" - the mechanism for bootstrapping the node without requiring to replay all the blocks and transactions from Genesis (which is the only way to bootstrap Erigon version one). Some initial design documentation can be found on a Wiki page here: https://github.com/ledgerwatch/erigon/wiki/State-sync-design