From 883542f53951569a57fded1c938173d6766fbadb Mon Sep 17 00:00:00 2001 From: filippoweb3 Date: Thu, 11 May 2023 13:14:56 +0200 Subject: [PATCH 1/3] added async backing section --- docs/learn/learn-parachains-protocol.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/learn/learn-parachains-protocol.md b/docs/learn/learn-parachains-protocol.md index 044798488022..529d5157dc3e 100644 --- a/docs/learn/learn-parachains-protocol.md +++ b/docs/learn/learn-parachains-protocol.md @@ -31,9 +31,8 @@ and the The Parachains' Protocol aims to carry a parachain's block from authoring to inclusion through a process that can be carried out repeatedly and in parallel for each parachain connected to the Relay Chain. The protocol allows the network to be efficiently sharded among parachains while maintaining -strong security guarantees. The Availability and Validity (AnV) Protocol describes the -Parachain Protocol from the perspective of availability and validity. -on). +strong security guarantees. The Availability and Validity (AnV) Protocol describes the Parachain +Protocol from the perspective of availability and validity. on). ## Main Actors @@ -191,6 +190,8 @@ status, and it can only be considered a part of the parachain once proven availa this stage validators of the Relay Chain already received the [erasure coding information](#erasure-codes) of that specific parablock. +### Asynchronous Backing + ### Availability and Unavailability Phase During the availability and unavailability phases, the validators will participate to **Availability From 0c8eed4664fc9fb205b5b7f0ddba502002a7c031 Mon Sep 17 00:00:00 2001 From: Bader Youssef Date: Wed, 24 May 2023 17:34:18 -0400 Subject: [PATCH 2/3] add ab draft --- .gitignore | 1 + docs/learn/learn-parachains-protocol.md | 37 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/.gitignore b/.gitignore index 290b8ddf0080..daba94c81c92 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ pids # IDEs .idea +.vscode/settings.json # Directory for instrumented libs generated by jscoverage/JSCover lib-cov diff --git a/docs/learn/learn-parachains-protocol.md b/docs/learn/learn-parachains-protocol.md index 529d5157dc3e..a3f457fa3765 100644 --- a/docs/learn/learn-parachains-protocol.md +++ b/docs/learn/learn-parachains-protocol.md @@ -192,6 +192,43 @@ this stage validators of the Relay Chain already received the ### Asynchronous Backing +Asynchronous backing is a mechanism that introduces a _pipeline_ for parachain <-> relay chain +communication. This pipeline will allow collators to include more data in parachain blocks while +reducing latency (from 12 to 6 seconds). Where Ethereum is looking to increase blocksize as a means +for rollup solutions, asynchronous backing builds on the existing parachains protocol to provide a +way to further parallelize the processing of parachain blocks, increasing scalability and throughput +in a single go. + +It has three overarching goals: + +1. Decrease parablock validation time to 6 seconds from 12 seconds +2. Increase the amount of blockspace by a factor of 5-10, meaning more state changes allowed per + block. +3. Allow for parachain blocks (parablocks) to be re-proposed to the network in the event that they + aren't included initially on the first attempt. + +:::info + +One can think of asynchronous as the Polkadot equivalent to Ethereum's Danksharding. Where Ethereum +merely increases the amount of space per block for rollup related solutions, asynchronous backing +provides a way for collators to build blocks with the intent of publishing asynchronously them later +on. + +::: + +This combination of lower latency, higher storage per block, and logical pipeline spanning +Polkadot's networking, runtime, and collator aspects will allow for higher, more robust throughput. +The speed is doubled while block storage is significantly increased, allowing the network to become +increasingly powerful. + +A current limitation to scaling throughput in terms of speed is that parablock validation is tightly +coupled to the relay chain's progression. Parablocks are very much dependent on being in sync with +the relay chain, which reduces the amount of data that can be put into the block. Essentially, it's +rushing to be a part of the relay chain due to this synchrony. + +By making this process of backing para blocks more asynchronous, they get the chance to not only +include more data, but also "retry" at a later time to be included in the relay chain. + ### Availability and Unavailability Phase During the availability and unavailability phases, the validators will participate to **Availability From 04417daeb03899c8ce1cf6751bac89e6c87b6d8f Mon Sep 17 00:00:00 2001 From: Bader Youssef Date: Wed, 31 May 2023 20:03:38 -0400 Subject: [PATCH 3/3] clarified and added prelim image --- docs/assets/asyncbacking.png | Bin 0 -> 59200 bytes docs/learn/learn-parachains-protocol.md | 50 ++++++++++++++++-------- 2 files changed, 33 insertions(+), 17 deletions(-) create mode 100644 docs/assets/asyncbacking.png diff --git a/docs/assets/asyncbacking.png b/docs/assets/asyncbacking.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6a87820945bd06b1d66599dd4436e1da6a23e8 GIT binary patch literal 59200 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�>2em#p(SndgfEXI6L(F$o`E*Gt;b`+dHl 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 relay chain +Asynchronous backing is a mechanism that introduces a _pipeline_ for parachain **<->** relay chain communication. This pipeline will allow collators to include more data in parachain blocks while -reducing latency (from 12 to 6 seconds). Where Ethereum is looking to increase blocksize as a means -for rollup solutions, asynchronous backing builds on the existing parachains protocol to provide a -way to further parallelize the processing of parachain blocks, increasing scalability and throughput -in a single go. +reducing latency (from 12 to 6 seconds for parablock validation). It has three overarching goals: -1. Decrease parablock validation time to 6 seconds from 12 seconds -2. Increase the amount of blockspace by a factor of 5-10, meaning more state changes allowed per - block. +1. Decrease parablock validation time to **6 seconds** from **12 seconds** +2. Increase the amount of usable blockspace by a factor of 5-10, meaning more state changes allowed + per block. 3. Allow for parachain blocks (parablocks) to be re-proposed to the network in the event that they aren't included initially on the first attempt. -:::info +Asynchronous backing works by providing a form of **contextual execution**, which allows for more +time for parachain collators to fit more transactions and ready block candidates for backing and +inclusion. + +![async-backing](../assets/asyncbacking.png) + +_Notice that blocks can be prepared for longer, meaning more transactions per block. Due to the +asynchrony, these blocks can be prepared in anticipation of being included later, rather than +keeping in sync with the relay chain's progress 1-1_ -One can think of asynchronous as the Polkadot equivalent to Ethereum's Danksharding. Where Ethereum -merely increases the amount of space per block for rollup related solutions, asynchronous backing -provides a way for collators to build blocks with the intent of publishing asynchronously them later -on. +:::info How does this compare to Ethereum's Danksharding? + +One can think of asynchronous backing as the Polkadot equivalent to Ethereum's Danksharding. Where +Ethereum merely increases the amount of space per block for rollup related solutions, asynchronous +backing provides a way for collators to build blocks with the intent of publishing asynchronously +them later on. + +Where Ethereum is looking to increase the size of each block as a means for rollup solutions, +asynchronous backing builds on the existing parachains protocol to provide a way to further +parallelize the processing of parachain blocks, increasing scalability and throughput in a single +go. ::: This combination of lower latency, higher storage per block, and logical pipeline spanning Polkadot's networking, runtime, and collator aspects will allow for higher, more robust throughput. The speed is doubled while block storage is significantly increased, allowing the network to become -increasingly powerful. +increasingly more scalable and robust. + +#### What was wrong with the previous architecture? A current limitation to scaling throughput in terms of speed is that parablock validation is tightly -coupled to the relay chain's progression. Parablocks are very much dependent on being in sync with -the relay chain, which reduces the amount of data that can be put into the block. Essentially, it's -rushing to be a part of the relay chain due to this synchrony. +coupled to the relay chain's progression on a 1-1 basis. Parablocks are very much dependent on being +in sync with the relay chain, which reduces the amount of data that can be put into the block. +Essentially, it's rushing to be a part of the relay chain due to this synchrony. By making this process of backing para blocks more asynchronous, they get the chance to not only include more data, but also "retry" at a later time to be included in the relay chain. @@ -559,3 +573,5 @@ coexist for some time as there will be validators aware of both chain heads. order to progress the parachain. - [Availability and Validity](https://github.com/w3f/research/tree/85cd4adfccb7d435f21cd9fd249cd1b7f5167537/docs/papers/AnV) - Paper by the W3F Research Team that specifies the availability and validity protocol in detail. +- [Polkadot Roadmap Roundup](https://polkadot.network/blog/polkadot-roadmap-roundup) - Article by + Rob Habermeier, Polkadot founder that details the plans for Polkadot for 2023.