Skip to content

Commit 2589d0e

Browse files
authored
Merge pull request #5044 from IntersectMBO/coot/network-spec-grammarly
network-spec: language
2 parents 73e48c8 + c309df6 commit 2589d0e

File tree

5 files changed

+626
-634
lines changed

5 files changed

+626
-634
lines changed

docs/network-spec/architecture.tex

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,29 +31,29 @@ \section{Protocols and node design}
3131
\label{node-diagram-concurrency}
3232
\end{figure}
3333

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
3535
represents threads that run one of the mini-protocols.
3636
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
3838
are represented by boxes in Figure~\ref{node-diagram-concurrency}.
3939
We heavily use
4040
\href{https://en.wikipedia.org/wiki/Software_transactional_memory}{Software
4141
transactional memory} (STM), which is a mechanism for safe and lock-free
4242
concurrent access to mutable state (see \cite{stm:harris2006}).
4343

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,
4747
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
4949
Chapter~\ref{chapter:multiplexer}.
5050

5151
\section{Congestion Control}
5252
A central design goal of the system is robust operation at high workloads. For
5353
example, it is a normal working condition of the networking design that
5454
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.
5757

5858
Point-to-point TCP bearers do not deal well with overloading. A TCP connection
5959
has a certain maximal bandwidth, i.e. a certain maximum load that it can handle
@@ -65,41 +65,41 @@ \section{Congestion Control}
6565
process data. In particular, a node may have to share its processing power
6666
with other processes that run on the same machine/operation system instance,
6767
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
6969
node can process. The design must operate appropriately in this situation and
7070
recover from transient conditions. In any condition, a node must not exceed
7171
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.
7373

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
7575
that it fails to meet performance goals. An example would be a protocol that
7676
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.
8080

8181

8282
\section{Real-time Constraints and Coordinated Universal Time}
8383
Ouroboros models the passage of physical time as an infinite sequence of time
8484
slots, i.e. contiguous, equal-length intervals of time, and assigns slot
8585
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
8787
transactions that are the basis for the new block, then it creates the new
8888
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
9191
the next leader will create a new block anyway).
9292

9393
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
9696
that the clock skews between the local clocks of the nodes is small with
9797
respect to the slot length.
9898

9999
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
101101
considered. For example, when a node time-stamps incoming blocks with its
102102
local clock time, it may encounter blocks that are created in the future with
103103
respect to the local clock of the node. The node must then decide whether this
104104
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

Comments
 (0)