Load Balancing in Eth2 (Devcon5)

Devcon 5 · 8 Dec 2019 · 12:04

This Devcon5 talk covers load balancing in Eth2, the question of how work gets distributed across validators and shards under Ethereum's proof of stake redesign so that no single part of the network becomes an unintended bottleneck. It covers the technical considerations behind spreading that load evenly.

Speakers

Topics

From Devcon 5, hosted by Ethereum Foundation.

Transcript

I'm Jonah long I work for the Pegasus team on the Artemis client and today I'm going to talk about our architecture our architecture is designed actually before I get started let me let me say something I want to talk about something that's like kind of close to my heart I'm gonna take about three minutes and talk about this and so if you're new to the space and you haven't been in in theorem 2 for a while I just want to say welcome it's a kind of like drinking from a fire hose I think the first time at Def Con 3 when I saw what they were working on I was like wow that's something that I really want to be a part of and being able to come and speak at Def Con about our own eath to client that I've been working on it means a lot

to me and so I think some people might be asking occasionally why if you're m2 is taking so long and from that perspective I would point you to the DEF CON 4 talk from Vitalik his keynote where he described kind of the pitfalls and research decisions that we were going through when for the researchers and and that's a that's a really good resource for learning kind of like all the individual paths that we took to kind of get to where we are now and I think we've like I think in 2016 people

are still talking about using at Endermen consensus and to think like how far we've come since then and if hearing 2.0 researchers are like in my view some of the most intelligent hard-working and thoughtful people that you'll find in this space and in the hard working aspect I want you to ciao I challenge you to interview any aetherium to implementer or researchers spouse or significant other and they'll tell you how much they they hate the etherium 2.0 mistress you know and so maybe a few weeks ago we achieved interrupt which is very exciting we were able to get seven clients community

and that's very difficult because research is never easy and there is no clear path to victory and we are so close to the beacon chain the this is in my view you know the Apollo program of blockchains and I just wanted to recognize all the teams who are here who are just kind of like dedicating themselves to this if I say your team name you stand up okay don't don't be weird okay Artemis stand up then don't the Adrian you two need ya lighthouse

lighthouse lighthouse lighthouse we got lighthouse in the house all right cool Nimbus Nimbus team thank you very much lodestar we got any guys from lodestar all right they slept in that's cool harmony I saw you guys yeah great great job great job Jasper I don't know if wait tang is in the room hey wait tag dude I've never seen you a person that's nice to see you Trinity yay prism excellent work y'all Keith yeah Dean's not here okay cool

all right and the etherion foundation the researchers and white block if you all stand up to I just want to say great material support thank you they've sacrificed a lot to be here and we're we're definitely very close so now I'm gonna talk about the real stuff yeah so um we this is an overview of our stack so we chose to use open JDK 11 which is a Java framework right and this is our piece right here that we've written Artemis and these are some of the libraries that we use tiny is built is like run by the Apache foundation but it's basically

Antwon you know right there and JVM let p2p that's the harmony guys of Anton specifically yeah really great job and web 3j so to any be use for kind of like our typing but one of the problems with Java is like that there are they're not great primitives and so we wanted to be able to do some of these SSE functions and more advanced functions using a bytes class that wasn't the Java byte array and that's what that was for JVM Lib PTP is a you know I in the etherium 2.0 stack that's how you communicate with your individual nodes it's a pretty

interesting library web 3j is a like it's like web 3j s but for Java right it is just kind of this ability to call out and talk to individual contracts and we use Google Commons and I'll get to that in a minute but that's mostly the event bus and then also how I mentioned types are not great in Java so we had to have an unsigned long because there was a we needed to to the 64th - one size integer and we definitely don't have that in Java the best we can do is to to the 63rd - one okay so uh talking about Google Commons that is what we the the

reason that we chose to use Google Commons is specifically for this here the event bus this event bus allows us to have a synchronous communication in between individual services within Artemis and so you can see these individual services chain store chain storage our proof-of-work chain that's kind of like interfacing with the with the eath one net beacon chain and validator beacon chain azar is the core spec that you'll see in the etherium 2.0 spec and of course we need a validator so that's so we can kind of like exchange these modules and multiply them and and have fewer and you can see we have like

our config and logging I think everybody has that so why choose Java right oh that's a really controversial question so one of the one of our thoughts when we were beginning was we are specifically in Pegasus we're targeting some of the enterprises and interaction with Java for them is much more natural if you've worked at a bank or an insurance company or any kind of fortune 500 you'll find that many of them are wholly Java shops and we wanted something that would be extensible for them additionally Java provides if you've worked in Java you'll find that

Java provides ability to build large non monolithic pieces of software and so we additionally we were able to allow it allows us to do some of the eventbus asynchrony so what's so special about an event bus so these modules let me make sure okay cool that's my next slide good so these I have two that say what's so special about an event bus these modules allow us to do individual jobs as services and to by using an event bus we just are creating a service adapter

so if I want to put a message onto this bus I can put it onto the bus and other services can subscribe to that message bus so I have a diagram it's really handy so you implement a service adapter and you can in your other service adapters you can subscribe to some of the notifications that these other service adapters will be making so in in we our design process one of the considerations was we have products inside consensus like in fira that we are going to need data center scalability we allow allowed to have data center scalability by allowing ourselves to

deploy multiple of these individual services so if you can think of some complications that you will have with a with a client might one one might be I I need to validate blocks and many of those blocks could be spam right well by our design in this beacon chain we can power on multiple of these of these modules and we can validate these spam blocks right or you know reject them of course and another instance might be if you want to aggregate signatures right these are things that take a finite amount of time and if we're going to do many of them we will want to be able to

deploy a service that'll allow us to do many on individual services yeah so that's pretty much our architecture it's lovely right now we're using event bus long term we're going to use a G RPC interface but that is some time away we're focusing right now on production izing and after interrupts we have dropped in JVM Lib p2p which is exciting for us announcements okay so we're gonna build sharding client starting soon and it's going to be in Kotlin that's what that logo is if you don't if you're not familiar with that

some of the advantages of Kotlin is that it compiles to machine code it trans piles a new JavaScript it also runs on JVM which allows us backwards compatibility with our beacon chain client so we're really excited about that the other thing and I'm glad harmonies here because we're merging teams yeah I think we had conversations where like the world maybe doesn't need to Java clients for if you're into so let's combine our efforts and so that's we're gonna start that we're already in process and we're going to work conjointly on single sharding client and

we still don't know what we're gonna do with the beacon chain clients how we're gonna integrate them together cool that's it for me thank you all [Applause] you