ChainSafe Systems’ bi-weekly update on the development of our JavaScript/TypeScript ETH2.0 client, Lodestar.

Since July of 2018, I have been working on an independent JavaScript (Now, TypeScript) implementation of the beacon chain. At the time, it was simply an internal side-project after the announcement that EIP1011 would be deprecated in favour of a new design combining sharding and casper. Now, this internal side-project has grown from a 2-person team to a 4+ person team and we are officially announcing Lodestar!

What is Lodestar?

Lodestar is our JavaScript answer to the beacon chain. After looking up synonyms of the word beacon online, we did not have much choice and decided upon lodestar because it stood out more.

Why JavaScript?

We chose JavaScript because all the other programming languages that we initially wanted were taken. We did a basic search of Github and had found Prysmatic Labs’ Go beacon chain repository (since then, this repo has been deprecated) and Sigma Prime’s Rust beacon chain repository before it was renamed to Lighthouse. We discussed C++ but I haven’t programmed in C++ since the first semester of my 3rd year of university and nobody else had much experience outside of university. Also, the C++ ecosystem in Ethereum is underdeveloped. We didn’t go with Java because few people in the office has professional development experience with it, while some of us had academic experiences with Java.

After going through our options, we settled on JavaScript. Everyone in the office is familiar with JavaScript since it is a regularly used programming language and its the main language used to develop DApps on Ethereum. It made us realise that regardless of its slowness compared to other languages, JavaScript is a vital part of the ecosystem. Without it, Ethereum probably wouldn’t have been so accessible to web developers and wouldn’t have grown to be so popular. Looking back, it should have been the default choice. It would also put us in a position to start building out the JavaScript ETH2.0 ecosystem and would provide us with a great challenge in order to improve our skills as open source developers.

Development Updates

Enough with the foundation myths. Time for some actual updates.

During the holidays, we did a little bit of work on Lodestar. So, this will be a short and cute update!

We are almost done completing the implementation of all the helper functions. The validator registration contract was also updated to fit the new specification and its associated tests were completed. We have started implementing the start functionality to start reading off deposits from the validator registration contract on the ETH 1.x chain. We closed a bunch of issues and cleaned up the repository a little.

Our fixed sized numbers library is almost complete! It is a general purpose library that developers can use to have fixed size integers. We are building it to be as close to the ETH2.0 specifications as possible. We have been slowly integrating it into our SSZ implementation, Lodestar and our BLS signatures library.

Upcoming work

Development

We are going to be completing our fixed sized numbers and SSZ libraries as these are of immediate relevance to completing Lodestar to the specification. Concurrently, we will also be continuing the development of our BLS signatures library and start the development of our gossipsub library.

Research

We will also be starting research on validator privacy and wealth inequality in Serenity. Other teams have been thinking and posting ideas on validator privacy in the p2p repository and we would like to contribute. We will be posting ideas in the repository and any significant breakthroughs on the ethresearch forum. Wealth inequality is something that many don’t talk about in Serenity. One of the main goals of transitioning from PoW to PoS is to increase decentralization in the Ethereum network and make it easier for others to use consumer hardware in order to participate in the protocol. First, we will be attempting to forecast a measure known as the Gini coefficient based on work by Matthew Wampler-Doty and using data provided by EthHub.

Interested in Contributing?

Of course you are!

You can do so by going through our various repositories’ issues tracker and work on the issues marked with Good First Issue. We try to make these as easy and straightforward as possible so that you become one of our beloved contributors. If you want to get your hands a little more dirty, you can tackle issues that are not marked with the Good First Issue tag. These issues are probably hard in some way for us too. Any help on these is greatly appreciated! All of our repositories have contributing guidelines. For more info, you can check out Sharding repo with everything you need to know to get involved.

As always, you can follow ChainSafe on Twitter and check out our Lodestar Gitter channel.

Donations

We are a group of open source developers seeking to improve the Ethereum ecosystem through all of our projects. All of our open source work is fully funded by grants and donations by the Ethereum community. If you are interested in giving a one time donation, you can send ETH or DAI to our address: 0x3990a27b2dA3612727dD3A9cf877C94465C32776. If you are interested in continuously supporting us, you can donate through Gitcoin’s subcription based grants program and pay in any token you like.

Special thanks to Vitalik for generously giving us 1000 ETH and to all the contributors who took time out of their holidays to help build Lodestar with us.