Skip to content

Commit 695945e

Browse files
committed
move docs/ image files into images/ directory
1 parent b9f7887 commit 695945e

37 files changed

+29
-29
lines changed

CodingConventions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ Per convention, a vertex should throw any unexpected exceptions using the relate
111111

112112
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.**
113113

114-
![Error Handling](/docs/ErrorHandling.png)
114+
![Error Handling](/docs/images/ErrorHandling.png)
115115

116116
* For example, consider `storage.ErrNotFound` that could be returned by the storage lager, when querying a block by ID
117117
(method [`Headers.ByBlockID(flow.Identifier)`](https://github.com/onflow/flow-go/blob/a918616c7b541b772c254e7eaaae3573561e6c0a/storage/headers.go#L15-L18)).

DEVELOPMENT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ incl. migrations of the entire execution state to a new formats become reasonabl
4040
Additional context on HCU vs sporks can be found [here](https://developers.flow.com/networks/node-ops/node-operation/hcu#hcu-versus-spork).
4141

4242

43-
<img src='./docs/flow-go_branching-convention.png' width='350'>
43+
<img src='./docs/images/flow-go_branching-convention.png' width='350'>
4444

4545

4646

cmd/access/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,4 @@ This helps identify nodes in the system which are unreachable.
8888

8989
### Access node sequence diagram
9090

91-
![Access node sequence diagram](/docs/AccessNodeSequenceDiagram.png)
91+
![Access node sequence diagram](/docs/images/AccessNodeSequenceDiagram.png)

consensus/hotstuff/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -148,15 +148,15 @@ For primary section, we use a randomized, weight-proportional selection.
148148
HotStuff's core logic is broken down into multiple components.
149149
The figure below illustrates the dependencies of the core components and information flow between these components.
150150

151-
![](/docs/ComponentInteraction.png)
151+
![](/docs/images/ComponentInteraction.png)
152152
<!--- source: https://drive.google.com/file/d/1rZsYta0F9Uz5_HM84MlMmMbiR62YALX-/ -->
153153

154154
* `MessageHub` is responsible for relaying HotStuff messages. Incoming messages are relayed to the respective modules depending on their message type.
155155
Outgoing messages are relayed to the committee though the networking layer via epidemic gossip ('broadcast') or one-to-one communication ('unicast').
156156
* `compliance.Engine` is responsible for processing incoming blocks, caching if needed, validating, extending state and forwarding them to HotStuff for further processing.
157157
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`.
158158
* `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).
160160
The event handler is designed to be executed single-threaded.
161161
* `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.
162162
* `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.
190190

191191
We have translated the HotStuff protocol into the state machine shown below. The state machine is implemented in `EventHandler`.
192192

193-
![](/docs/StateMachine.png)
193+
![](/docs/images/StateMachine.png)
194194
<!--- source: https://drive.google.com/file/d/1la4jxyaEJJfip7NCWBM9YBTz6PK4-N9e/ -->
195195

196196

@@ -222,7 +222,7 @@ In contrast to HotStuff, Jolteon only allows a transition into view `V+1` after
222222
A central, non-trivial functionality of the PaceMaker is to _skip views_.
223223
Specifically, given a QC or TC with view `V`, the Pacemaker will skip ahead to view `V + 1` if `currentView ≤ V`.
224224

225-
![](/docs/PaceMaker.png)
225+
![](/docs/images/PaceMaker.png)
226226
<!--- source: https://drive.google.com/file/d/1la4jxyaEJJfip7NCWBM9YBTz6PK4-N9e/ -->
227227

228228

@@ -273,7 +273,7 @@ For completeness, we list the component implemented in each sub-folder below:
273273
The HotStuff state machine exposes some details about its internal progress as notification through the `hotstuff.Consumer`.
274274
The following figure depicts at which points notifications are emitted.
275275

276-
![](/docs/StateMachine_with_notifications.png)
276+
![](/docs/images/StateMachine_with_notifications.png)
277277
<!--- source: https://drive.google.com/file/d/1la4jxyaEJJfip7NCWBM9YBTz6PK4-N9e/ -->
278278

279279
We have implemented a telemetry system (`hotstuff.notifications.TelemetryConsumer`) which implements the `Consumer` interface.

consensus/hotstuff/cruisectl/README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ The desired idealized system behaviour would a constant view duration $\tau_0$ t
6161

6262
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).
6363

64-
<img src='https://github.com/onflow/flow-go/blob/master/docs/CruiseControl_BlockTimeController/PID_controller_for_block-rate-delay.png' width='680'>
64+
<img src='https://github.com/onflow/flow-go/blob/master/docs/images/CruiseControl_BlockTimeController/PID_controller_for_block-rate-delay.png' width='680'>
6565

6666

6767
After a disturbance, we want the controller to drive the system back to a state, where it can closely follow the ideal behaviour from there on.
@@ -72,21 +72,21 @@ After a disturbance, we want the controller to drive the system back to a state,
7272
- setting the differential term $K_d=0$, the controller responds as expected with damped oscillatory behaviour
7373
to a singular strong disturbance. Setting $K_d=3$ suppresses oscillations and the controller's performance improves as it responds more effectively.
7474

75-
<img src='https://github.com/onflow/flow-go/blob/master/docs/CruiseControl_BlockTimeController/EpochSimulation_029.png' width='900'>
75+
<img src='https://github.com/onflow/flow-go/blob/master/docs/images/CruiseControl_BlockTimeController/EpochSimulation_029.png' width='900'>
7676

77-
<img src='https://github.com/onflow/flow-go/blob/master/docs/CruiseControl_BlockTimeController/EpochSimulation_030.png' width='900'>
77+
<img src='https://github.com/onflow/flow-go/blob/master/docs/images/CruiseControl_BlockTimeController/EpochSimulation_030.png' width='900'>
7878

7979
- controller very quickly compensates for moderate disturbances and observational noise in a well-behaved system:
8080

81-
<img src='https://github.com/onflow/flow-go/blob/master/docs/CruiseControl_BlockTimeController/EpochSimulation_028.png' width='900'>
81+
<img src='https://github.com/onflow/flow-go/blob/master/docs/images/CruiseControl_BlockTimeController/EpochSimulation_028.png' width='900'>
8282

8383
- controller compensates massive anomaly (100s network partition) effectively:
8484

85-
<img src='https://github.com/onflow/flow-go/blob/master/docs/CruiseControl_BlockTimeController/EpochSimulation_000.png' width='900'>
85+
<img src='https://github.com/onflow/flow-go/blob/master/docs/images/CruiseControl_BlockTimeController/EpochSimulation_000.png' width='900'>
8686

8787
- controller effectively stabilizes system with continued larger disturbances (20% of offline consensus participants) and notable observational noise:
8888

89-
<img src='https://github.com/onflow/flow-go/blob/master/docs/CruiseControl_BlockTimeController/EpochSimulation_005-0.png' width='900'>
89+
<img src='https://github.com/onflow/flow-go/blob/master/docs/images/CruiseControl_BlockTimeController/EpochSimulation_005-0.png' width='900'>
9090

9191
**References:**
9292

@@ -120,7 +120,7 @@ Upon observing block `B` with view $v$, the controller updates its internal stat
120120

121121
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).
122122

123-
<img src='https://github.com/onflow/flow-go/blob/master/docs/CruiseControl_BlockTimeController/ViewDurationConvention.png' width='600'>
123+
<img src='https://github.com/onflow/flow-go/blob/master/docs/images/CruiseControl_BlockTimeController/ViewDurationConvention.png' width='600'>
124124

125125
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.
126126

@@ -151,7 +151,7 @@ and controller parameters (values derived from controller tuning):
151151

152152
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.
153153

154-
![](/docs/CruiseControl_BlockTimeController/ViewRate.png)
154+
![](/docs/images/CruiseControl_BlockTimeController/ViewRate.png)
155155

156156
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.
157157

File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)