mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-01 05:27:56 +00:00
add assumptions made by the Node-side (#1408)
* add assumptions made by the Node-side * Update roadmap/implementers-guide/src/node/README.md Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update roadmap/implementers-guide/src/node/README.md Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update roadmap/implementers-guide/src/node/README.md Co-authored-by: Bernhard Schuster <bernhard@ahoi.io> * more refinements Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
This commit is contained in:
committed by
GitHub
parent
6a9cc1869b
commit
f070202d4c
@@ -11,3 +11,14 @@ The architecture of the node-side behavior aims to embody the Rust principles of
|
||||
Many operations that need to be carried out involve the network, which is asynchronous. This asynchrony affects all core subsystems that rely on the network as well. The approach of hierarchical state machines is well-suited to this kind of environment.
|
||||
|
||||
We introduce a hierarchy of state machines consisting of an overseer supervising subsystems, where Subsystems can contain their own internal hierarchy of jobs. This is elaborated on in the next section on Subsystems.
|
||||
|
||||
## Assumptions
|
||||
|
||||
The Node-side code comes with a set of assumptions that we build upon. These assumptions encompass most of the fundamental blockchain functionality.
|
||||
|
||||
We assume the following constraints regarding provided basic functionality:
|
||||
* The underlying **consensus** algorithm, whether it is BABE or SASSAFRAS is implemented.
|
||||
* There is a **chain synchronization** protocol which will search for and download the longest available chains at all times.
|
||||
* The **state** of all blocks at the head of the chain is available. There may be **state pruning** such that state of the last `k` blocks behind the last finalized block are is available, as well as the state of all their descendents. This assumption implies that the state of all active leaves and their last `k` ancestors are all available. The underlying implementation is expected to support `k` of a few hundred blocks, but we reduce this to a very conservative `k=5` for our purposes.
|
||||
* There is an underlying **networking** framework which provides **peer discovery** services which will provide us with peers and will not create "loopback" connections to our own node. The number of peers we will have is assumed to be bounded at 1000.
|
||||
* There is a **transaction pool** and a **transaction propagation** mechanism which maintains a set of current transactions and distributes to connected peers. Current transactions are those which are not outdated relative to some "best" fork of the chain, which is part of the active heads, and have not been included in the best fork.
|
||||
|
||||
Reference in New Issue
Block a user