@@ -31,29 +31,29 @@ \section{Protocols and node design}
31
31
\label {node-diagram-concurrency }
32
32
\end {figure }
33
33
34
- Figure~\ref {node-diagram-concurrency } illustrates design of a node. Circles
34
+ Figure~\ref {node-diagram-concurrency } illustrates the design of a node. Circles
35
35
represents threads that run one of the mini-protocols.
36
36
Each mini-protocols communicate with a remote node over the network.
37
- Threads communicate by means of a shared mutable variables, which
37
+ Threads communicate by means of shared mutable variables, which
38
38
are represented by boxes in Figure~\ref {node-diagram-concurrency }.
39
39
We heavily use
40
40
\href {https://en.wikipedia.org/wiki/Software_transactional_memory}{Software
41
41
transactional memory} (STM), which is a mechanism for safe and lock-free
42
42
concurrent access to mutable state (see \cite {stm:harris2006 }).
43
43
44
- The ouroboros-network supports multiplexing mini-protocols, which allows to run
45
- node-to-node or node-to-client protocol on a single bearer, e.g. a TCP
46
- connection, other bearers are also supported. This means that chain-sync,
44
+ The ouroboros-network supports multiplexing mini-protocols, which allows us to run
45
+ the node-to-node or the node-to-client protocol on a single bearer, e.g. a TCP
46
+ connection; other bearers are also supported. This means that chain-sync,
47
47
block-fetch and tx-submission mini-protocols will share a single TCP
48
- connection. The multiplexer, its framing is described in
48
+ connection. The multiplexer and its framing are described in
49
49
Chapter~\ref {chapter:multiplexer }.
50
50
51
51
\section {Congestion Control }
52
52
A central design goal of the system is robust operation at high workloads. For
53
53
example, it is a normal working condition of the networking design that
54
54
transactions arrive at a higher rate than the number that can be included in
55
- blockchain. An increase of the rate at which transactions are submitted must
56
- not cause a decrease of the block chain quality.
55
+ blockchain. An increase in the rate at which transactions are submitted must
56
+ not cause a decrease in the blockchain quality.
57
57
58
58
Point-to-point TCP bearers do not deal well with overloading. A TCP connection
59
59
has a certain maximal bandwidth, i.e. a certain maximum load that it can handle
@@ -65,41 +65,41 @@ \section{Congestion Control}
65
65
process data. In particular, a node may have to share its processing power
66
66
with other processes that run on the same machine/operation system instance,
67
67
which means that a node may get slowed down for some reason, and the system may
68
- get in a situation where there is more data available from the network than the
68
+ get into a situation where there is more data available from the network than the
69
69
node can process. The design must operate appropriately in this situation and
70
70
recover from transient conditions. In any condition, a node must not exceed
71
71
its memory limits, that is there must be defined limits, breaches of which
72
- being treated like protocol violations.
72
+ are treated like protocol violations.
73
73
74
- Of course it makes no sense if the system design is robust, but so defensive
74
+ Of course, it makes no sense if the system design is robust but so defensive
75
75
that it fails to meet performance goals. An example would be a protocol that
76
76
never transmits a message unless it has received an explicit ACK for the
77
- previous message. This approach might avoid overloading the network, but would
78
- waste most of the potential bandwidth. To avoid such performance problems, our
79
- implementation is heavily using protocol pipelining.
77
+ previous message. This approach might avoid overloading the network but would
78
+ waste most of the potential bandwidth. To avoid such performance problems our
79
+ implementation relies upon protocol pipelining.
80
80
81
81
82
82
\section {Real-time Constraints and Coordinated Universal Time }
83
83
Ouroboros models the passage of physical time as an infinite sequence of time
84
84
slots, i.e. contiguous, equal-length intervals of time, and assigns slot
85
85
leaders (nodes that are eligible to create a new block) to those time slots.
86
- At the beginning of a time slot, the slot leader selects the block chain and
86
+ At the beginning of a time slot, the slot leader selects the blockchain and
87
87
transactions that are the basis for the new block, then it creates the new
88
88
block and sends the new block to its peers. When the new block reaches the
89
- next block leader before the beginning of next time slot, the next block leader
90
- can extend the block chain upon this block (if the block did not arrive on time
89
+ next block leader before the beginning of the next time slot, the next block leader
90
+ can extend the blockchain upon this block (if the block did not arrive on time
91
91
the next leader will create a new block anyway).
92
92
93
93
There are some trade-offs when choosing the slot time that is used for the
94
- protocol but basically the slot length should be long enough such that a new
95
- block has a good chance to reach the next slot leader in time. It is assumed
94
+ protocol, but basically, the slot length should be long enough such that a new
95
+ block has a good chance of reaching the next slot leader in time. It is assumed
96
96
that the clock skews between the local clocks of the nodes is small with
97
97
respect to the slot length.
98
98
99
99
However, no matter how accurate the local clocks of the nodes are with respect
100
- to the time slots the effects of a possible clock skew must still be carefully
100
+ to the time slots, the effects of a possible clock skew must still be carefully
101
101
considered. For example, when a node time-stamps incoming blocks with its
102
102
local clock time, it may encounter blocks that are created in the future with
103
103
respect to the local clock of the node. The node must then decide whether this
104
104
is because of a clock skew or whether the node considers this as adversarial
105
- behavior of another node.
105
+ behaviour of another node.
0 commit comments