propose architecture change for fullnode
This commit is contained in:
parent
7a0e897960
commit
4094e62ed3
|
@ -0,0 +1,30 @@
|
|||
.----------------------------------.
|
||||
| Fullnode |
|
||||
| |
|
||||
.--------. | .------------------. |
|
||||
| |---->| | |
|
||||
| Client | | | JSON RPC Service | |
|
||||
| |<----| | |
|
||||
`----+---` | `------------------` |
|
||||
| | ^ |
|
||||
| | | .----------------. | .------------------.
|
||||
| | | | Gossip Service |<------>| Validators |
|
||||
| | | `----------------` | | |
|
||||
| | | ^ | | |
|
||||
| | | | | | .------------. |
|
||||
| | .--+---. .--+---. .---------. | | | | |
|
||||
| | | Bank |<-|Replay| | Peer TX |<-----+ Upstream | |
|
||||
| | | Forks| |Stage | | Receiver| | | | Validators | |
|
||||
| | `------` `------` `-+-------` | | | | |
|
||||
| | ^ ^ | | | `------------` |
|
||||
| | | | v | | |
|
||||
| | | .-+-------. | | |
|
||||
| | | |Blocktree| | | |
|
||||
| | | `---------` | | .------------. |
|
||||
| | | ^ | | | | |
|
||||
| | | | | | | Downstream | |
|
||||
| | .--+--. .-------+---. | | | Validators | |
|
||||
`-------->| TPU +-->| Broadcast +------------->| | |
|
||||
| `-----` | Service | | | `------------` |
|
||||
| `-----------` | `------------------`
|
||||
`----------------------------------`
|
|
@ -1,4 +1,4 @@
|
|||
.---------------------------------.
|
||||
.---------------------------.
|
||||
| Fullnode |
|
||||
| |
|
||||
.--------. | .------------------. |
|
||||
|
@ -6,25 +6,22 @@
|
|||
| Client | | | JSON RPC Service | |
|
||||
| |<----| | |
|
||||
`----+---` | `------------------` |
|
||||
| | ^ |
|
||||
| | | .----------------. | .------------------.
|
||||
| | | | Gossip Service |<------>| Validators |
|
||||
| | | `----------------` | | |
|
||||
| | | | | |
|
||||
| | ^ | .------------------.
|
||||
| | | .----------------. | | Validators |
|
||||
| | | | Gossip Service +----->| |
|
||||
| | | `--------+-------` | | .------------. |
|
||||
| | | ^ | | | | | |
|
||||
| | | | v | | | Upstream | |
|
||||
| | .--+---. .-+---. | | | Validators | |
|
||||
| | | Bank |<--| TVU |<--------------+ | |
|
||||
| | `------` `-----` | | `------------` |
|
||||
| | ^ | | |
|
||||
| | | | | .------------. |
|
||||
| | .--+---. .------. .--------. | | | | |
|
||||
| | | Bank |<-|Replay| |Network |<------+ Upstream | |
|
||||
| | | Forks| |Stage | |Observer| | | | Validators | |
|
||||
| | `------` `--+---` `------+-` | | | | |
|
||||
| | ^ | ^ | | | `------------` |
|
||||
| | | .------ | | | | | |
|
||||
| | | |Gossip|<-`.-+-------. | | | |
|
||||
| | | |Votes | |Blocktree|<-` | | |
|
||||
| | | `-+----` `---------` | | .------------. |
|
||||
| | | | ^ | | | | |
|
||||
| | | v | | | | Downstream | |
|
||||
| | .+----. .------+----. | | | Validators | |
|
||||
`-------->| TPU +-->| Broadcast +------------->| | |
|
||||
| `-----` | Service | | | `------------` |
|
||||
| `-----------` | `------------------`
|
||||
`---------------------------------`
|
||||
| | .--+--. .-----------. | | | | |
|
||||
`-------->| TPU +-->| Broadcast +--------->| Downstream | |
|
||||
| `-----` | Service | | | | Validators | |
|
||||
| `-----------` | | | | |
|
||||
| | | `------------` |
|
||||
`---------------------------` | |
|
||||
`------------------`
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
- [Data Plane Fanout](data-plane-fanout.md)
|
||||
- [Reliable Vote Transmission](reliable-vote-transmission.md)
|
||||
- [Bank Forks](bank-forks.md)
|
||||
- [Fullnode Changes](fullnode-with-ledger-notifications.md)
|
||||
- [Cluster Economics](ed_overview.md)
|
||||
- [Validation-client Economics](ed_validation_client_economics.md)
|
||||
- [State-validation Protocol-based Rewards](ed_vce_state_validation_protocol_based_rewards.md)
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
# Fullnode
|
||||
|
||||
This document proposes the following architecture changes to fullnode pipeline.
|
||||
|
||||
## Current Architecture
|
||||
<img alt="Fullnode block diagrams" src="img/fullnode.svg" class="center"/>
|
||||
|
||||
## Proposal
|
||||
<img alt="Fullnode block diagrams" src="img/fullnode-proposal.svg" class="center"/>
|
||||
|
||||
## Background
|
||||
|
||||
In the old architecture, the ReplayStage receives entries from the RetransmitStage,
|
||||
processes them and writes to the ledger.
|
||||
|
||||
In the current code, the ledger write operation has been moved out of the ReplayStage.
|
||||
If the fullnode is running with a TPU, the Broadcast Service writes to the ledger.
|
||||
The Retransmit Stage receives entries from peer fullnodes and also writes to the ledger.
|
||||
|
||||
The ledger notifies the ReplayStage whenever some entity writes to it. The
|
||||
ReplayStage reads from the ledger, processes the entries in the bank and submits
|
||||
the votes.
|
||||
|
||||
In old architecture, the RetransmitStage and ReplayStage are contained in the TVU.
|
||||
|
||||
## Changes
|
||||
|
||||
This document proposes the following change to the architecture.
|
||||
|
||||
1. Split TVU into Peer Transaction Receiver (contains BlobFetchStage, and RetransmitStage)
|
||||
2. Add Blocktree (ledger) to the diagram
|
||||
3. The Blocktree is updated by Broadcast Stage and Peer Transaction Receiver
|
||||
4. Replay Stage gets notified by Blocktree when someone writes to it
|
||||
5. Replay Stage submits votes via Gossip Service
|
||||
6. Replace Bank with BankForks
|
Loading…
Reference in New Issue