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
{{ message }}
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Copy file name to clipboardExpand all lines: roadmap/implementors-guide/README.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
@@ -3,7 +3,7 @@
3
3
The implementers' guide is compiled from several source files with [mdBook](https://github.com/rust-lang/mdBook). To view it live, locally, from the repo root:
Copy file name to clipboardExpand all lines: roadmap/implementors-guide/src/architecture.md
+25-38Lines changed: 25 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,25 +2,22 @@
2
2
3
3
Our Parachain Host includes a blockchain known as the relay-chain. A blockchain is a Directed Acyclic Graph (DAG) of state transitions, where every block can be considered to be the head of a linked-list (known as a "chain" or "fork") with a cumulative state which is determined by applying the state transition of each block in turn. All paths through the DAG terminate at the Genesis Block. In fact, the blockchain is a tree, since each block can have only one parent.
4
4
5
-
```text
6
-
+----------------+ +----------------+
7
-
| Block 4 | | Block 5 |
8
-
+----------------+ +----------------+
9
-
\ /
10
-
V V
11
-
+---------------+
12
-
| Block 3 |
13
-
+---------------+
14
-
|
15
-
V
16
-
+----------------+ +----------------+
17
-
| Block 1 | | Block 2 |
18
-
+----------------+ +----------------+
19
-
\ /
20
-
V V
21
-
+----------------+
22
-
| Genesis |
23
-
+----------------+
5
+
```dot process
6
+
digraph {
7
+
node [shape=box];
8
+
genesis [label = Genesis]
9
+
b1 [label = "Block 1"]
10
+
b2 [label = "Block 2"]
11
+
b3 [label = "Block 3"]
12
+
b4 [label = "Block 4"]
13
+
b5 [label = "Block 5"]
14
+
15
+
b5 -> b3
16
+
b4 -> b3
17
+
b3 -> b1
18
+
b2 -> genesis
19
+
b1 -> genesis
20
+
}
24
21
```
25
22
26
23
A blockchain network is comprised of nodes. These nodes each have a view of many different forks of a blockchain and must decide which forks to follow and what actions to take based on the forks of the chain that they are aware of.
@@ -34,26 +31,16 @@ The first category of questions will be addressed by the Runtime, which defines
34
31
35
32
The second category of questions addressed by Node-side behavior. Node-side behavior defines all activities that a node undertakes, given its view of the blockchain/block-DAG. Node-side behavior can take into account all or many of the forks of the blockchain, and only conditionally undertake certain activities based on which forks it is aware of, as well as the state of the head of those forks.
Copy file name to clipboardExpand all lines: roadmap/implementors-guide/src/parachains-overview.md
+35-50Lines changed: 35 additions & 50 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,61 +60,46 @@ Reiterating the lifecycle of a candidate:
60
60
61
61
It is also important to take note of the fact that the relay-chain is extended by BABE, which is a forkful algorithm. That means that different block authors can be chosen at the same time, and may not be building on the same block parent. Furthermore, the set of validators is not fixed, nor is the set of parachains. And even with the same set of validators and parachains, the validators' assignments to parachains is flexible. This means that the architecture proposed in the next chapters must deal with the variability and multiplicity of the network state.
62
62
63
-
```text
64
-
65
-
....... Validator Group 1 ..........
66
-
. .
67
-
. (Validator 4) .
68
-
. (Validator 1) (Validator 2) .
69
-
. (Validator 5) .
70
-
. .
71
-
..........Building on C ........... ........ Validator Group 2 ...........
vg2 [label =<<b>Validator Group 2</b><br/><br/><font point-size="10">(Validator 7)<br/>(Validator 3) (Validator 6)</font>>]
72
+
73
+
rcb -> rca
74
+
rcc -> rcb
75
+
76
+
vg1 -> rcc [label="Building on C" style=dashed arrowhead=none]
77
+
vg2 -> rcb [label="Building on B" style=dashed arrowhead=none]
78
+
}
86
79
```
87
80
88
81
In this example, group 1 has received block C while the others have not due to network asynchrony. Now, a validator from group 2 may be able to build another block on top of B, called C'. Assume that afterwards, some validators become aware of both C and C', while others remain only aware of one.
89
82
90
-
```text
91
-
....... Validator Group 1 .......... ........ Validator Group 2 ...........
vg1 [label =<<b>Validator Group 1</b><br/><br/><font point-size="10">(Validator 4) (Validator 1)</font>>]
91
+
vg2 [label =<<b>Validator Group 2</b><br/><br/><font point-size="10">(Validator 7) (Validator 6)</font>>]
92
+
vg3 [label =<<b>Validator Group 3</b><br/><br/><font point-size="10">(Validator 2) (Validator 3)<br/>(Validator 5)</font>>]
93
+
94
+
rcb -> rca
95
+
rcc -> rcb
96
+
rcc_prime -> rcb
97
+
98
+
vg1 -> rcc [style=dashed arrowhead=none]
99
+
vg2 -> rcc_prime [style=dashed arrowhead=none]
100
+
vg3 -> rcc_prime [style=dashed arrowhead=none]
101
+
vg3 -> rcc [style=dashed arrowhead=none]
102
+
}
118
103
```
119
104
120
105
Those validators that are aware of many competing heads must be aware of the work happening on each one. They may contribute to some or a full extent on both. It is possible that due to network asynchrony two forks may grow in parallel for some time, although in the absence of an adversarial network this is unlikely in the case where there are validators who are aware of both chain heads.
0 commit comments