[Music]
so hi everyone thanks for being
here I'm Patricio Paladino I'm one of
the co-founders and the CTO of nomic
foundation nomic is a nonprofit
dedicated to improve the ethereum
development platforms for Builders like
you at Nomi what we do is creating open
source infrastructure and tooling for
ethereum and our most well-known tool is
harut and we've been building harut for
quite some time we started it in 2018 so
almost 7 years ago and it grew from
being a side project to being a
collection of different tools that
include not just Hara the task Runner
and the framework also a network
simulator it includes things like a a
deployment solution and and better
support for solidity in vs code and
different
editors creating these things expose us
to almost the entirety of the
infrastructure landscape of ethereum and
we got to learn about its
limitations and I want to share a few
learnings that we got so far the first
learning is that building touring for
ethereum is challenging it's actually
pretty
challenging and this is not something
exclusive to harut if you were to to
build any kind of tool or infrastructure
in ethereum most probably you'll find
yourself with a me unmet needs and you
you will have to either create your own
Solutions or or your own workarounds or
hacks to see some examples if we were to
create a solidity
formatter which is just a tool that
takes your solity source code and
reprint it reprint it in a nice format
the first thing that you would need is a
parer a library or a tool that takes
that text process it in a in a way that
it will allow you to then pre-int it
easily and yeah you will find some
parcels for solidity out there but all
of them will have their set of
limitations they may either pass in
somewhere approximation of
solidity that it's not clear which which
particular version they are passsing or
they may be passsing a single version
where your tool wants to process every
version of
solidity or they may be tied to a single
programming language like I want my tool
to be buil in R but the part that I want
to use is built in JavaScript and I can
do it and I I don't know find a work
around or hack it together and this
leads to clearly less than ideal
solutions to see some more examples if
we were to build a linter a solidity
linter we would have all those same
problems and more what if we want to
type away a rule that I don't know
forbids that you use a certain type of
storage of your context well you'll
definitely definitely not find a library
that exposes the solid type system for
you to build this rule simply so what
would you do well you either bu a part
of that probably in a quick and dirty
fashion or maybe come up with a Half
Bake solution that it's just a bunch of
characteristics maybe a regular
expression or something like
that if you were to build a Sol editor
things were would be way way worse and
trust me we've been there we built one
and you pretty much have to reimplement
a good chunk of Sal seed code analysis
but those examples that I named are just
three out of a ton of different tools
and infra infra pieces that any any
realistic or mature development platform
has there are more examples that I
listed here but to be honestly these are
just some examples that came to my mind
and that could fit in a single slide in
a in a mature platform in a real world
well it's not that it's not real world
just less mature in a mature platform
there are tons and tons of tools and
they are constantly new tools being
created but in ethereum if you were to
create any one of these tools I assure
you that your experience won't be smooth
it will be simple it will be similar to
the things that I mentioned you will
find yourself unmet limitations and you
would have to come up with your own
Solutions and to make things a bit worse
some of these tools you would want them
to exist in different languages maybe
you want a connector language in
JavaScript in typescript in Python in
shva and that just add some kind of
multiplication to the problem making it
larger then another learning that we
have is that ethereum is a moving
platform and what do I mean by
this well for once ethereum is
constantly evolving it evolves through
hard Forks but also through layer twos
and there's tons and tons of changes
coming coming up now that are due to new
layer tws popping up every day also the
tooling and librar
Chang we went from using web 3 shs at
one point then to a new version of web 3
shs that was completely different then
tether then BM and I'm sure that things
will still
change finally another thing that also
change is the developer need need
themselves they buil different kinds of
applications at one point we were all
building stable coins then nfts then Dow
then different things and those
different things have different needs
and different levels of complexity and
size not to say that anything about
multi-chain that it's now completely
changing the needs of developers just a
few years ago things were way simpler
for an ethereum developer now they have
to deal with multiple change at the same
time and things just get
harder now to be honest this is not
something unique to ethereum it happens
everywhere every every software
development platform that it's alive and
continues to evolve goes through
constant change and renewal it happens
to node it happens to every every single
language what it's Unique to ethereum
it's the speed of
change and the fact that every tool is
built
based on hacks and workarounds as I
described and when you combine those two
things things changing quickly and
things being unreliable you get a ton of
fragility in the platform
itself and finally the other thing that
I or learning that I want to to mention
is that as I mentioned before at nomic
we don't work just for harat we work for
the entirety of the theum development
platform we want to improve it all
and if and at one point we realize that
we can't just do it through harad and we
can just do it by being direct providers
of final Solutions or developer
Solutions why because we have liit
limited B with we can only focus on so
many things our team is has a limited
set of people hopefully it will increase
but it will still be limited and we just
can't fix everything also if we were to
be direct providers of every single
solution we could become a an ecosystem
dependency a core ecosystem
dependency and that that's not something
that we want to be and at the same time
doing that would or could
potentially make us gain a a ton of
influence on the platform and that's not
not aligned with the values of
nomic
finally if we were to build the
resolution ourselves
we would be making a ton of decisions
because we won't build any any any of
the many technical approaches for every
single tool but we would have to pick
one or at most two and that would lead
to less technical exploration less
approaches to every single problem and
that could inhibit part of the potential
of the platform it's better to have
diversity of ideas diversity of
Technical Solutions and that then every
every every developer every project will
pick whatever fits best for
them so instead at nomic our long-term
vision is to build the core pieces of
infrastructure that would enable the
ecosystem itself to build its own
tooling and do it efficiently and at the
same time do we need from a nonprofit
and independent nonprofit that it has
clear ethereum align incentive
which are these pieces of
infrastructure they are two one is
called slang and the other one EDR for
ethereum development
runtime slang it's a solidity compiler
as a set of API focus on tooling what
does it mean well if we go back to the
examples that I mentioned and we wanted
to create a formatter and this is
actually doable now you could use slangs
formatter sorry not for matter slang
parer that that parer will be ready to
be consumed from many languages is ready
to be consumed from many languages and
it's easy to use supports many languages
of solidity and it's actually being used
by a beta version of of prer solidity
right now and it improve how prer
solidity can form a form a different
versions of solidity for a lter similar
thing you get slang it's a library you
get to use a different set of apis that
slang proposes exposes but same thing
you just have the the building blocks
available for you by Design slang it
Focus On Tools because tools tend to
have a different set of constraints that
just than just a traditional compiler
for example they may need to deal with
different versions of the language uh
while is a traditional compiler just
deals with one in a tool you want a
single tool to be able to handle the
then almost or all the entire history of
the language while a compiler can just
focus on a normal compiler can just
focus on a single one same with things
like error recovery you may want your
formatter to to be more permissive in
the presence of or or forgiving in the
presence of errors and similar
constraints like that that make having a
tooling oriented compiler a great piece
of infrastructure for Tool developers
and it's publish as a library so you can
use it either from rust or typescript
and it's also targeting wasm so you can
even import it from other other
places now EDR it's a portable library
also written in Rust it it implements an
ethereum simulator in including some
layer
choose that means that it simulates the
network it it's already in production it
Powers carat 2 the current version of
carat and when we release it we saw
performance improvements in massive
performance improvements actually in
some Car Projects some of them just
without changing any single line of code
just byting their dependencies starting
running 10 times
faster and at the same time EDR will
simulate do Sim will simulate optimism
or upstack chain soon and it will
include a solidity test Runner it's
again this is a library this is not just
build for harat anyone can install it
and it can be used for any kind of tool
that needs to run simulator simulations
or do any kind of runtime
analysis finally slang and EDR are
system projects what does that mean that
they are designed to work
together and but that and that's because
the combination of both will allow us to
do way more advanced things than what we
can do with each of them in isolation
right now we have a a compiler so see
build by one team we have our own Ram
times it's hard to collaborate deeply
enough to build things like I don't know
picture chrome chrome development tools
they are dagger you can change variables
in real time you can rewrite parts of
the code keep running those kind of
things are possible we can build them in
ethereum but they do require a ton of
deep collaboration and integration
between the compiler and the runtime and
that's the the kind of thing that we are
going after at nomic we want EDR and
slang to mature to be libraries that
everyone can use they will provide the
basis for anyone to grab those tools
grab those libraries and build the next
generation of ethereum tooling with them
and that's it if you want to learn more
about nomic uh you can scan the QR code
I guess it's on your left um that one
has information about the different
presentations that we are giving at
nomic that we are giving at Decon one of
them yesterday I already gave it it's
about harat 3 the upcoming version of
carat it's not ready for production yet
but there is an internal Alpha and of
information in that presentation it's
recorded so you can watch it today I
think at 5 or 6 p.m. there's
a presentation by one of our team
members that's going to explain how EDR
can simulate different T CH different
networks and tomorrow at 12 or 12:30
there is a presentation about slang and
how you can use it to analyze your
solidity code with some pretty cool apis
finally if you want want to work with us
you enjoy the the kind of thing that we
do you can scan the other QR code and
learn more about show show offerings
show positions at nomic and that's it
thank
you patrio thank you so much and for
everyone it's still open for qaa so just
Q disc code we do have one question here
for you so can EDR be used for things
like simulation with altered storage
State Storage over rights in tenderly
terms yes sorry but that's the whole
answer yes it
can we have another question here when
we advance testing features like
symbolic debugging be integrated or will
it be possible to connect in Advan noes
like build bear sandbox instead of hard
heart notes
uh well I don't have I don't think I
have an answer for the first uh part of
the question uh we'll have to analyze it
I can promise on any timeline right now
uh the second one I think should be
possible yes uh if not just reach out
through GitHub and we we can analyze
it we do have another question here
automatic test generation is that
something that anomic Foundation is
interested in adding wait I can read it
is
it shouldn't we do can EDR used be used
for oh okay cool thank
you uh it's not our I'll reread it just
in case automatic test generation is
that something that the foundation is
interested in not in not we're current
Focus I think there's a ton of
development going on super interesting
on AI but that's not the focus of our
organization if there is a way to
integrate those things
cheaply we will but harad itself it's a
super flexible platform you can build
your own plugin so if you want to
experiment with this and create your own
automatic generation plug-in automatic
test generation plugin should be super
safe for where go try it out and tell us
how it it went yeah
perfect patri you thank you so much for
your presentation thanks everyone for
your questions we'll be back in 15
minutes