John Adler | ✨⛽ Profile picture
Sep 24, 2020 16 tweets 4 min read Read on X
What Avalanche is Not, Episode 1

This is the first in a series of tweet threads that will discuss fundamental shortcomings or pitfalls of the Avalanche Consensus protocol, and its instantiation in Avalanche. On today’s episode: fees.
Now that the Avalanche mainnet has launched, “we have a secret plan that will fix this issue and we won’t tell you until mainnet” is no longer an excuse. So let’s dig in and find out which issues were actually unfixed, and more interestingly, unfixable.

You may have seen comparison tables like this one being circulated. But remember that when it comes to decentralized protocols, there’s always a catch. There is no free lunch and there are always trade-offs. We’ll find out in these threads what those are.

Image
First, some disambiguations:
- Avalanche Consensus (AC): a novel leaderless consensus protocol that uses random subsampling
- Avalanche: a DLT (haven’t heard that expression in a while!) platform launched by Ava Labs @avalancheavax, uses AC
- : the native coin of Avalanche
Avalanche consists of 3 chains operating under a single validator set: the P-Chain (platform) that manages the validator set, the X-Chain (transfers) that handles transfers with a DAG, and the C-Chain (contracts) that handles EVM contracts. Today we’ll examine the X-Chain.
The X-Chain uses AC and a DAG. This means anyone, at any time (leaderless, remember!) can add a vertex to the DAG. Each vertex consists of one (technically, zero, but that’s an implementation detail) or more transactions. Think of each vertex like a block.
Each vertex depends on its ancestors, but not on branches in the DAG that do not contain ancestors. This means that a partial order can be applied over the vertices (and thus, the transactions), rather than the usual total order provided by blockchains.
Now, if UTXOs are used, using a DAG in this way means that many vertices can be added to the DAG asynchronously, without having to wait for a leader to assemble one block at a time and propagate it across the whole network. Amazing! Where’s the catch?
Without a leader constrained by block _time_ (remember that Nakamoto and classical consensus protocols only emit one block every period of time in expectation), anyone could spam the DAG with so many transactions that it becomes intractable to validate them all.
How do we solve this spam problem? Optional transaction fees don’t work, since they’re optional. Required transaction fees also don’t work, because there’s no leader to send the fee to (+ side-channel refunds). **The only way to solve this is: required non-zero burned fees**.
So, how does the Avalanche X-Chain implement this? About 24 hours prior to the Avalanche mainnet launch, fees were publicly explicitly revealed in this PR:

github.com/ava-labs/avala…
The fee schedule is here. Huh, why is the fee fixed? It should at least be proportional to transaction size (but that’s an implementation detail). The real key here is that---unlike every single blockchain that isn’t an outright scam---*it’s not set by a block space market*. Why? Image
In a normal blockchain, fees are set by the market based on the transaction rate: the more transactions per unit time, the scarcer the block space and the more expensive each transaction becomes, and vice versa. In the X-Chain, fees are not related to transaction rate at all.
It turns out this wasn’t a willing choice made by the Avalanche developers, but rather it was _the only_ way to burn fees, which are required to prevent spam.
You can’t have a market based on the transaction rate without a reliable concept of time. The X-Chain operates asynchronously, so there’s no concept of time, and indeed there _cannot_ be a concept of time so long as the protocol allows anyone to add a vertex at any time.
There we have it. One of the (many) trade-offs Avalanche makes is having fixed fees, not by choice but by necessity. There are many such fundamental shortcomings of the protocol that are impossible to resolve, and I’ll be covering them in subsequent threads.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with John Adler | ✨⛽

John Adler | ✨⛽ Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @jadler0

Jun 23, 2022
SwaySwap, a blazingly fast dex for the Fuel devnet, is out. A short thread on how Fuel @fuellabs_ eliminates the need for token approvals.

This means fewer transactions to interact with a dapp, and no infinite-approvals i.e. more secure in case of hacks.

While ETH can be *pushed* with contract calls on Ethereum, ERC-20 tokens cannot. `approve` and `transferFrom` must be used (in two separate transactions) to first approve an amount of tokens for a receiving contract to *pull*, then for the receiving contract to actually pull.
This leads to poor UX and higher cost: 2 txs instead of 1.

To work around this, many apps use infinite approvals, where you approve the contract to use your entire token balance. Problem: if the contract is exploitable, *all* your tokens are gone.

Read 4 tweets
Sep 26, 2020
What Avalanche is Not, Episode 3

Last episode, we discussed rewards. On today's episode, the other half of the Nakamoto Incentive: penalties. We will show how Avalanche does not provide the accountable safety property that modern PoS protocols have.

The Nakamoto Incentive is both an incentive (rewards + fees) and a disincentive (penalties for both individuals and majorities). Both are necessary for permissionless consensus protocols to function without having to heavily rely on altruism.

Note that it is absolutely critical that incentives be in place. It is *not* sufficient to prove that a permissionless consensus protocol is live and safe under an honest majority. It must also be shown that the protocol incentivizes an honest majority.

Read 15 tweets
Sep 26, 2020
What Avalanche is Not, Episode 2

Last episode, we discussed fees and how it's impossible for Avalanche's X-Chain to have non-fixed fees without making fundamental trade-offs. On today's episode: rewards, and how they're similarly impossible.

Let's start by clearing up some confusion from last time. It's not “impossible, period” to have non-fixed fees in Avalanche; rather, it's impossible without making some additional trade-offs to fundamental assumptions or guarantees provided by AC.

The recurring thesis of these threads is that there's no silver bullet solution. Everything is simply a point in the trade-off space. And we'll explore the concessions Avalanche needs to make in order to provide the guarantees and performance it promises.

Read 21 tweets
Sep 13, 2020
Just published "Nakamoto Consensus Requires Social Coordination and Subjectivity"

TL;DR Nakamoto Consensus, contrary to popular belief, is not objective. It has a subjective component, just like the weak subjectivity assumption required in PoS protocols.

talk.lazyledger.io/t/nakamoto-con…
We've been told for years now by Bitcoin maximalists that PoS protocols require *fundamentally* stronger trust assumptions than PoW, in the form of weak subjectivity (asking a trusted third-party for a checkpoint if you've been offline for a while). We've been told a lie.
It's not that PoS protocols do not require social coordination; rather, it is that Nakamoto Consensus does require social coordination!

How so? It's all in the incentives.
Read 5 tweets
Aug 5, 2020
Optimistic rollups have taken Ethereum by storm as a promising avenue for exploring different execution models and enabling dynamic heterogeneous sharing on Ethereum today.

Here’s a thread on the precursors to ORU: scaling techniques that were so close, but didn’t quite make it.
I’ll be covering two techniques in this thread: the earlier “shadow chains” and the more recent “plasma rollup.” There are many more techniques (too many to enumerate) that share many common features with ORU, but none of these have the exact same properties as ORU.
First up, shadow chains, proposed in 2014. Are shadow chains *literally* optimistic rollups? Let’s find out! Here’s the original post on the Ethereum blog:

blog.ethereum.org/2014/09/17/sca…
Read 27 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(