Polkadot's Asynchronous Backing Explained

In the previous post, I explained how Polkadot’s synchronous backing works. A new parablock can be produced only after its ancestor is included in the relay chain. This means that a parablock is produced every 12 seconds, as a parablock takes 6 seconds to be backed and an additional 6 seconds to be included. Each parablock has a relay parent. In synchronous backing, the relay parent is the latest relay block with information about the latest parablock ancestor. Remember the conveyor belt analogy for the parablock path from creation to inclusion? In synchronous backing, there can be only one parablock on the conveyor belt at a time.

Welcome Asynchronous Backing

Asynchronous backing allows for backing and inclusion events in the same relay chain block. The figure below shows how within 24 seconds (four relay chain blocks, denoted with R), synchronous backing backs (B) and includes (I) two parablocks (indicated with P). In the same time frame, asynchronous backing backs four parablocks and includes 3 of them. Backing and inclusion happen simultaneously within the same relay chain block.

Let’s dive a bit deeper into the conveyor belt analogy to understand the advantages that asynchronous backing brings to Polkadot. The figure below shows the 0-2 seconds timeframe, during which two parablocks, P1 and P2, are created and filled with data and placed on the conveyor belt for backing and inclusion. Note how R0 (relay chain block 0) is parent for both parablocks (e.g., R0 with P1-star and P2-star means R0 is the relay parent of both P1 and P2). On the parachain side, the unincluded segment acts as a local cache with the latest unincluded parablocks.

Within 6 seconds, P1 is backed into R1 while P3 is produced (with R1 as relay parent) and added to the conveyor belt. Note how P1-P3 are all not included and, therefore, are all part of the unincluded segment. Also, note how P3 is produced while P2 is not included yet. In asynchronous backing, a parablock can be produced using information from a relay parent (not necessarily the latest parent) augmented with information from the latest ancestors in the unincluded segment.

Within 12 seconds, P1 is included, and P2 is backed into R2 (relay parent of P4, created and added to the conveyor belt). Note how P1 is not part of the unincluded segment, which now contains P2-P4.

R1 can be used as a parent for P4. This means that the parachain can start filling up P4 already after 6 seconds when R1 is finalized on the relay chain. This because the relay parent does not have the be necessarily the latest relay block, allowing parachains to have more time to prepare parablocks (or to prepare parablocks in advance).

Asynchronous backing allows parachains to have up to 2 seconds to fill up parablocks (4x more time than in synchronous backing). In addition, parablocks are included in the relay chain every 6 seconds (2x faster than in synchronous backing). Thus, asynchronous backing will bring an 8x increase in throughput to Polkadot.

For more information about synchronous and asynchronous backing see the Polkadot Wiki.

0
filippoweb3Post author

🔥 Web3 explained from the non-developer's POV. 🚀 Helping Polkadot users explore the ecosystem with confidence. I post daily on socials. Opinions are mine.

8 comments

Loading replies...

🔥 Web3 explained from the non-developer's POV. 🚀 Helping Polkadot users explore the ecosystem with confidence. I post... Show More