Announcing yeeth

Ethereum 2.0 in Swift & BeaconChain.swift updates

Last week, I decided to start implementing an Ethereum 2.0 beacon chain for fun. This quickly transitioned into making plans for building a fully fledged Ethereum 2.0 client in swift.

Yeeth: Yeezy Ethereum, pronounced: how Mike Tyson says “yes”

Soon after deciding on working on this implementation, Eric Tu joined me in building it. We’ve made some good progress since the beginning. Here are our updates:

BeaconChain.Swift

The first thing we are working on is the beacon chain implementation itself. Since beginning, we made significant progress and the specification has been fully implemented. The implementation is currently one-to-one to the specification, so the code does not yet follow best design practices. Danny Ryan, one of the researchers working on Ethereum 2.0, is currently verifying the implementation.

Next Steps

Our next steps for the beacon chain consist of creating a simulator so one can actually run the beacon chain. We also need to work on BLS signature verification. For this, we have planned on importing a C++ library (never roll your own crypto). Finally, we will be refactoring the code to clean it up and create enough modular components to allow for easier unit testing.

If progress allows, we hope to be able to join the planned launch of the beacon chain testnet. This will require a lot more hours of work though.

Check out the repository here.

SimpleSerialize.swift

Eric Tu is currently working on this repository. It contains an implementation of Simple Serialize, the current selected serialization method for Ethereum 2.0.

Check out the repository here.

KSG.swift

Kids see GHOSTs

In KSG, we will be working on multiple implementations of GHOST used as the fork choice rule in Ethereum. It currently contains one implementation, which is a swift port of Vitalik’s python implementation. The implementation already works, but there is a minor bug that needs fixing.

Check out the repository here.

BLS.swift

This repository will contain a swift wrapper for a BLS12–381 Signature Aggregation implementation in C++. We’ve decided that we will be using the same BLS implementation as Prysmatic Labs. You can check out the implementation here.

Check out the repository here.


Keep up with our code on github, and check out our website.