A Lodestar for Ethereum Consensus #3
Authored by Phil Ngo
Q1 update for ChainSafe's TypeScript implementation of Ethereum Consensus
Welcome to the third installment of "A Lodestar for Ethereum Consensus," a series where we give periodic updates on our TypeScript Ethereum client.
A lot has happened in the last three months! We updated our light client demo, refactored SSZ + gossipsub, and successfully participated in Kiln's merge testnets, all while further productionizing Lodestar toward a stable v1.0.0. Let's get to the details!
Light client demo upgrades
Our beloved light client demo is used to demonstrate the potential capabilities of an in-browser light client, and with a new upgrade, it now has some additional features. First, we've added support for the Kiln public merge testnet alongside our Prater and Mainnet networks.
Second, the demo connects to an execution client RPC to pull data trustlessly from the execution layer. Starting with account balances, we're now able to query ETH balances and balances of custom ERC-20 tokens such as DAI stablecoins all within the browser, connected through Lodestar's RPC endpoints!
Speaking of endpoints, we've developed a set of light client routes currently employed by this demo. And we continue to work alongside other client teams and the Ethereum Foundation to propel light client initiatives as the Bellatrix Merge milestone nears completion.
Feedback on this spec proposal is valuable to the light client community and us as we work to standardize specifications. We will be at Devconnect this month in Amsterdam. Say hi!
Improvements on Lodestar's supercharged boosters
We like to think of Lodestar as a rocketship, and as such, we've spent the last few months upgrading essential parts of the ship for efficiency and effectiveness. These boosters would be like our libraries, such as SSZ and Gossipsub, which make Lodestar a functional rocketship.
During a recent standup, core developer Dapplion explains in this SSZ knowledge drop about some of the large refactors made on our SSZ library upstreamed to Lodestar for large memory improvements. Preliminary tests have shown that we have reduced our memory footprint by as much as 50%!
And epoch transitions to less than 2 seconds! 🚀
Another fun side note is that our SimpleSerialize.com webpage now supports the Bellatrix fork, so fire away!
Our other big booster upgrade is our gossipsub peer scoring refactor, which will help improve Lodestar's ability to connect and retain good gossip peers within the network. This is important because being a valuable participant of a p2p network is being able to efficiently and effectively retain a good set of reliable and symbiotic peers within your mesh topics.
Previously, our scoring system was inappropriately downgrading and banning good peers due to an I/O lag within our stack. This causes us difficulty in receiving messages on time, which is a penalizable offense, leading to unnecessarily downscoring peers until there are none left.
We learned a lot about networking in the last couple of months and have incorporated new metrics for analyzing peers on the network to better detect issues related to how we communicate on the network. If you're a networking guru, we'd love to hear from you! We always have room on the rocketship for people that can improve our networking stack for greater performance.
Kiln' it on Merge Testnets.
There's no shortage of Lodestar when it comes to Merge testing. Our simple setup script makes it easy for users to try Lodestar on the Kiln Public Merge Testnet with a flexible combination of Geth, Nethermind, or EthereumJS as their execution client. It's as simple as downloading Docker, cloning the Lodestar repo, configuring a variable file, and running a command, as demonstrated in this setup guide and proven through this recorded setup tutorial.
Although we currently have a minority group of users on Mainnet, client diversity is essential as we approach the real merge. After simulating the merge on the Kiln testnet, this point was unintentionally demonstrated when Prysm encountered a block proposal issue just as we transitioned into Proof of Stake. When one falls, we have backups - that's the power of decentralization.
Mainnet-ready with a side of feature-rich APIs
Per our previous update, we're actively participating on mainnet and running validators from the generous Ethereum Client Incentive Program, which allows us to collect valuable information to improve our client's performance.
Developing a client is an ongoing process that can be intimidating, but it's rewarding when you successfully reiterate designs to optimize processes. Our goal is to strive for 100% effectiveness 100% of the time. We're getting close, and we're working to meet requirements to integrate with community initiatives like Rocketpool.
To ensure that we're ready to integrate with client diversity initiatives, it's important to implement the required features. We've merged our remote signer API to enable user-friendly integrations such as a user interface for DappNode.
Also, as part of our commitment to being an option for Rocketpool Node Operators, we're almost complete with our run-up checklist to start integration testing on Rocketpool's Smart Node package. Our standard keymanager API is in its final review phases, and our doppelganger protection for validators is underway!
Testing for a stable mainnet release
As a recent entrant to the Ethereum Foundation's Consensus Layer Bug Bounty program, we are committed to ensuring the robustness of our client and the network as a whole. Part of this participation includes a security audit by X41 D-Sec, which will proceed at the beginning of June 2022.
Our goal is to code freeze a stable v1.0.0 version for the audit and release it as our first audited and stable version of Lodestar for public consumption. These final testing phases are critical and ensure that when the time comes, the ship is ready to launch!
The team is still growing!
We're always looking to bring more talent into the ChainSafe family and add contributors to our open-source repository. This is especially true of people who want to improve Lodestar - and by extension, the Ethereum Consensus layer.
We currently need a QA test engineer with testing infrastructure and automation expertise. We're also looking to find superstars with experience in p2p networking and pushing the limits of nodeJS on high-performance TypeScript. There are a lot of tough problems to solve, but the collective intelligence and skill of the Ethereum ecosystem make us optimistic about the future.
If you're interested in getting involved with Lodestar, check out our Github. If you'd like to contact the team, feel free to drop by on Chainsafe's Discord on the #lodestar-general channel or email info@chainsafe.io.
For more details on Lodestar, please head to our documentation site. You can also check out our open positions and get in touch ➡️➡️ careers@chainsafe.io
About ChainSafe
ChainSafe is a leading blockchain research and development firm specializing in infrastructure solutions for the decentralized web. Alongside client implementations for Ethereum, Polkadot, Filecoin, and Mina, we're building a portfolio of web3 products - Files, Storage, the Gaming SDK, and ChainBridge. As part of our mission to build innovative products for users and better tooling for developers, ChainSafe embodies an open source and community-oriented ethos. To learn more, click here.