You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -777,11 +777,10 @@ The following configurations can be set by on-chain governance, dictating how ma
777
777
778
778
## Synchronous VS. Asynchronous Processing
779
779
780
-
*in progress*
781
780
782
-
In the synchronous scenario, both the collators and validators draw context from the relay parent of the prior parablock, which lives on the relay chain. This makes the Backing and Generation steps tightly coupled to the prior parablock completing the inclusion pipeline. As a result, one parablock can be processed *every other* relay block, and only `0.5` seconds are assigned for execution.
783
781
784
-
<div className="merm-16x9">
782
+
The Polkadot-parachain protocol originally operated in synchronous mode, where both collators and validators drew context exclusively from the relay parent of the prior parablock, which lives on the relay chain. This made the Backing and Generation steps tightly coupled to the prior parablock completing the entire inclusion pipeline. As a result, one parablock could only be processed every other relay block, with just 0.5 seconds assigned for execution.
783
+
785
784
```mermaid
786
785
---
787
786
displayMode: compact
@@ -790,20 +789,29 @@ In the synchronous scenario, both the collators and validators draw context from
@@ -812,6 +820,7 @@ In the synchronous scenario, both the collators and validators draw context from
812
820
barHeight: 70
813
821
gridLineStartPadding: 100
814
822
---
823
+
%%{init: {"gantt": {"barHeight": 70 }}}%%
815
824
gantt
816
825
dateFormat YYYY
817
826
axisFormat %y
@@ -826,7 +835,6 @@ gantt
826
835
section F2
827
836
SPACING : p1padTop, 1901, 1924
828
837
829
-
830
838
section P1
831
839
X : item1, 1900, 1901
832
840
Backing : item2, 1901, 1906
@@ -836,12 +844,15 @@ gantt
836
844
X : item1, 1912, 1913
837
845
Backing : item2, 1913, 1918
838
846
Inclusion : item3, 1918, 1924
847
+
848
+
839
849
```
840
-
</div>
841
850
842
-
In the asynchronous scenario, where both the collators and validators have access to [Unincluded Segments](/reference/parachains/consensus/inclusion-pipeline) as an additional context source, the Backing and Generation steps are no longer coupled to the prior block completing the full inclusion pipeline. Instead, the prior parablock only needs to complete the generation step and be added to the Unincluded Segments before the next parablock can begin the Backing and Generation steps.
843
851
844
-
This results in one parablock being processed *every* relay block, and allows for `2` seconds of execution.
852
+
853
+
The modern protocol now uses asynchronous backing, where both collators and validators have access to [Unincluded Segments](/reference/parachains/consensus/inclusion-pipeline) as an additional context source. The Backing and Generation steps are no longer coupled to the prior block completing the full inclusion pipeline. Instead, the prior parablock only needs to complete the generation step and be added to the Unincluded Segments before the next parablock can begin the Backing and Generation steps.
854
+
855
+
This results in one parablock being processed every relay block (instead of every other relay block), and allows for more time to execute during the Generation step (0.5s → 2s).
845
856
846
857
```mermaid
847
858
---
@@ -918,103 +929,6 @@ gantt
918
929
Backing : item2, 1920, 1930
919
930
```
920
931
921
-
Notice how `P2` starts before the backing stage of `P1`.
%% this next line doesn't recognise 'decade' or 'year', but will silently ignore
961
-
tickInterval '10year'
962
-
963
-
section F1
964
-
R1 : r, 1905, 1907
965
-
R2 : r, 1911, 1913
966
-
R3 : r, 1917, 1919
967
-
R4 : r, 1923, 1925
968
-
R5 : r, 1929, 1931
969
-
970
-
section F2
971
-
SPACING : p1padTop, 1901, 1930
972
-
973
-
section P1
974
-
X : item1, 1900, 1902
975
-
Backing : item2, 1902, 1912
976
-
Inclusion : item3, 1912, 1918
977
-
978
-
section P2
979
-
X : item1, 1906, 1908
980
-
Backing : item2, 1908, 1918
981
-
Inclusion : item3, 1918, 1924
982
-
983
-
section P3
984
-
X : item1, 1912, 1914
985
-
Backing : item2, 1914, 1924
986
-
Inclusion : item3, 1924, 1930
987
-
988
-
section F20
989
-
SPACING : p1padTop, 1901, 1930
990
-
991
-
section F21
992
-
R1 : r, 1905, 1907
993
-
R2 : r, 1911, 1913
994
-
R3 : r, 1917, 1919
995
-
R4 : r, 1923, 1925
996
-
R5 : r, 1929, 1931
997
-
998
-
section F22
999
-
SPACING : p1padTop, 1901, 1930
1000
-
1001
-
1002
-
section P4
1003
-
X : item1, 1900, 1902
1004
-
Backing : item2, 1902, 1912
1005
-
Inclusion : item3, 1912, 1918
1006
-
1007
-
section P5
1008
-
X : item1, 1906, 1908
1009
-
Backing : item2, 1908, 1918
1010
-
Inclusion : item3, 1918, 1924
1011
-
1012
-
section P6
1013
-
X : item1, 1912, 1914
1014
-
Backing : item2, 1914, 1924
1015
-
Inclusion : item3, 1924, 1930
1016
-
```
1017
-
1018
932
1019
933
---
1020
934
@@ -5373,7 +5287,7 @@ flowchart LR
5373
5287
5374
5288
**Generation**: Collators *execute* their blockchain's core functionality to generate a new block, producing a [proof-of-validity](https://paritytech.github.io/polkadot-sdk/book/types/availability.html?#proof-of-validity) (PoV), which is passed to validators selected for backing. The PoV is composed of:
5375
5289
5376
-
- The block candidate (list of state transitions)
5290
+
- A list of state transitions called the **block candidate**
5377
5291
- The values in the parachain's database that the block modifies
5378
5292
- The hashes of the unaffected points in the Merkle tree
@@ -17,11 +17,10 @@ The following configurations can be set by on-chain governance, dictating how ma
17
17
18
18
## Synchronous VS. Asynchronous Processing
19
19
20
-
*in progress*
21
20
22
-
In the synchronous scenario, both the collators and validators draw context from the relay parent of the prior parablock, which lives on the relay chain. This makes the Backing and Generation steps tightly coupled to the prior parablock completing the inclusion pipeline. As a result, one parablock can be processed *every other* relay block, and only `0.5` seconds are assigned for execution.
23
21
24
-
<divclassName="merm-16x9">
22
+
The Polkadot-parachain protocol originally operated in synchronous mode, where both collators and validators drew context exclusively from the relay parent of the prior parablock, which lives on the relay chain. This made the Backing and Generation steps tightly coupled to the prior parablock completing the entire inclusion pipeline. As a result, one parablock could only be processed every other relay block, with just 0.5 seconds assigned for execution.
23
+
25
24
```mermaid
26
25
---
27
26
displayMode: compact
@@ -30,20 +29,29 @@ In the synchronous scenario, both the collators and validators draw context from
@@ -52,6 +60,7 @@ In the synchronous scenario, both the collators and validators draw context from
52
60
barHeight: 70
53
61
gridLineStartPadding: 100
54
62
---
63
+
%%{init: {"gantt": {"barHeight": 70 }}}%%
55
64
gantt
56
65
dateFormat YYYY
57
66
axisFormat %y
@@ -66,7 +75,6 @@ gantt
66
75
section F2
67
76
SPACING : p1padTop, 1901, 1924
68
77
69
-
70
78
section P1
71
79
X : item1, 1900, 1901
72
80
Backing : item2, 1901, 1906
@@ -76,12 +84,15 @@ gantt
76
84
X : item1, 1912, 1913
77
85
Backing : item2, 1913, 1918
78
86
Inclusion : item3, 1918, 1924
87
+
88
+
79
89
```
80
-
</div>
81
90
82
-
In the asynchronous scenario, where both the collators and validators have access to [Unincluded Segments](/reference/parachains/consensus/inclusion-pipeline) as an additional context source, the Backing and Generation steps are no longer coupled to the prior block completing the full inclusion pipeline. Instead, the prior parablock only needs to complete the generation step and be added to the Unincluded Segments before the next parablock can begin the Backing and Generation steps.
83
91
84
-
This results in one parablock being processed *every* relay block, and allows for `2` seconds of execution.
92
+
93
+
The modern protocol now uses asynchronous backing, where both collators and validators have access to [Unincluded Segments](/reference/parachains/consensus/inclusion-pipeline) as an additional context source. The Backing and Generation steps are no longer coupled to the prior block completing the full inclusion pipeline. Instead, the prior parablock only needs to complete the generation step and be added to the Unincluded Segments before the next parablock can begin the Backing and Generation steps.
94
+
95
+
This results in one parablock being processed every relay block (instead of every other relay block), and allows for more time to execute during the Generation step (0.5s → 2s).
85
96
86
97
```mermaid
87
98
---
@@ -157,100 +168,3 @@ gantt
157
168
X : item1, 1918, 1920
158
169
Backing : item2, 1920, 1930
159
170
```
160
-
161
-
Notice how `P2` starts before the backing stage of `P1`.
Copy file name to clipboardExpand all lines: .ai/pages/reference-parachains-consensus-inclusion-pipeline.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,7 +40,7 @@ flowchart LR
40
40
41
41
**Generation**: Collators *execute* their blockchain's core functionality to generate a new block, producing a [proof-of-validity](https://paritytech.github.io/polkadot-sdk/book/types/availability.html?#proof-of-validity) (PoV), which is passed to validators selected for backing. The PoV is composed of:
42
42
43
-
-The block candidate (list of state transitions)
43
+
-A list of state transitions called the **block candidate**
44
44
- The values in the parachain's database that the block modifies
45
45
- The hashes of the unaffected points in the Merkle tree
0 commit comments