makemake's blog

Scaling troubles

8 min read

The blobs are here. The money is here. And so are the engineers and fundamentals. The users are gambling and the music is playing. It’s one hell of a time to build on Layer 2s.

Will the music stop playing, and do we need to change the tunes? 

Note: The following article contains critical levels of yapping and gloating about topics Im autistic about. It’s very opinionated. Proceed at your own discretion.

scaling troubles thumb

L2 scaling 101

Talking about layer 2s, most people ask “What’s the point?”

This is a fantastic question and it’s rarely answered properly.

The idea behind Layer 2s is to transact off-chain, and then verify everything on Layer 1 when you’re done and need a finalized settlement. This way, you only need to run a hopefully lightweight L1 node to verify all layer 2 transactions.

So far so good! But what does this look like in practice and what can we do with them? 

We should be very clear about the fact that there are multiple ways of doing Layer 2s. When you think of Layer 2, you’re most likely thinking of rollups. There are also state channels and plasma. But no one cares about plasma :‘(

Rollups

The whole idea behind rollups is to have a blockchain separate from the L1 which posts state changes to the L1 which gets verified to make sure it’s valid. This means that everything will work exactly as you expect, for better or for worse. 

Rollups are generally bound by how much data they can post and verify. Before blobs, data had to be posted to the execution layer, which was expensive. Now data is cheap-ish which means more tps! Yay!

Validia are a special type of rollup which do not use the blockchain used to verify transaction validity for DA. The idea is that you can use literally anything, including Amazon S3, and then just pull the data from it when necessary. This in theory gives you EVEN MORE scale.

State channels

State channels work completely differently. They are agreements between 2 parties about some piece of state. In the Lightning network, this state is expressed as bitcoin balances of each party. This gives us FREE PRIVATE UNLIMITED TRANSACTIONS PER SECOND. We don’t need external approval for our transaction. We only need to agree with our counterparty about the final state when settling. The holy grail of scalability.

BUT WAIIIIITTT MAKEMAKE! you said that this is an agreement between 2 parties! Isn’t this useless then?????

Yes, dear reader. If we were limited to only 1 other participant it would be. But we’re not! Consider the following:

as

In this graph, you and I have a channel. I also have a channel with Bob who has a channel with Jeff. In this hypothetical scenario, everyone could transact with everyone else!

If you wanted to send money to Jeff, you’d have to route it through me, then Bob, and finally arriving to Jeff.

If this seems convoluted, that’s because it is. State channels are a massive departure from how regular blockchains and most rollups work. 

Layer 2s are not silver bullets

If you look at how Layer 2s are used right now, it’s pretty much exactly the same as L1, but cheaper. And this isn’t bad! We need cheaper blockchains. There is no other way to get mass adoption.

We also carry the exact same problems from L1s. Remember, rollups are still blockchains. I’m mainly talking about state bloat. We shouldn’t look at how cheap transactions have gotten while we still have the same problem that prevented L1s from scaling. Doing so is burying our heads in the sand while ignoring the oncoming train and our ever-increasing AWS EC2 invoice.

Thankfully, it’s not all bad. We can deal with state bloat in multiple ways, but we should acknowledge that L2s and rollups are not the endgame.

On state

@notnotstorm on twitter posted a phenomenal thread about state bloat on Base, the optimism based L2 from coinbase.

xen state bloat graph

Here we see Xen, a random token barely used by anyone taking massive amounts of state. In this rat race to have the lowest short-term fees possible, we can probably say that they mispriced storage. Because xen is a result of short-term speculation, there’s a very good chance it will have no users interacting with it in the future. Thankfully the devs are doing something!

State expiry is coming to Ethereum, and will trickle down to rollups soon enough. This means that nodes will be able to prune state that is no longer accessed. If you happen to go into a 20-year coma fear not! State can be revived if you have a copy of it somewhere. All kinds of parties will have a vested interest in keeping this state in cold storage somewhere, so need not worry. State expiry will not make you lose your coins. It brings great benefits like lowering system requirements, removing spam, and keeping the active state smaller.

Even still, this is probably not enough to bring us visa-scale payments. 

Going full circle on scaling

We kind of already solved scaling with state channels back in 2018. I’ve laid the groundwork on how they work in the sections before but do also check the lightning network whitepaper for more context. What I mean by all this is that right now, we can easily achieve genuinely infinite transactions per second.

Truth be told, the base bitcoin blockchain is a bit shit. It’s why Ethereum was created after all. The current state of the LN reflects this. When it works it works great, when it doesn’t you feel like Sisyphus while trying to route your transactions. The main limitations are:

  • No shared state on Bitcoin.

  • No covenants (conditional output spending), and no multi-party channels.

  • The L1 is expensive to settle to.

This brings us back to rollups, which satisfy all of what’s missing from bitcoin for fully working state channels. We can essentially open up an infinite amount of channels and rebalance them whenever we need to. Infinite, free transactions per second. No state bloat or unreasonable network requirements are needed.

The LN and 2-counterparties-agreeing-on-balance systems are often referred to as payment channels. I am consciously avoiding using the term because with verbose blockchains like Ethereum, we can represent shared ownership of a piece of state within a channel. This means we can totally do stuff like DeFi over state channels. Imagine using a CEX by opening a channel with them and streaming money on demand. No need to worry about custody while reaping all the benefits of them. 

Even more interestingly, in our ever-fragmenting world of multi-rollup Ethereum, good bridges are more important than ever. Imagine if you could interact cross-rollup with little overhead and in a trust minimised way. With no third-party relayers. Imagine if we had the tech for that. That would be really cool. ha ha

State channels can be used to construct all kinds of different things and are not limited to financial use cases at all. Some examples of this are Sia and pokt which are pay-for-bandwidth systems. 

If you want to read more of me glazing state channels, check out this article I wrote on them.

WHY ARE WE NOT USING STATE CHANNELS??????

Well, we are. Just not on Ethereum. The lightning network is doing fine. Ark

is a protocol for state channels on BTC and it’s progressing well. It includes cool stuff that fixes pretty much every problem with the LN like not needing a direct sender <> receiver link. You won’t even have to open channels on chain. The only downside is that it needs covenants.

Ethereum on the other hand has been completely deprived of the beauty of state channels. Raiden was a thing in 2017 but it never took off, in large part due to the reference client being written in Python, which is notoriously hard to package and integrate.

Around the same time people started exploring plasma. Plasma functions similarly to an optimistic rollup, except you just post-state commitments. It has problems where users can’t do anything against malicious sequencers and mass exits are impossible. They’re (pretty much) strictly worse versions of optimistic rollups, which is why nobody talks about plasma anymore.

A call for action

Rollups are a phenomenal piece of tech. They give us the ability to bring smooth payment rails and uncensorable finance to everyone on the planet. They are clearly not the endgame, as their throughput is ultimately limited by DA and state growth. 

For state channels, neither DA nor state growth is relevant because everything happens off-chain. Rollups can be used for rebalancing and funding, and off-chain is where all the payments happen. We have infinite tx/s just sitting there. It would be a massive shame to let it go to waste.

We should not squander the potential of off-chain transactions. Instead of building the 20th op stack superchain chain bringing nothing new to the table, maybe it would be more worthwhile to build the next iteration of LN on existing Eth L2s.

Will we continue as we are until we fly too close to the sun? Will we embrace sustainability and build infra around it? Don’t forget anon, the right man in the wrong place can make all the difference in the world.

Onwards. For the next billion users.


Vukašin Gostović

Im makemake and I like it when people put blocks in a chain and turn that into a database. Love building useful programs and anything infra. I like reading about psychology, sociology, and philosophy. I have been making computers do stuff since i was ~11 years old. Rust is pretty cool. I'll mostly be writing about Ethereum and blockchains as that's what my time is mostly preocupied by. Feel free to reach out via my links below if you have any inquiries!