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