Just like Tim Ferris likes to pun it, if you do not understand a concept, try to de-construct it into smaller pieces…let’s do just that!
Distributed computation demands consensus among a network of machines, making consensus protocols
essential to blockchains and nearly every large-scale industrial distributed system.
Over the past five decades, extensive research has produced only two major categories of consensus protocols.
The first, classical consensus protocols, depend on communication between all nodes but struggle to scale with increasing participants and handle membership changes. The second, Nakamoto consensus, uses proof-of-work mining and the longest-chain rule, offering robustness but at the cost of high confirmation delays, low throughput, and significant energy consumption.
The Snow family of consensus protocols, introduced by Avalanche, merges the best aspects of classical consensus with the strengths of Nakamoto consensus.
Utilizing a lightweight sampling mechanism, these protocols achieve low latency and high throughput while maintaining a permissionless nature, meaning they do not require agreement on the exact
membership of the system. This design allows them to scale effectively from thousands to millions of participating nodes.
Snow protocols work by repeatedly sampling the network. Each node randomly selects a small, fixed-sized subset of neighbors and changes its proposal if a quorum within that subset supports an alternative value. This sampling continues until the network reaches a consensus.
Everything begins with Slush, a pre-consensus protocol inspired by gossip-based mechanisms.
While Slush is not tolerant to Byzantine faults, it serves as a foundation for understanding the protocols that follow, namely Snowflake, Snowball, and Avalanche, which are BFT.
Unlike traditional consensus protocols that require querying all participants, Slush samples only a small slice of the network in each round.
Snowflake, the first BFT protocol in the Avalanche family, builds on Slush by introducing a single counter that tracks the strength of a node’s conviction in its current color.
Snowflake’s state is ephemeral, and it is a single-decree protocol.
Snowball extends Snowflake by introducing confidence counters, making it more robust for consensus on multiple decisions (multi-decree).
-> Transition to Avalanche
DAG Structure: Avalanche extends Snowball by organizing transactions in a DAG rather than a linear chain. In a DAG, vertices represent transactions, and edges represent dependencies between these transactions. This allows Avalanche to achieve consensus on multiple decisions concurrently and efficiently without the need for strict linear ordering.
Increased Parallelism: By using a DAG, Avalanche can process and confirm many transactions in parallel, improving scalability and throughput compared to Snowball.
Finality: While Snowball increases confidence in decisions over time, Avalanche introduces a mechanism to reach finality more quickly. Once a transaction is confirmed by the DAG, it becomes increasingly difficult for the network to revert or modify it, providing strong guarantees of consensus.
Avalanche combines the lightweight sampling and confidence mechanisms of Snowflake and Snowball with the scalability and efficiency of a DAG structure. This makes Avalanche robust, scalable, and capable of achieving consensus across a large network of participants while maintaining low latency and high throughput.
The introduction of Snowman represents an evolution in the Avalanche consensus protocol, specifically designed to provide a linear chain structure that complements the original DAG-based design.
Key Aspects of Snowman -> Linear Chain Structure:
Unlike the original Avalanche, which uses a Directed Acyclic Graph (DAG) to manage and confirm transactions in parallel, Snowman organizes transactions in a linear sequence. This makes it particularly well-suited for environments where linearity and determinism are required, such as in smart contracts or environments that demand clear and sequential transaction history.
Optimized for Blockchains:
Snowman was introduced to cater to the needs of blockchains that require a clear, ordered sequence of blocks . This linear structure ensures that blocks are processed and confirmed one after the other, maintaining the benefits of Avalanche’s consensus mechanism while providing a more traditional blockchain framework.
Snowman retains the high throughput, low latency, and Byzantine Fault Tolerance (BFT) characteristics of the Avalanche family, but within a linear chain structure. It benefits from the same sampling and consensus techniques that make Avalanche scalable and secure.
The Role of Snowman in the Avalanche Ecosystem:
Complement to the DAG: Snowman provides a complementary solution to the DAG structure of Avalanche, offering developers flexibility in choosing the appropriate structure depending on their application’s needs.
Network Participation: Like the original Avalanche protocol, Snowman can scale to a large number of participants while maintaining consensus security and efficiency.
In summary, Snowman is a linear, chain-based consensus protocol that builds upon the DAG-based Avalanche design, providing an option that better suits use cases requiring ordered transaction processing and determinism, like smart contracts. It represents the ongoing innovation and adaptation of Avalanche’s original design to meet the diverse needs of blockchain technology.
Some years after Mainnet launch , snowman++ was introduced by the Ava-Labs engineering team as a way to tackle network congestion, and addresses some of the limitations related to network congestion and improve the efficiency of transaction processing in the Snowman consensus protocol.
Enhanced Throughput: Snowman++ was designed to handle higher transaction throughput compared to its predecessor, Snowman. By optimizing the way blocks are processed and validated, Snowman++ can increase the number of transactions that can be confirmed per unit of time.
Efficient Block Propagation: One of the major improvements in Snowman++ is in block propagation. It introduces mechanisms to ensure that blocks are propagated through the network more efficiently, reducing the time required for all nodes to receive and validate new blocks.
Snowman++ aims to reduce the latency in block confirmation. By optimizing various aspects of the consensus process and block propagation, it ensures that blocks are confirmed more quickly, which helps in mitigating delays caused by network congestion.
Avalanche subnets : A subnet , re-branded during Summer 2024 as ‘custom Layer1’ is a dedicated blockchain with its own VM and its own set of validator nodes . This architecture, quite unique to Avalanche, allows for frictionless horizontal growth. For reference, the P-chain (aka Platform chain) is the primary network not a subnet. This P-chain is the chain on which you create other sub-networks- in that regard, the C-chain (evm-based) and the X-chain can be considered as ‘subnets’ of the primary.