Initial project proposal
Ephemery is a short-lived testnet. The ephemery team is focused on integrating this new-ish network into existing clients and infrastructure.
The periodic resetting of the test network effectively erases the onchain activity that occured during that iteration. This reduces the impact of accumulated network bloat, seen with other testnets, and results in lower resource requirements for testnet users (also conveniently lowering the barrier to entry for running the testnet in the first place).
In particular, the reset feature optimises for short-term validator testing, reducing the burden on longer-running testnets.
Earlier in the programme, I described my intention for the cohort in my Project Proposal: writing client-side integrations for the ephemeral testnet and validating the draft EIP as part of the ephemery team, beginning with Lodestar.
Status
ephemery
network was merged to Lodestar and released in v1.12.0genesis.ssz
file) is generated when starting Lodestar in dev mode, and this can be done completely offline as there is no data required like a list of genesis validators. For other networks, the genesis state is not generated, it is:
checkpointSyncUrl
if setgenesisFileUrl
defined in network settings or taken from a --genesisStateFile
if provided by the userephemery
package to Lodestar, to calculate the genesis state from scratch. This is not strictly required, however, since downloading the genesis state from external source is implemented (accepted) for all other networks already. It may provide a useful additional option for [dev] users in the futureSummary
In summary, I met my main goal for the programme and commenced work in a number of "stretch" areas. Work on ephemery configs has provided me with an opportunity to familiarise myself with the workings of Ethereum clients, as well as some of the external infrastructure that is used to manage the networks.
The current status of native ephemery integrations, taking into account work from across the ephemery team, is shown in table 1 below.
Table 1
Project tasks
Challenges
As I set out in my Project Proposal, I expected certain challenges relating to OS and client prerequisites.
In practice, the main challenge I encountered was the steep learning curve, as well as time needed for deep focus work and study; in particular for focusing on Ethereum fundamentals. It took more time than expected to familiarise myself with client implementations, circle back to Ethereum specs, and slowly develop my understanding.
In addition, the ephemery network needs to be added to all clients, requiring - over a longer time period - a reasonable understanding of multiple languages and frameworks.
Summary of actual challenges
๐ป Mac OS had some impact on manual configuration options for Geth-Lodestar
๐ฐ๏ธ Time taken to understand Ethereum specs
๐ฅท Wider learning about ssz serialization
๐ค Understanding client codebase from scratch
๐ฝ Evolving client codebase
๐๏ธ Updates to specs
Learnings
I enjoy a steep learning curve, but at times it was hard not to find certain aspects overwhelming - especially at the beginning of the cohort. I take several learnings from my experience:
EPF
I'm grateful to Mario and Josh for their support during the cohort: I feel that the cohort has given me confidence to expand my Ethereum contributions as a core dev. The visibility provided by the fellowship structure definitely helped me with wider context and understanding of Ethereum development processes.
I'd say the fellowship helps devs to:
In future, it may be useful in the first few weeks of the cohort for participants to have access to more resources / presentations on some of the foundational aspects of Ethereum.
I intend to continue my work on the ephemery project and expand in time to more core dev contributions.