EPF4: PROJECT PROPOSAL
Automatic reset implementation of the Ephemery testnet for client setups, starting with lodestar, then geth..
The goerli supply mess has made test tokens hard to come by. It is hamstringing validator and developers efforts to use the testnet adequately. It has also festered a growing tendency to hoard test tokens, creating token scarcity and price increase on an otherwise free token. Ephemery testnet is a unique solution aiming at solving these problems.
It's being built based on the principle that testnets can be ephemeral, and if testnet are ephemeral, tokens are abundant and transient, and under these conditions it will never be hoarded because "it makes no sense to keep that which will be taken away after each reset". Ephemeral testnets have a short life-span, and create a new genesis state after each reset, effectively discarding every transaction that occured prior to it.
Ephemery is billed to be an automatic reset testnet, Automatically resetting at intervals, currently, this is one week. This means that any data or history on the testnet will be wiped out periodically, making it start fresh again.
Currently, this is implemented as external tooling for clients, wherefore, to reset the testnet requires stopping the client and then removing the chaindata manually. Ideally clients should be able to automatically reset themselves once the ephemery network has progressed to a new genesis state.
Holly, a fellow also working on Ephemery, is currently implementing the genesis function on Lodestar. This will offer partial client support for running the current instance of the Ephemery network. An automatic reset implementation that complement this, will ensure full client support!
This is the next phase on ephemery and it's what i will be working on for my project. The immediate benefit of this is that: it will provide a more efficient testing environment for developers & validators making it easier to validate, experiment with Ephemery.
The scope of this project will be focussed on:
Automatic Reset Implementation: Develop and integrate the Automatic Reset
feature into the Lodestar Ethereum client. The first steps in achieving this, is to understand Lodestar's architecture; vis-a-vis network handling & use of consensus specs. Then use that to implement the following process in code:
Genesis State Management: Developing programming logic that defines a clear process for managing the genesis state during resets as outlined in the specifications. This will include how clients handle:
Validation and Testing: Thoroughly validate the implementation to ensure its compatibility with the Ephemery testnet's specifications. Conduct extensive testing to identify and resolve any potential issues.
Documentation and User Support: Create a comprehensive documentation for validators and developers, explaining how to interact with the Ephemery testnet and leverage the Automatic Reset feature.
Stretch 01: Implement safety checks to prevent accidental resets, by adding an optional flag with a tag like --require-manual-reset
Stretch 02: Add another optional flag --archive chaindata
for genesis management.
Stretch 03: Extend the implementation to other clients, starting with an execution client like geth, this will enable a broader user base to benefit from the Ephemery testnet.
The original specifications for this project can be found here. A WIP version based on my understanding, that i plan to update as i progress is also here.
There is no comparable logic in any client yet, "something that deletes a chain has not been needed yet and one needs to be super careful that this function never ever triggers for mainnet or another testnet"
The goal of this project is to implement the Automatic Reset functionality for the Ephemery testnet, initially focusing on the Lodestar client and subsequently on the Geth client.
To also ensure that this reset does not trigger a reset on other testnets and even the mainnet!
Holly
Mario havel, pk910, chris hobcroft.