It’s an interesting time to be building a Web3 protocol. There are an abundance of options to choose from across the entire stack, each with their own set of tradeoffs. Whereas before everyone had to essentially ‘roll their own chain’, the growing shift towards blockchain modularity has now opened up the design space for building protocols quite drastically, where many core aspects across the stack can be outsourced.
From optimistic and zk rollups, validiums, app chains and side chains, sovereign chains/rollups, shared security and borrowed security, data availability/publishing, sequencing and proving, etc. There are a lot of factors to consider.
And while the optionality and customizability is great, it also gives you a lot more to consider. Properly evaluating each option and the nuances between them, especially as they relate to your specific use case/considerations, can be a huge undertaking.
We figured it might be helpful to others to share a bit about our exploration and outcomes regarding that process and deciding on an initial architecture for Fleek Network. The TLDR is that:
- For EVM compatible chains, being an L2 makes a ton of sense
- For non EVM chains, the benefits of being an L2 (vs. app chain/sidechain) aren’t as clear currently, especially when considering the cost difference
- Proving consensus (sidechains, zk bridges, IBC, etc.) could be a more cost effective approach for non-evm chains rather than proving all your execution (L2’s)
- Using EigenLayer to rent economic security from ETH coupled with a sidechain (proving consensus) could potentially give you the best of both worlds (lower cost + better economic security), but more research is needed.
What even is an Ethereum L2?
There are a lot of great technical definitions out there that you can read. But there is also a bit of ambiguity currently when it comes to defining what constitutes an Ethereum L2, and who does/doesn’t qualify as one. But if you ask us, the simplest layman definition we have come to use for an Ethereum L2 is:
Ethereum has the final say on the state of your rollup/blockchain, in a way that users don’t need to trust the rollup/blockchain operator.
Why did Fleek Network want to be an Ethereum L2?
Mainly to borrow the security of ethereum rather than try to build our own. And the reason we want to do that is because in most cases it’s much cheaper and easier to rent economic security rather than buy/build it.
That’s the whole alt-L1 vs L2 narrative/argument. For an alt-L1, they need to stand up their own economic security and pay out high inflation rewards in their native token in order to sustain the proper security parameters that keep their decentralized system safe and functioning properly. Or in other words, the value of their token has a huge impact on the safety, security, and sustainability of their service.
But if you could just rent that from Ethereum, you could get the same or better economic security for much cheaper, and you could build much faster compared to trying to do it all yourself. Plus there are additional positive network effects to being an L2, like lower barrier to entry for existing Ethereum users to try your product.
So should every new protocol be an Ethereum L2?
No. What we’ve learned is that being an L2 makes a ton of sense for EVM chains. But not necessarily for non-EVM chains, at least not today. That is because in order to be an L2 you need to rollup all your execution onto Ethereum, which can be expensive.
For EVM chains it makes sense because just by economies of scale they are able to reduce gas costs by bundling a bunch of EVM transactions together and submit them to the L1 in batches rather than one by one. But for a network like Fleek Network that is non-EVM (FN core doesn’t use a VM), it would be prohibitively expensive to rollup all our execution data to Ethereum without any meaningful added benefits to justify the cost.
That is because we wouldn’t be rolling up EVM call data, so the benefit of posting it to Ethereum would be muted by the fact that Ethereum couldn’t really do anything with the data.
What would it cost Fleek Network to be an Ethereum L2 vs a Sidechain?
Being an L2 would make Fleek Network significantly more expensive to operate. Because as mentioned to be an L2 you need to roll up all your execution data onto Ethereum, which is the biggest cost associated with L2 rollups. Whereas if Fleek Network decides to just be a sidechain, then we can avoid that cost of posting all execution data to Ethereum, and instead just carry out a proof of execution within our network, only posting proof of consensus when someone bridges out.
So as long as someone is comfortable with Fleek Network consensus and how it works, then you would have similar security guarantees as an L2. The guarantees wouldn’t be as good as a pure L2, but they are still good, and the cost difference makes it a worthwhile tradeoff for some use cases:
Cost per Interaction as an L2 (as of today)
(Very rough math)
1 Fleek Network Delivery Acknowledgement SNARK: 116 bytes Ethereum Call Data Cost: 68gas per byte Current Gas Cost: 50 gwei (Aug 2, 2023) = 370,736 gas or 0.0004 Eth or:
~$0.73 per interaction
And that cost per interaction doesn’t include the actual cost of the work performed (ex. CPU, Bandwidth, etc.). So being forced to post all that data on Ethereum would be prohibitively expensive.
Yes, with 4844 and EigenDA those costs could be reduced, but it still would be more than we would like for a use case where every penny matters (web services pricing).
Cost per Interaction as a Sidechain
~$0.0001 per interaction
Basically the little cost we do have as a sidechain is an indirect cost passed off to the users of Fleek Network when they deposit/withdraw tokens (FLK, stablecoins) to stake or pay for services on the network or claim fees for work performed.
Essentially the cost is the gas they pay in those transactions. And since deposits/withdrawals happen a lot less frequently than interactions on the network, the cost is shared across a large number of interactions, and by using L2’s we can reduce that cost even further.
Why does the difference in cost between L2’s and Sidechains matter so much for Fleek Network?
- Since we don’t use the EVM, we don’t get the same benefits that an EVM compatible chain gets for rolling up execution data to Ethereum (ex. Ethereum can’t prove the correctness of non EVM state). So we’d basically just be incurring additional costs to the network and impacting node profitability for no additional benefits.
- EVM compatible L2’s are all competing against Ethereum (and other L2) costs, and are therefore a bit less price sensitive because everything is relative to Ethereum costs. Fleek Network is competing against Web2 cloud platform prices where every penny matters, so we must be able to justify every cost the network incurs.
Are there other benefits for Fleek Network not being an L2?
In addition to the cost benefits, there are other benefits such as:
- Instant finality (instead of needing to wait for Ethereum block times to finalize transactions on Fleek Network)
- Higher throughput (by being able to leverage our own Narwhal & Bullshark consensus)
- Less friction (no gas costs need to be passed along to clients/users)
- Better performance (not needing to rollup execution keeps the network/nodes leaner)
- Don’t need a sequencer (since we don't need to roll up our execution data)
So Fleek Network isn’t an L2. Is it a side chain then?
Yes technically it’s a side chain, based on the correct definition of an L2. What this means is we have our own network of nodes that come to consensus (Narwhal & Bullshark), which allows us to have the throughput, finality, and costs we need for an Edge Network. But we also have plans for things that make us more than just a sidechain.
For example we are evaluating using EigenLayer to rent economic security from Ethereum to achieve the same goals that made us want to be an L2 in the first place, which is that “in most cases it’s much cheaper and easier to rent economic security rather than buy/build it”. That basically gives us the benefits of having our own consensus (instant finality, higher throughput, etc.), but still enjoying most of the benefits that L2’s get from renting economic security from ETH.
The difference being we get the benefits via EigenLayer re-staking and therefore don’t need to post our call data to Ethereum so we can keep costs low.
So Ethereum Sidechain + EigenLayer = L2?
Not exactly. It’s more like an in between. But it definitely gets you pretty close to the qualifications, benefits, and security qualities of a pure L2, but with a lot less constraints (cost, throughput, finality, etc.).
We aren’t quite sure what this setup is called, but I’m sure the Ethereum/EigenLayer communities will come up with something cool. In our opinion this setup could give you great balance between an L2 and a sidechain.
Are you worried that this EigenLayer setup will negatively impact native tokens?
Not really. Because besides the tokens actually trying to be money (ex. BTC, ETH), the value of most of these utility tokens shouldn’t be based on their money-ness. It should be derived from the cash flows of operating/performing work within the network, much like taxi medallions. And so borrowing economic security from ETH via EigenLayer shouldn’t negatively impact that analysis.
If anything, it could potentially help drive usage/adoption to new protocols/networks using this setup because they will have better safety/security characteristics and token-economics vs. alt-L1’s who need to entirely role their own economic security, which is typically entirely based on the value of their own native token.
As we continue to develop the network and take on decisions such as these where it’s not always so black and white, we will openly share our decision-making and thought process. This way if we make a mistake in our analysis hopefully someone will notice and help us correct it ahead of time.
So we invite anyone to reach out if this blog sparked any thoughts, questions, suggestions or criticisms. We’re always happy to jam on this topic and are very open to feedback/being corrected.
Fleek Network team ⚡