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
Syncing -- "Honest Availability Assumption\nis no longer satisfied" --> PreSyncing
21
+
end
17
22
18
-
OnlyBootstrap -- "no peers claim to have\nsubsequent headers,\nand its selection is ≥\nthe best header" --> CaughtUp
19
-
CaughtUp -- "vol tip became older than X" --> OnlyBootstrap
23
+
CaughtUp[CaughtUp]
24
+
Syncing -- "no peers claim to have\nsubsequent headers,\nand its selection is ≥\nthe best header" --> CaughtUp
25
+
CaughtUp -- "vol tip became older than X" ----> PreSyncing
20
26
21
27
StartUp[[Node start-up]]
22
28
StartUp -- "node was most recently in CaughtUp\nand vol tip is younger than X" --> CaughtUp
23
-
StartUp -- "otherwise" --> OnlyBootstrap
29
+
StartUp -- "otherwise" --> PreSyncing
24
30
```
25
31
26
-
-`OnlyBootstrap` state - All upstream peers must reside in a centralized set of trusted _bootstrap peers_.
32
+
-`OnlyBootstrap` - All upstream peers must be trusted.
33
+
34
+
In the context of bootstrap peers, as all peers are trusted, the _Honest Availability Assumption_ is satisfied in the following cases:
35
+
36
+
- The node is configured to connect to bootstrap peers, and it has established a connection to a bootstrap peer.
37
+
38
+
- The node is not configured to connect to bootstrap peers. This is the case for eg block producers and hidden relays. They will only be connected to trusted local root peers (eg the relays for a block-producing node).
27
39
28
40
-`CaughtUp` state - The peers are chosen according to the P2P design, including the _ledger peers_ etc.
29
41
30
42
**Desideratum 2.**
31
43
In particular, the transitions should happen promptly.
32
44
33
-
-`CaughtUp -> OnlyBootstrap` should be prompt in order to minimize the duration that the node is exposed to untrusted peers (aka non-bootstrap peers) while its stale volatile tip is making it vulnerable.
45
+
-`CaughtUp -> PreSyncing` should be prompt in order to minimize the duration that the node is exposed to untrusted peers (aka non-bootstrap peers) while its stale volatile tip is making it vulnerable.
34
46
Delays here would directly threaten the security of the node.
35
47
36
-
-`OnlyBootstrap -> CaughtUp` should be prompt so that the centralized, relatively-few bootstrap peers are relieved of load as soon as possible.
48
+
-`Syncing -> CaughtUp` should be prompt so that the centralized, relatively-few bootstrap peers are relieved of load as soon as possible.
37
49
Delays here would not directly threaten the security of the node.
38
50
However, wasting the centralized resources would threaten the ability of nodes to join the net, ie the availability of the whole net.
39
51
Determining the exact load constraints for the bootstrap peers is not yet finalized.
40
52
53
+
-`PreSyncing -> Syncing` should be prompt to allow the node to conclude that is is caught up as a follow-up.
54
+
55
+
-`Syncing -> PreSyncing` should be prompt to prevent the node from concluding that it is caught up while it is not actually connected to a bootstrap peers.
56
+
41
57
**Desideratum 3.**
42
58
The node should not return to `OnlyBootstrap` every time it restarts/briefly loses network/etc.
43
59
Such unnecessary connections would also put unnecessary load on the centralized, relatively-few bootstrap peers.
@@ -59,11 +75,11 @@ This is the point of the "Node start-up" pseudo state in the diagram above.
59
75
60
76
As the volatile tip age approaches X, the Consensus Layer could forewarn the Diffusion Layer, eg "it seems like the transition back to OnlyBootstrap will be necessary soon; please prepare", if that would be helpful.
61
77
62
-
- For similar reasons, the Diffusion Layer should also manage the disconections from all peers upon the `OnlyBootstrap -> CaughtUp` transition.
78
+
- For similar reasons, the Diffusion Layer should also manage the disconections from all (bootstrap) peers upon the `OnlyBootstrap -> CaughtUp` transition.
63
79
64
80
## Anticipated Interface
65
81
66
-
See [IntersectMBO/ouroboros-network#4555](https://github.com/IntersectMBO/ouroboros-network/pull/4555) for the definition/implementation of this interface on the Network side.
82
+
See [IntersectMBO/ouroboros-network#4555](https://github.com/IntersectMBO/ouroboros-network/pull/4555)and [IntersectMBO/ouroboros-network#4846](https://github.com/IntersectMBO/ouroboros-network/pull/4846)for the definition/implementation of this interface on the Network side.
67
83
68
84
- The Diffusion Layer should monitor a `TVar State` (maybe via a `STM State` action).
69
85
The Consensus Layer will update that state promptly.
@@ -75,6 +91,12 @@ See [IntersectMBO/ouroboros-network#4555](https://github.com/IntersectMBO/ourobo
0 commit comments