That was really the core idea was to make the EVM execution a
lot more performant and then build a consensus mechanism that
can keep up with that really high execution throughput in
order to maintain a really high degree of decentralization and
then full decentralized block production.
I think Solana is processing somewhere between 2 and 3000
transactions per second. You know, where as Monad is
supporting over 10,000 transactions per second and then
also Solana is using relatively high hardware requirements.
I believe the requirement is 256 gigs of RAM right now, whereas
monad requires nodes to have 32 gigs of RAM.
Welcome to Epicenter of the show, which talks about the
technologies, projects and people driving decentralization
and the blockchain revolution. I'm Brian Crane and today I'm
speaking with Keoni Hong who is the Co founder and CEO at Monad
Labs. Monad is one of the most
ambitious and interesting new layer ones coming up, expected
to launch next year. So I'm really excited to get
into the details of that with Keoni.
Now before we get into it, we just want to share a few things
from our sponsors this week. If you're looking to stake your
crypto with confidence, look no further than Course 1.
More than 150,000 delegators, including institutions like Bit
Go, Pantera Capital and Ledger Trust course one with their
assets. They support over 50 block
chains and are leaders in governance or networks like
Cosmos, ensuring your stake is responsibly managed.
Thanks to the advanced MEV research, you can also enjoy the
highest staking rewards. You can stake directly from your
preferred wallet, set up a white label note, re stake your assets
on Eigenia or Symbiotic, or use their SDK for multi chain
staking in your app. Learn more at Chorus .1 and
start staking today. This episode is proudly brought
to you by Gnosis, a collective dedicated to advancing a
decentralized future. Gnosis leads innovation with
Circles, Gnosis Pay and Metri, reshaping open banking and
money. With Hashi and Gnosis VPN,
they're building a more resilient, privacy focused
Internet. If you're looking for an L1 to
launch your project, Gnosis Chain offers the same
development environment as Ethereum with lower transaction
fees. It's supported by over 200,000
ballot errors, making Gnosis Chain a reliable and credibly
neutral foundation for your applications.
Gnosis Dow drives Gnosis governance, where every voice
matters. Join the Gnosis community in the
Gnosis Dow forum today. Deploy on the EVM compatible
Nosis chain or secure the network with just one GNO and
affordable hardware. Start your decentralization
journey today at nosis dot IO. Cool.
Well, thanks so much for coming on Kioni.
It's it's really great to have you on.
Yeah. Thank you for having me, Brian.
So I, I like to start by kind of asking people about how their
crypto journey began. Like how did you first become
interested in crypto? Yeah.
So I'm, I'm 35. I've been working for like 1314
years of this point. The 1st 10 years of of my career
were spent in high frequency trading, working as a quant.
So I traded in a number of traditional markets, mostly on
the futures side. These are really high volume,
like very liquid markets like S&P 500 futures or 10 year
treasury no futures or crude oil futures.
Building performance trading systems that trade in these
really efficient markets generating very, very small
statistical profits over a long period of time and over some
period of time, our team started to trade crypto initially just
sort of like without a lot of understanding about the
underlying assets that we were trading.
But crypto is really interesting from a trading perspective
because there's so many different assets, like there's
so many different coins themselves, but then a lot of
different perpetual futures and deliverable futures and many
different exchanges. So there's a lot of interesting
correlation structure across the space.
And that was initially what got me and, and my trading team at
Jump Trading involved in crypto. But then at the same time, I was
also just like getting really into crypto Twitter and enjoying
all the narratives, all the memes, all the characters in in
2020 and 2021. So that was sort of the
introduction of the space. And then my team ended up
merging into the crypto team at jump trading in mid 2021 and
started working on Solana D5 for for a little bit of time.
Then at that point I was fully professionally in crypto prior
to starting Mon out at the beginning of 22.
Right. So you basically first started
trading, you know, just on centralized venues and then also
started doing more like on chain stuff.
Yeah, we, we were from a trading perspective, Yeah, I was more
focused on the centralized side. I mean, in a personal capacity,
I was trying out different Dexes and, yeah, buying NFTS and yeah,
getting rug done on coins. Yeah, on meme coins of
2020-2021, aside from Dogecoin, which which did really well, but
yeah, it was mostly on the in the professional capacity, more
on the centralized side. I'm curious sort of from all
your knowledge you had about, you know, how markets work on in
the traditional markets work and then when he kind of came to
crypto, what were the things that you know, just seemed most
weird to you or like most surprising?
I think two things that come to mind.
The 1st is just the general inefficiency of the markets and
the typical spreads that you end up paying as as a retail trader.
Like in the traditional markets of course depends on the
liquidity of the asset. But for, you know, most normal
futures or most normal equities, people will end up paying single
digit basis points in, in spread and, and in slippage like spread
and slippage combined, like their execution price is never
more than, you know, like one or two cents different from
whatever the midpoint of the market is.
And this is for equity that's trading at $100 or $200 or more.
So single digit basis points. And then if you go to the D5
space, it's, you know, the default is like a 30 bit fee.
And then in addition, like when you trade, there's like some
impact. And then when you price him like
some slippage and then you end up getting sandwiched, attacked.
You know, it's just like it's very common for people to end up
paying like 50 basis points or 1% or 2% in slippage.
So it's just, you know, like 2 orders of magnitude more than
you would in, in the centralized space.
So that's the first thing. And then the second thing is
just the fact that when a transaction is submitted, it's
in a pending state in most block chains.
Therefore, it's subject to the actual discretion of the the
block producer in terms of the ordering, which then has an
effect on the execution price as well.
And then tell me what? What's the origin story of
Monad? Is that what you did after jump?
Yeah. So I met James Hunsaker who's Co
founder and and CTO here at Monad Labs in 2014 when we were
both a jump on the same trading team and we've been working
together ever since then. We both left jump at the very
beginning of 2022 and then started Monad shortly after that
along with the third Co founder. And what was the, what was sort
of the vision that like you would think that cost you say,
OK, this is the thing I want to work on?
Yeah, I think what with any start up, you really need an
idea and an idea of also how that idea fits into the broader
landscape of, of, of the space that you're working in and, and
a clear problem that it's solving.
For us prior to starting Monad, when we were at jump trading for
about 6 months, we were mostly working on Solana Defy.
And at that time in 2021, we could see that there were a lot
of advantages to building on Solana because you know, Salon
was offering like 500 to 1000 real TPS of throughput, so much,
much more throughput than Ethereum.
Ethereum was about 10 TPS and also much more throughput than
any of the roll ups, which were you know, also in the like 10 to
30 TPS range, much more throughput than other EVM layer
ones which are also in the like 10 to 100 TPS of throughput
range. So there are a lot of advantages
to Solana, but at the same time builders were building in Solana
had to build with a completely different bytecode standard.
They couldn't reuse any of the work that they done if they
built for the EVM already. They couldn't use any of the
really rich array of tooling and libraries and so on.
And we just realized that we could give developers the best
of both worlds and give them both performance and
portability, focusing very heavily on optimizing all parts
of the EVM stack. And that was really the core
idea was to make the EVM execution a lot more performant
and then build a consensus mechanism that can keep up with
that really high execution throughput in order to maintain
a really high degree of decentralization and then full
decentralized block production. So I'm curious because I feel
like this EVM discussion, you know, it's been a very long
standing discussion where, you know, some people will be like,
oh, EVM is is fine. And then a lot of people be
like, oh, it's kind of like this, you know, odd thing that
was created early on and just because it was the first it, you
know, it has so much, so much adoption.
Do you feel like is the main, like how do you feel like
comparing the EVM with other VMS?
Do you feel like using the EVM is the biggest advantage?
Is just existing developer ecosystem tooling contracts
exist or are there other kind of pros and cons versus other VMS?
Right, I think that we'll see. EVM is the the just to state of
very explicitly. EVM is the low level by code
standard, but then typically developers are building in
Solidity or occasionally in Viper or Huff or other front end
languages and that that high level language gets compiled
down to EVM. But it is really true that
almost all capital on chain is in the EVM right now.
Like over 90% of all TVL on chain is in EVM dapps.
Additionally, there's a ton of existing libraries and tooling.
Almost all the applied cryptography research is being
done in the context of the EVM as well.
Like people don't really think about that part, but you know,
very much on the on the research side.
And a lot of 0 knowledge research is being done
ultimately to interface with the EVM Bycode standard as well.
So it's really like for developers, they would probably
prefer to build for the EVM given all these network effects
and the fact that by building for the EVM, they're not tied to
like a, you know, one ecosystem or a very small subset of
ecosystems. They can really deploy their
their work almost anywhere in the future.
So it's really just future proofing the work that they've
done, in addition to having access to all of the existing
libraries and tooling. Do you think this is something
that like kind of network effect is going to just continue
compounding and grow bigger in the future or you feel other
things like you know Slana VM or like move VM or any of these
others have a real shot at at some point taking over?
I think the future is very fluid.
It really depends on the path of least resistance for developers
and our team thinks that the work that we're doing to make
the EVM lot more performant so that then developers are really
not forced to choose between performance and portability will
have an impact on how people think about like what VM to
build for. You're right that in the current
regime, at this very moment, developers might be moving over
to Solana because they feel that that's where they'll get the
best performance, and also because there is a lot of
excitement around the Solana ecosystem right now.
But that all just can change with the introduction of new
technology. So when it comes to scaling, so
moving all the bottlenecks and making sort of the EDM very
performant, what are the things that you guys did to achieve
that? Yeah, there are at least four
different major areas of optimization or or four
different new architectures that have been introduced in addition
to just more generally optimizing.
First of all, monad is completely from scratch.
So all parts of the stack are are built from scratch for
performance in C++ and Rust. And then we've introduced
several new architectural improvements, which I can
describe sort of briefly. I think the main way to think
about it is that there is execution improvements, there is
consensus improvements, and then there is improvements in how
consensus and execution interact with each other.
So the first two improvements that I want to mention are both
related to execution. The third one is related to
consensus, and the fourth one is related to how consensus and
execution interact. So on the execution side, the
two things that we've, the two major things that we've done are
introducing a new database and introducing optimistic parallel
execution. And the reason why these two
things are both needed in order to make execution a lot more
performant is because, well, first of all, to talk a little
bit about the job of execution. So like in Ethereum, there's a
block, it has a whole bunch of individual transactions that are
supposed to be run sequentially in order to get to the end
result. And initially you might think
that there's no way to parallel process because the true state
of the world is the state of the world assuming that all those
transactions are run one after another.
So for example, if I start with 200 USDC in my account and then
the first transaction is me sending 150 USDC to you, and
then the second transaction is me sending 100 USDC to my
brother. So you know, the first
transaction, when it gets executed, it'll take my balance
from 200 to 50. And then the second transaction
when it runs will take my balance from 50 to still 50
because that transaction will fail because it was trying to
send 100, but I don't have 100 anymore.
And so I think this is an example that shows you that you
kind of do have to execute the transactions, at least in some
sense serially because you need to have done that first
transaction where I was sending you 150 before we can actually
get the correct result of the second transaction.
If you ran them in parallel, just totally naively, we would
think that both of them succeeded.
So there is a notion in which sequential execution is needed,
but in Monad we introduce optimistic parallel execution to
do a bunch of work in parallel, but then do the right amount of
bookkeeping so that we're keeping track of inputs and
outputs, IE storage slots, both the values that were read in
from a storage slot and then the values that are written to a
storage slot. And although we do a bunch of
work in parallel, we do bookkeeping and then commit
those pending results in the original serial order and re
execute any unexpected results where the inputs have since
changed. And so in that particular
example, we do those two pieces in parallel.
We would get pending results for both of those two transactions
and then the second pending result.
We would then invalidate and re execute because we would realize
that it was done wrongly the first time.
OK, because I think some other chains they were like first try
to check like OK, what contracts does it touch?
And then if it doesn't touch this contracts, then you say,
OK, you can paralyze it. But in your case you you just
execute it and then you see afterwards what it touches and
then you kind of like roll things back almost or.
Yeah, that's, that's exactly right.
Although I wouldn't call it rolling it back necessarily
because nothing has really been committed yet.
But but yeah, that's that's a good characterization though
that a lot of block chains, they do parallel execution require
explicit dependency specifications.
So Solana is a good example of this, where when you submit a
transaction, you have to say the exact pieces of state that that
transaction is going to touch and indicate which ones are
going to be read and which ones are going to be written to, AKA
the read write locks. And then that information is
used as an input to the salon, a scheduler to make decisions
about how to parallelize work. And if you misspecify one of the
dependencies, like if the transaction tries to go out of
bounds and touch a piece of state that wasn't specified
ahead of time, then it just automatically fails.
So that's sort of a more explicitly defined model for
transactions. And I think you would think that
it might allow for more performance because you have all
the dependencies upfront. But in practice, what we found
is that you can get a lot of performance from this pure
optimistic approach where you just assume that everything is
OK, that you know you're just reading dependencies on the fly,
but then you put the results in a pending state and you commit
them serially and re execute if you need to.
Maybe we can come back to this later.
But you know, one question I'm very curious about, it's the
whole question of like MEVPBS because that I think maybe
relates to this as well. But maybe let's go through the
the You mentioned 4 things, so let's go through the other ones
first. Oh, yeah, sure.
So I was telling you about, I guess one of two major
improvements that are improving execution.
So I told you about the first one already, which is optimistic
parallel execution. The second one related execution
is this new database that we've built called Monad DB.
And so the thing to know about this particular topic is
Ethereum stores all of its state in a Merkel tree.
And the benefit of storing all the state in the Merkel tree is
that the Merkel tree has a Merkel root, which is
essentially a check sum over all of that state and in that way a
commitment to all of that state. So like if you and I are both
running full nodes and we both have the same Merkel root at the
top of our tree, then we both know that literally every single
piece of state is exactly the same on both of our machines.
So we don't have to go like state by state in compare all of
them. We can just compare the Merkel
roots. It's a very efficient way of
ensuring that we're on the same page.
And the Merkel tree is, you know, a successively hashed tree
where every parent is a hash of all of its children.
And then you just kind of like propagate that all the way up to
the root of the the tree. And the thing to know about
existing systems is that this Merkel tree structure is
generally embedded inside of another database.
For Go Etherium, it's Level DB or Pebble DB in Aragon and Rath
it MDBX, which is another database.
But any, in any event, like all of these Ethereum clients, they
use a different database as an actual store for all this Merkel
tree data. And it creates a lot of
interaction because each of those databases themselves have
another tree under the hood that's being used to define how
state is or how data is being stored on disk.
So when you want to navigate from the root all the way to one
of the leaves in the Merkel tree, each time you visit a
node, you're actually triggering another look up into another
tree. And so there it's just really
inefficient to let go navigate from the root of the Merkel tree
down to any particular node because each node that you visit
is going to trigger an entire look up into another tree.
So with Mona DB, we apologies for the long explanation there,
but for Monad DB, we're actually storing the Merkel tree natively
on disk. So there's an exact mapping
between how the tree is laid, the Merkel tree is laid out and
the, you know, the locations on disk, the pages.
And then in addition to that, there's also a lot of other
optimizations like introducing asynchronous IO support so that
many pieces of state can be read at the same time, bypassing the
kernel, A bunch of other optimizations.
But what you really get is a much more efficient look up
system and also one that can support effectively parallel
reads, which then interacts really well with the optimistic
parallel execution. Because an optimistic parallel
execution you are running many transactions, each of which is
at some point encountering S stores and S loads and
triggering database lookups. And so while all these database
lookups are being triggered in parallel, by running all these
transactions in parallel, the the disk is also able to service
a lot of those requests in parallel and start, you know,
serving serving state back to each of those transactions.
OK. So basically what you're saying
is like this kind of this Ethereum has this like tree
structure defined where you know the the data, the state is
hashed and then you have a root hash.
And then that's implemented on top of other tree structures
which depend on the different databases.
So you have sort of the three on three, which then makes it
deficient, whereas you guys just have basically use the
underlying tree structure of the database to just store
everything. So you kind of get rid of one
layer of complexity there. Yeah, that's exactly right.
And that's super important because all of this data is
living on SSD. And the mental model that you
should have about an SSD is that it supports a lot of a lot of
work being done and a lot of look UPS being done in parallel.
So like a good SSD is a million or more IOPS IO operations per
second, but the latency of each one of those look UPS is
somewhere between 40 and 100 microseconds.
So you can think of it as like a bottle that has a really wide
bottleneck and you want to be able to stick a whole bunch of
straws into the bottle at the same time.
And you know, like put all the straws in your mouth and suck a
whole bunch of juice out of the out of the jar all at the same
time. But there's the straws are long,
like there's a long amount of latency to look up any single
piece of storage. So in the context of that nested
tree structure that we were talking about, where you know,
you're going to end up having to go back and forth with the disk
a whole bunch of times just to get one piece of state.
And when you can reduce the number of back and forths
substantially, you can get a lot more throughput out of the
system. And so that is primarily and now
an advantage also because I can imagine there's different
advantages to this, right? Like so 1 is that when you
execute a lot of transactions, you can just do it faster
because I maybe it also makes like running a node more
efficient. You know, if it's just like a
normal node where you look up the state that doesn't that's
not like a validator or. Yeah, that's right.
The database is is just how all the state for any node, whether
it's a full node or like a non validating full node or a
validating full node. Either way, they're still going
to need to respond to RPC calls and execute transactions.
Or go look up pieces of state, and all of those are accelerated
by having a better state back end.
Cool. So we have the this optimistic
parallel execution of the new database and then what are the?
What's the next one? Right.
So the two other areas that I mentioned are on the consensus
side and on the interaction between consensus and execution.
So to mention the consensus part first, we have a new consensus
mechanism called Monad BFT, which is pipelined to phase hot
stuff. So hot stuff is a consensus
mechanism that has linear communication complexity.
That means that as the number of nodes in the network increases,
the amount of overall number of messages that need to be sent
increases linearly with the number of nodes.
As opposed to other consensus mechanisms like Tenderman AKA
comma BFT where it it's quadratic.
Like you know, it's the square of the the number of nodes in
the network. Because in tenderment it's all
to all communication, whereas in hot stuff it's generally one to
many, many to one communication. OK, so what's what's the kind of
number of validators that you expect that monad can scale to?
We expect a couple of 100 validators participating in
consensus on day one of Monad Mainnet and then we have a
slightly longer term road map to get that to the thousands.
But with the current consensus mechanism implementation, the IT
can support somewhere between 2 and 300 validators participating
in consensus. OK.
Because that's kind of similar to, I mean, OK, tenement chains
maybe is more like I would say sort of up to 200.
I think it's probably the most that people run.
What about their block time? Right, so monad BFT in monad is
being configured with a one second block time, as I said, 2
to 200 or more validators participating in consensus.
And the other thing I forgot to mention is that monad BFT has
single slot finality, which we think is really important
because you know, there's it affects the the bridging time.
Like if you're trying to bridge off of monad to another
blockchain, then typically, well, the bridge really should
wait until the chain is finalized before relaying a
message to any other chain. And in Ethereum where you have
somewhere like 12 to 18 minute finality, that means it just
takes a super long time to get your assets off of it.
Assets off of Ethereum to another blockchain.
Single slot penality really helps a lot with faster bridging
and faster settlement times. What are your thoughts on the
comparison of this versus the Solana consensus which is you
know this proof of history BFT like consensus I?
Think Solana has Tower BFT which is not single slot finality.
I think that the some of the benefits right now of tower BFT
are support for the higher number of validators
participating in consensus. I think they have somewhere
between 2 and 3000 validators right now, which is actually
quite impressive. Like I know that the the meme on
Twitter at least in the a couple years ago, like people would
always say that Solana is really centralized.
And there are some aspects in which I would say that that that
could be true. For example, the high RAM
requirements of running a Solana node.
But on the other hand, from a pure consensus perspective, it
is impressive that Solana has 2000 plus validators
participating in consensus. But that does come at a cost and
the cost is really finality is like not single slot it, it
takes some time. I think in practice they say
like after 32 slots you can consider it to be finalized.
But it it's a, it's a little bit probabilistic even there as
well. I'm at 32 slots in Solana. 32 *
400 milliseconds is what is it like 12.8 seconds?
Yeah. And I mean one big difference
with sauna, I guess that's not consensus related.
No, but they said there's no Merkel proofs, No.
Yeah, Yeah. That's another example where
Solana removed the merkelization, which I think has
an impact on bridging, has an impact on the ability to run a
light client. In Solana, they say that the
light client is like a node that submits a transaction, that
creates a yeah, transaction that generates a proof, but it
actually has to be included in the blockchain in order to
generate like that that proofs. It's kind of it's not really a
light client in the same way that when people typically talk
about light clients. And from the light client
perspective, those are. How do the light clients work
for Monad? So I think on on day one we will
not have and the light client implemented, but it it
definitely could be implemented in the future with the consensus
mechanism that exists. And yeah, there's there's no
impediment per SE because there is, there is a Merkel route and
there is like all the other things that you need.
OK, cool. So that was consensus.
And then let's go to the last one.
Monad implements something that we call asynchronous execution
and the way to understand that is for sort of best understood
by sort of just want to mention some numbers here.
So Etherium has 12 second block times, but the actual rough time
budget for execution is only about 100 milliseconds, which
is, you know, if you do the math like less than 1% of the block
time. And so that's, that's really
interesting that the budget for execution is so small, like such
a small fraction of the block time in Ethereum or another
block chains. And the reason for this is the
fact that execution and consensus are interleaved with
each other. So typically in block chains,
the you know what'll end up happening is the leader ends up
choosing a list of transactions and then executing all of them,
generating the Merkel root of the resultant state tree and
then sending that as a block proposal to everyone else, then
everyone else. Can you repeat that?
How they're interleaved?
Yeah, so in most block chains, execution and consensus are
interleaved. Execution is the single node
problem of, you know, given a list of transactions, what's the
end state? And then consensus is a
distributed systems problem of nodes talking to each other over
a network. The nodes, if they're globally
distributed, which they should be, then that means round the
world communication, which can take hundreds of milliseconds.
There might be multiple rounds of communication.
So I think All in all, what you can see is that consensus ends
up taking the vast majority of the block time and execution
ends up being squeezed into a very small fraction of that
block time because of the interleavedness of execution and
consensus. Yeah, yeah.
But for example, that's something where Solana is also
much more because of their system, there's much more
execution, right? Right.
So with Solana, they're also exploring the idea of
asynchronous execution. Tolle has written about this
couple times on Twitter, which has been really interesting for
us to see. But yeah, Monad has been, you
know, since day one, asynchronous execution has been
a big part of the overall design.
And asynchronous execution means decoupling those two problems of
consensus and execution from each other.
Asynchronous execution is the idea of moving execution out of
the hot path of consensus into I guess what I would call a
separate swim lane that is slightly lagging consensus.
So it what what ends up happening is as soon as the
nodes in the network come to consensus about an official
ordering of transactions, then two things happen in parallel.
One is they can start consensus in over the next block.
And the other thing is they can all each independently execute
that list of transactions that they've just agreed upon.
And so when you move the execution out of the hot path of
consensus into the separate swim lane, you can massively raise
the budget of execution and use the full block time as opposed
to only a small fraction of it. So first the network agrees on
just the order of all the transactions and how they're
being executed. We just we just consensus on
that and then the execution happens.
That's right, yeah. OK, OK, very interesting.
So that also means, for example, if you're now a proposer or like
you don't really have like there's no nothing really you
can no discretion you can apply I guess.
That's a, that's a good question.
So as a proposer you still can apply discretion and we think
that in practice the proposers definitely would apply
discretion because that allows them to, you know, more
optimally choose the set of transactions that that will end
up paying fees. You were asking earlier about
how MEV will end up working and we do think that there will
probably be some sort of mechanism for network
participants to submit ordering preferences to the block
proposer in some way and attach a tip alongside that.
So then that tip revenue is additional revenue for the
proposer of. Course the proposers are the
proposers are the ones that come up with the ordering of
transactions. Correct.
And and then that gets consensus on and then the execution part
is kind of that is basically predefined.
Correct. That's exactly right.
So I think you said it better than than I did the first time,
which is when you think about a blockchain.
A blockchain is really just a bunch of blocks that are in
sequential order and then in each block, a list of
transactions which are also in sequential order.
So if you sort of like let the blocks themselves fade into into
the distance for a second, you just literally have like a long,
long, long list of transactions that are all canonically
ordered. And if, if everyone or, like
Brian, if you and I are both running nodes and we both have
exactly the same list of transactions starting from
Genesis, then we should have the same exact state of the world
because we're both applying the same transactions, 1 by 1 by 1
by 1 by 1, and each time making the exact same state transition
and getting the same state of the world, the same Merkel root.
So the ordering of the transactions purely determines
the execution. It purely determines, like, what
the correct state is. Yeah.
Basically. Like the only reason why we have
Merkel roots is so that we can check each other's work and make
sure that, you know, neither of our computer is like got hit by
cosmic rays and and made a computational error.
It's like just to make sure that we're we're doing the same
thing. OK, so, but it also means now if
I'm the proposer, I, you know, I get all these transactions and
now I can come up with a list like an order of these
transactions. So then there is potentially all
the value right in changing this order, you know, accepting
different orders, putting in your own transactions, like all
that kind of stuff. Yeah, that's that's right.
So and and this is really just true of any any blockchain, but
yeah, almost every blockchain is leader based.
So there's a rotating leader, and then when it's your turn as
the leader, you. Sort of have the privilege of
being able to choose from various pending transactions
that are in the mem pool and assembling the next block, IE
assembling the next ordering of the next set of transactions
that get enshrined into the history of the blockchain.
Of course you need to choose valid transactions so that
everyone else like verifies them and accepts them and votes in
your block. But you have discretion over
what the ordering is. And what I'm saying is that that
choice about the ordering is all determined during consensus.
So you as the block proposer, you choose an ordering, you send
it to everyone, everyone looks at it, checks at all the
transactions are valid, does some other validity checks which
I can talk about in a second, and then votes yes.
And then once you know, super majority of the network, like
super majority stake weight has voted yes.
Now, that list of transactions is now enshrined in the history
of the blockchain, but that can be done actually before
execution of that list of transactions happens.
And so that's exactly what's happening in asynchronous
execution, is having the nodes all agree on the official
ordering. And then once they've agreed
upon it, then they can do two things in parallel, which are
like start working on consensus, seeing the next list of
transactions, but then in parallel go execute the things
they all just agreed upon. So I'm curious now if you do you
think that where this is going to is that we also going to have
a sort of proposal builder separation.
Where as a, as a proposer, I'm going to basically, you know,
plug into some builder or some other entity that, you know,
applies a lot of like intelligence to basically give
me an order that sort of produces the highest value, I
mean highest value for, for that builder then.
And because that presumably there's, there's a lot of value
right in, in determining that order.
Is that where you expect things to go?
Yeah, I think so. So the the question of how the
ordering is chosen is sort of orthogonal from all the other
stuff that I mentioned. Like in the story I was telling
you about how the proposer just chooses an ordering and then
message it to everyone. They all agree upon it.
Now the order is enshrined and now everyone can go execute in
parallel to consensus in the next block.
That entire story just kind of black boxed the decision of the
proposer of how he or she chose that ordering.
And to your point just now, like that decision could be made by
outsourcing that decision to like a third party network that
is, you know, like a proposer builder, like APBS type thing in
Ethereum where there's a system for people to be able to submit
bundles to the builders, Have the builders build a block, have
the block be submitted to a relay, which conducts a private
auction from different builders to choose the ordering that
offers the best overall amount, overall amount of revenue before
presenting some like the best option to the proposer and
having the proposer choose that and, and trying it all of that
still like kind of work could work the same way.
I don't know. The like it's, it's sort of out
of protocol, so we'll see how it develops over time.
But yeah, I think you could think of the ordering choice as
being orthogonal to the other considerations of how consensus
and execution end up working. But like by default when Monet
launches, you know, proposer and builder would be basically the
same. And then so it's not like
enshrined to propose a builder separation and then someone may
come and say, hey, we are going to create a modified client that
separates out the proposal or like or plugs in some kind of
builder mechanism. That's right.
Yeah. The the default mechanism for
block building is priority gas auction.
So choosing the ordering of transactions based on descending
gas bid. I know like I think PBS is
something that's fairly, you know, controversial.
I actually remember we did interior Vitalik at the ECC and
asked him the question, how do you, you know, do you feel it
was the right decision? And you know, I'm not really
sure if this PBS separation was the right decision.
Do you feel like is this a desirable end state, the kind
this kind of separation or because in the end right there
is potentially that a lot of value ends up kind of being
extracted by, I mean in Ethereum's case, right, we now
have I think really just two, two builders.
Who? They are completely dominant.
Like how, how do you want this ecosystem to evolve?
Do you hope that there's going to be a lot of builders who
compete or, or you sort of say like don't really care, It's
it's up to the market to figure this out or like how do you want
to see this evolve? Right.
Yeah, it's definitely a a complex topic.
I think that, you know, one thing that I hope we can
accomplish through what whatever the the ultimate block building,
whatever block building mechanism becomes sort of the
the dominant 1. I hope that it involves a lot of
builders. Ideally it would be possible for
the proposers themselves to just run the software themselves and
build an optimal block that way. It's it's much more
decentralized in terms of that. The thing that you were
mentioning like ultimately the set of agents that are
sequencing transactions, we want that number to be as high as
possible. I think in terms of the the
value capture in Etherium right now the proposers are capturing
a lot of the value because although there aren't that many
entities that have a high market share on the in the builder
space due to competitive forces, they do have to bid up to give
up most of the value that is in that block to the proposer.
So it is still very beneficial to the proposer network, which,
you know, that is sort of revenue maximizing for the
proposers, which is then good for all token holders because
anyone can, you know, has the ability to stake and thus, you
know, sort of get the returns of a proposer or at least most of
them. There's also the part about how
over time we're seeing more value get captured by
applications through, yeah, mechanisms where the the builder
needs to rebate some of the value to the application itself.
And you know, then when the revenue flows back to the
application, that can be good because either it makes the
proposition of building an app more attractive, which I think,
you know, a lot of us in the space would agree is like a good
thing to happen because then it'll just encourage more
ambitious apps to get built. Or potentially the revenue,
although originally going back to the app then could flow back
to either LP's of that particular D5 protocol or maybe
a rebate to the to the taker to the end user.
So I think those are all different things that can evolve
over time. But yeah, I think to your
original question like we we do, I think it is objectively better
for there to be more actors that are ultimately choosing the
ordering of transactions for the purposes of censorship
resistance and decentralization. OK, cool.
Fantastic. So now I think we're coming to
the the fourth thing you mentioned.
Oh, actually I think I, you know, I've gone all the way out
the plank cause I've given the first two things were both
execution related, then the third third one is consensus,
and then the 4th was the separation between consensus and
execution. Oh, the asynchronous.
Yeah, yeah. OK, OK, Yeah, yeah, yeah, OK,
yeah, optimistic parallel, new database, the consensus and then
asynchronous execution. Cool.
So where do we end up with this? Like what is the the kind of
throughput that is achievable here?
Yeah, I think the cool thing about these different
technologies that we're introducing is that they all
stack on top of each other. So it's like, you know, it's
always exciting when you get a bunch of coupons in the mail and
then you know, 1 is like 50% off, 1 is 25% off, but they
actually stack on top of each other 'cause then you really
have a magnifying effect. So as I was mentioning before,
asynchronous execution on its own is a massive unlock because,
you know, an existing interleave systems, only a very small
fraction of the block time can be used for execution.
Whereas by decoupling the two, basically the full block time
and expectation could be allocated to execution.
So we can pack a lot more, you know, literal, just like we can
pack in the full block time as opposed to only a small fraction
as execution time. And then if in addition to that
you have parallel execution, since we can do a lot more work
in parallel, and then we can also have a more performance
state database, we can respond much more efficiently to all
these S loads and S store requests that are happening in
parallel. Yeah, we have a more performing
consensus mechanism. We can keep up with this entire
system of execution that's fast, then we can really, really see
massive gains. The other analogy I want to
mention is that in asynchronous execution, like I, it reminds me
a lot of the, the movie Limitless where there's this,
which is sort of based on the premise that you only use 10% of
your brain. What if you could use 100% of
your brain? Like imagine how super powered
you would be. And of course, that's like a
little bit misleading 'cause I think that 10%, like the
denominator, has a lot of Gray matter like supportive tissue or
something in there. But it's not really true that
you can go from 10% to 100%. But it's a nice fantasy to think
about. And in this movie, there's this
guy who takes a pill that allows him to go to use 100% of his
brain and he's he's just immediately super powered and
he's doing awesome. And then of course, there's like
a narrative arc where you know, by being so powerful, he gets in
a lot of trouble and then he's able to somehow work out of it.
So asynchronous execution is like that where you're going
from using only a small portion of the block time to using the
full block time. And then when you stack this on
top of these other improvements, we can really get significant,
significant throughput. So now back to your the question
you're actually asking. So Monad is supporting over 10
KTPS replaying existing Ethereum history.
So this is not 10,000 transfers or 10,000 ERC 20 transfers.
This is 10,000 real transactions from the distribution of recent
Ethereum blocks per second, which ends up being about a
billion transactions per day or about 1 billion gas per second,
which actually is, is kind of funny.
Like now on Twitter, a lot of people talking about this goal
of Giga gas throughput or 1 billion gas per second, which is
the throughput that we're able to achieve on Monad by stacking
these different technology improvements while running on
reasonable hardware requirements.
Which I think is another thing to point out because a lot of
the goals of getting to Giga gas throughput are assuming that
you're running a, you know, a centralized L2 where there's one
server and that one server has like a massive amount of RAM.
And, you know, it's like kind of a supercomputer that doesn't
really work with the principles of decentralization.
Like we want to have a fully decentralized network where the
nodes are literally globally distributed with the full
overhead of consensus. You want anyone to be able to
run a node. Like it shouldn't be expensive
to run one of these nodes. So if you can get to a gig of
gas of throughput, but you have to have a massive like, you
know, a TB of RAM or more like people are talking about having
like machines that have 10 terabytes of RAM just like
crazy, crazy machines in order to get that throughput.
But with Monad we're getting that throughput while using
commodity hardware, like a server that costs $1000 a year
to run. OK, OK.
And then so can you just contrast this with Solana today?
How, how does it compare? I think Solana is processing
somewhere between 2 and 3000 transactions per second of of
real non voting transactions. And you know whereas monad is
supporting over 10,000 transactions per second.
So it's like, you know, 3 to 5X the throughput right now.
And then also Solana is using relatively high hardware
requirements. I believe the requirement is 256
gigs of RAM right now, whereas monad requires nodes to have 32
gigs of RAM. How do you imagine this is going
to evolve in the future? Do you think you can scale that
a lot more or is this sort of are you hitting the limits here
with these improvements? I think there's the capacity for
another like two to 5X of of throughput improvements.
The real constraint is the on the networking side.
So monad wants nodes to have 100 megabit bandwidth and you know,
the throughput is up to a certain point is sort of linear
on the consensus side with the amount of bandwidth that's
allocated. So, but it's like not we, we
don't think it's reasonable for a decentralized network to
require Gigabit bandwidth, for example.
Like there's just sort of like a physical limitation to the
overall throughput that's imposed by the networking.
OK, OK. So basically bandwidth becomes
like the main bottleneck. And then that's something where
OK, if you if you go up with bandwidth requirements, it just
means that you have to start compromising decentralisation to
some extent or to another extent.
It just becomes harder to run about this.
I mean, I think in Solana Solana's case, right that that
is a real challenge. I mean, we've had various times
in the past, you know, data centres would basically say,
hey, you're getting, you know, it's getting DDoS because it's
getting so much traffic. So I think finding like data
centers that support like Solana Valley is not it's not so easy.
Right. Yeah, I think that, well, I
think the the more the most important thing to focus on is
like the fact that there is like for Solana or Monad, there is a,
you know, commitment to having a fully geographically
decentralized validator set, having hundreds or thousands of
nodes participating in consensus.
Like a lot of the more recent narrative has been around like
just like very, very centralized setups where there's a single
sequencer. Like if in that situation,
there's no consensus at all. And so if there's no consensus,
then that whole thing about the bandwidth, like doesn't become a
consideration because the node doesn't have to talk to anyone
else. Like, it literally is just the
one super node that all the requests are flowing to.
And all of the yeah, all of the RPC calls are, are are going to
or or maybe going to like a slave or something, but you
know, something in the same data center.
So I think that's the the single biggest thing.
And that is ultimately what the constraint will be is the the
networking limitations to support a fully geographically
distributed decentralized network.
But I think it is very important.
And then I think from that point onward, then Monad would perhaps
pursue a horizontal scaling strategy where there is several
instances of Monad that each are very computationally dense, like
each over each or each delivering over 10 KTPS of
throughput. And then, you know, when that
10K gets saturated by whatever set of apps that are there, then
maybe there's like another Monad instance that's also highly
decentralized, has nodes all the way all around the world that
has a more specific, like different, different focus as
well. Right.
It becomes sort of a sharding like design.
But I mean fortunately 10 KTPS is is quite a bit right.
So it should probably have some time.
Yeah, you want a Shard at. You want a Shard when you've
reached the limits of what you know the hardware can really
support. Like I think that it doesn't
make sense to Shard. Like if each network could only
support 100 TPS and then you need to have 100 shards in order
to get to 10 KTPS, that's not very good.
But if one Shard itself is 10 KTPS and then you set up 100 to
get to 1,000,000 TPS, that seems much more justifiable to me.
Yeah. And I mean, it sounds like
previously you were sort of referring a bit to like Mega
Eve, right, which is the other project that's trying to super
scale EDM, but doing it with this kind of supercomputer
centralized approach. To me, it seems very obvious
that's like a massive compromise on on in the end what we're
trying to do here, right? You're having like decentralized
networks. But yeah, I mean, I guess they
do you think, but mega, let's say Mega Eve will at the expense
of decentralization, then probably be able to to process
even much more than Monet or like what are your thoughts on
on like Mega Eve as a comparison?
Yeah, I think there's there's a a number of different projects
that are trying to build like high performance L twos taking
advantage of the the fact that there's no consensus overhead
and you know, you can run that one note on a on a really big
box. I think another example is is
Ryze L2 is, is also doing this. I think radio is also doing
this. I mean, you could argue the
hyper Liquid itself is also kind of doing this because the nodes
are all in Tokyo, like the node in order to run a node, you kind
of have to have it in this one geography, high RAM requirements
on the nodes. So yeah, I think there's a
there's a number of different projects that are all trying to
trade decentralization for performance.
And I mean, if you think about it like just your expectation
should be that there could be more performance if you cut out
all of the decentralization aspects and all of the overhead
of consensus and so on. I think Mert actually has a
pretty funny take on this where he talks about how L twos really
should be like a lot higher TPS than Solana because they're all
running single centralized sequencers and you can Add all
of their throughputs together. The fact that like right now
Solana has higher throughput than all the L twos combined
when the L twos like have this massive advantage of
centralization is actually pretty crazy.
So yeah, I think that they're different designs.
Like there's, there's definitely some trade-offs being made, but
the goal of Monad is to offer really high performance while
having a very high degree of decentralization as well at the,
at the layer one level. And we, we think that that's
quite important that that's, you know, that's why we're all here
is to, to help build new technology that helps
decentralization to have a greater impact and decentralized
apps have a greater impact. So I'm curious about the
developer experience here. Is it basically just going to be
hey I'm developing just like for Etherium and pretty much the
same but the difference is just faster block times, more
throughput, cheaper transactions?
Or are there differences when it comes to developer experience as
well? On day one of mainnet the focus
is really just pure EVM equivalents so that any you can
take any application built for Aetherium and redeployed on
Monad without any changes. You don't even need to recompile
it. We are thinking about some
additional quality of life improvements for developers.
Those are things like raising the the the bike hood size limit
from 24 kilobytes to 48 or maybe even more than that.
It's things like adding support for new pre compiles for
example. There's a number of different
cryptographic functions that frequently come up that
currently have to get implemented in Solidity and are
very expensive to do so. But if there's a native
implementation, then that should just kind of be baked into the
the node code and you should just be able to call it with a
pre compile. So we're, we're working on some
of those and they will either be included in mono mainnet or if
not right at mainnet, then at some point a little bit later
on. We're also looking at the
account abstraction space quite a bit and thinking about, well,
first of all, following along with the existing Eips that are
contemplating different ways to ultimately get to native account
abstraction. I think EIP 77 O2 is getting a
lot of traction. So this is the EIP that would
sort of allow any EOA to effectively become a smart
contract account as well by having a pointer in its code
slot to point to another smart contract, like another address
where code lives. So we're we're looking into
that. And again, it'll either be
included in mainnet or probably sometime shortly thereafter.
But yeah, at the end of the day, from a developer experience,
developers can expect a fully EVM equivalent experience so
that they don't have to change anything.
But in addition, our team is evaluating ways to make life
easier for developers. That's actually easier to
develop on Mon AD rather than on Etherium.
Cool. I'm curious on like a very
different topic. You know, there's a lot of
competition around at once and you know, building community and
sort of getting mind chair is not easy.
I think you guys have done a fantastic job there and it feels
like there's already a lot of like interest in Monad, people
building on monad. What have you guys done in that
front that has had the biggest impact?
Yeah. I think everything is, is very
synergistic in the sense that I think there's, there's a lot of
people in the the crypto space that are really passionate about
the ideals of the space and excited about seeing the success
of new, new decentralized apps and excited about trying new
things and giving feedback. And also that spend, you know,
frankly, like spend a lot of time on crypto Twitter everyday
and follow along with a lot of the storylines.
I think what our team has done well is just creating a
welcoming home for many people that share these common
interests. And especially during the, you
know, bear market of 2022-2023, just having a creating this
welcoming environment where everyone was kind of a little
bit down in the, the dumps from all the negative news and
sentiment and so on around crypto, but still very
passionate. And a lot of people sort of
ended up joining the Monarch community and making a ton of
friends and contributing in different ways.
Which then really has a, a flywheel effect of now we're at
the point where artists that are creating new art involving the,
the Mon animals which were created by members of the
community or like just leaning into all the memes and, and
jokes and fun, then have a massive audience for their art.
Which then is very just encouraging to them and gives
them more of a reason to create more art, Which then creates
more enjoyable experiences for everyone else.
Which then you know, it's, it's very, very positive some.
And then, you know, lastly, also very positive for builders who
were building a monad, because then they immediately get some
moral support from people who are cheering for them to be
successful and trying out the beta versions of their products
and giving the feedback and becoming community members.
And yeah, I just think that there is it, it's really just
about the fact that for various reasons the community is
attracted. A lot of people are very long
term oriented and care a lot about the space and have enjoyed
making friends and then getting to go to meetups around the
world to, to meet up with their friends that they've been
hanging out with a lot in person in real life.
One last anecdote that I'll mention is so around Devcon, we
hosted the Monet Madness pitch competition.
This is the second iteration of something that we're hoping will
become like very much a fixture of what we do, but it's it was a
competition for 25 teams to present in front of a panel of,
you know, really leading investors in the space.
We had people from Paradigm, Electric Capital, Pantera,
Animoca, IOSG, and then anyway, the those were the judges and
then a bunch of other investors were in attendance in the
audience, but we had anyway. So it was like these teams got
to go on a giant stage, pitch their their project, compete for
$500,000 worth of prizes, get the attention of judges so that
they could attract money in their next fundraise.
And then also got over 400 people to attend in person, 1000
people attending on the live stream.
And then kind of around this, we had over 150 people fly from
other countries, mostly in the Asia area, but we had people
traveling from as far away as as Greece and Turkey and so on all
the way flying to Thailand just to go attend the community meet
up and spend the week like hanging out with their friends
that they've met online. So yeah, I think in short,
there's just an incredible amount of energy and excitement
in the monad community. And then that has translated
into benefits for builders as well, which then makes the
ecosystem stronger, which then pulls more people and it
hopefully pulls a lot of people and that have never but known
anything about crypto in the past as well.
There may be final question. So the what are the timelines
here like? When do you expect mainnet to
launch? We're expecting Mainnet to
launch sometime early next year. No exact date at the very
moment, but the team is working really hard on this and I think
in in particular we're expecting to launch the test net
imminently in 2025. Cool.
Well, thank you so much Keoni. That was really great.
I really enjoyed getting into the details here.
And I feel like this is a lot of like very smart and interesting
and reasonable decisions that you guys have made that I think
can can end up in a in a really powerful blockchain.
So thank you so much for coming on.
It was a great pleasure. Yeah, thank you for having me,
Brian. It's really nice chatting with
you.