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
Copy file name to clipboardExpand all lines: CodingConventions.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
@@ -111,7 +111,7 @@ Per convention, a vertex should throw any unexpected exceptions using the relate
111
111
112
112
3.**Whether a particular error is benign or an exception depends on the caller's context. Errors _cannot_ be categorized as benign or exception based on their type alone.**
113
113
114
-

114
+

115
115
116
116
* For example, consider `storage.ErrNotFound` that could be returned by the storage lager, when querying a block by ID
*`MessageHub` is responsible for relaying HotStuff messages. Incoming messages are relayed to the respective modules depending on their message type.
155
155
Outgoing messages are relayed to the committee though the networking layer via epidemic gossip ('broadcast') or one-to-one communication ('unicast').
156
156
*`compliance.Engine` is responsible for processing incoming blocks, caching if needed, validating, extending state and forwarding them to HotStuff for further processing.
157
157
Note: The embedded `compliance.Core` component is responsible for business logic and maintaining state; `compliance.Engine` schedules work and manages worker threads for the `Core`.
158
158
*`EventLoop` buffers all incoming events. It manages a single worker routine executing the EventHandler`'s logic.
159
-
*`EventHandler` orchestrates all HotStuff components and implements the [HotStuff's state machine](/docs/StateMachine.png).
159
+
*`EventHandler` orchestrates all HotStuff components and implements the [HotStuff's state machine](/docs/images/StateMachine.png).
160
160
The event handler is designed to be executed single-threaded.
161
161
*`SafetyRules` tracks the latest vote, the latest timeout and determines whether to vote for a block and if it's safe to timeout current round.
162
162
*`Pacemaker` implements Jolteon's PaceMaker. It manages and updates a replica's local view and synchronizes it with other replicas.
@@ -190,7 +190,7 @@ The event handler is designed to be executed single-threaded.
190
190
191
191
We have translated the HotStuff protocol into the state machine shown below. The state machine is implemented in `EventHandler`.
Copy file name to clipboardExpand all lines: consensus/hotstuff/cruisectl/README.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,7 +61,7 @@ The desired idealized system behaviour would a constant view duration $\tau_0$ t
61
61
62
62
However, in the real-world system we have disturbances (varying message relay times, slow or offline nodes, etc) and measurement uncertainty (node can only observe its local view times, but not the committee’s collective swarm behaviour).
@@ -120,7 +120,7 @@ Upon observing block `B` with view $v$, the controller updates its internal stat
120
120
121
121
Note the '+1' term in the computation of the remaining views $k[v] := F[v] +1 - v$ . This is related to our convention that the epoch begins (happy path) when observing the first block of the epoch. Only by observing this block, the nodes transition to the first view of the epoch. Up to that point, the consensus replicas remain in the last view of the previous epoch, in the state of `having processed the last block of the old epoch and voted for it` (happy path). Replicas remain in this state until they see a confirmation of the view (either QC or TC for the last view of the previous epoch).
In accordance with this convention, observing the proposal for the last view of an epoch, marks the start of the last view. By observing the proposal, nodes enter the last view, verify the block, vote for it, the primary aggregates the votes, constructs the child (for first view of new epoch). The last view of the epoch ends, when the child proposal is published.
126
126
@@ -151,7 +151,7 @@ and controller parameters (values derived from controller tuning):
151
151
152
152
Each consensus participant observes the error $e[v]$ based on its local view evolution. As the following figure illustrates, the view duration is highly variable on small time scales.
Therefore, we expect $e[v]$ to be very variable. Furthermore, note that a node uses its local view transition times as an estimator for the collective behaviour of the entire committee. Therefore, there is also observational noise obfuscating the underlying collective behaviour. Hence, we expect notable noise.
0 commit comments