propose architecture change for fullnode

This commit is contained in:
Pankaj Garg 2019-02-13 13:03:16 -08:00 committed by Grimes
parent 7a0e897960
commit 4094e62ed3
4 changed files with 93 additions and 30 deletions

View File

@ -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 | | | `------------` |
| `-----------` | `------------------`
`----------------------------------`

View File

@ -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 | |
| `-----------` | | | | |
| | | `------------` |
`---------------------------` | |
`------------------`

View File

@ -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)

View File

@ -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