In one of the previous posts, we announced that we may be discontinuing support for BNB Smart Chain and/or Bor/Polygon in Erigon, due to our resource constrains and other factors. The decision deadline specified in that post was 1st of April 2023. Now we are well past the deadline, here is the update of what the conclusion is.
In the latest release of Erigon, v2.43.0, the code for support of BNB Smart Chain has been removed. This does not mean that Erigon for BSC ends there. There is now a project which is independent from us, maintaining Erigon implementation for BSC. It can be found it here: https://github.com/node-real/bsc-erigon. We feel very positive about this development, and hope that this project goes well.
Regarding Bor/Polygon, over these two months, we had many interactions with Polygon and eventually came to an agreement in principle that satisfies both Erigon and Polygon. It is now being finalised. We have a rough technical plan on what we would do to improve and stabilise the support of Bor in Erigon.
We also work on a recruitment plan to attract more people to work with us to support Ethereum, Gnosis Chain, and Bor/Polygon. We will be assessing potential candidates in a traditional way (CV, interviews, etc.), however we have a very limited capacity to do so and also on-board/absorb new joiners in the team. Therefore, we will also be experimenting with the second approach in parallel. This second approach will be used in combination with the traditional approach, as well as on its own.
That second approach involves performing programming tasks, in a similar way they would be performed during person’s work in Erigon. These tasks would be designed as real contributions rather than throw-away assignments, and for the valuable once we will pay bounties. Since Erigon’s code base is rather challenging to get to, and required a lot of learning, it would be good to have initial tasks on projects that are related to Erigon, but stand “lower” on the learning curve. These tasks would contribute to building up experience for working on Erigon’s code base.
Current plan is to attempt to use the following four projects as “stepping stones” for these tasks. The tasks themselves are improvements, which are ideally found by the contributors themselves, but can be also picked/allocated, once we have a good list of them built up. Only the first project is now being prepared for this role, while the other two will require more work.
Diagnostics system: https://github.com/ledgerwatch/diagnostics. README file in the project gives the background and current state of the development. There is also Discussion section on GitHub which can be used to ask questions and discuss. Working on this project familiarises with the general functionality of Erigon nodes, and with the ways to deal with user’s issues, and extract useful diagnostics information and metrics. Tasks there could be improvements in the Web server operations, improvements in the UX, adding so-called “diagnostics scripts” (using existing types of diagnostics information, but checking for new conditions of the nodes), or adding new type of diagnostics information to be extracted from the nodes.
Devnet tool, which is currently part of Erigon’s code base: https://github.com/ledgerwatch/erigon/tree/devel/cmd/devnet. It is a regression-testing tool, which can be run as a standalone executable, and when it is, it launches 2 Erigon nodes internally (could be more in the future) and runs some simple tests using JSON RPC API. It is similar to Hive, but without needing to use docker containers. Working on this project familiarises with the lifecycle of Erigon node, and with some of the most essential API methods to inject transactions, produce blocks, watch for events, inspect transaction pool. Tasks there would be about adding new test scenarios covering what is not covered, or perhaps introducing a new class of tests, or some structural code improvements. Different levels of tasks demonstrate varying levels of expertise.
Hive tests: https://github.com/ethereum/hive. It is also regression testing tool, utilised by all Ethereum core developers. Working with it requires the knowledge of docker containers and their mechanics, and also include richer set of scenarios and asserts. There are still quite a few hive tests not passing for Erigon, and improvement tasks there are fixes for such tests or at least detailed understanding why they fail. There is also need to fork/extend such tests for Gnosis Chain and Bor.
Otterscan: https://github.com/otterscan/otterscan. This is an open-source block explorer, operating on top of Erigon nodes. Most of its functionality is in Javascript accessing JSON RPC APIs, but some of it is inside Erigon, in the form of implementation of APIs which are specific to Otterscan at the moment. We would like to eventually make Otterscan embedded to Erigon. This would mean having a command-line flag
—otterscan
to active it. It is possible to do because Otterscan/Erigon combination does not require any external indexing databases. The main challenge for such embedding is the size of the resources (javascript libraries and various data sources) what need to come with it. As it is now, it could potentially inflate Erigon’s executable quite a lot. Anyway, assuming these problems are resolved, Otterscan can also be the source of the tasks for the recruitment and/or onboarding process.
Great to hear that you have sorted out the issues with Bor/Polygon
It's been so long, the code hasn't been updated yet? There are too many issues with BSC