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,30 +1,27 @@
|
||||||
.---------------------------------.
|
.---------------------------.
|
||||||
| Fullnode |
|
| Fullnode |
|
||||||
| |
|
| |
|
||||||
.--------. | .------------------. |
|
.--------. | .------------------. |
|
||||||
| |---->| | |
|
| |---->| | |
|
||||||
| Client | | | JSON RPC Service | |
|
| Client | | | JSON RPC Service | |
|
||||||
| |<----| | |
|
| |<----| | |
|
||||||
`----+---` | `------------------` |
|
`----+---` | `------------------` |
|
||||||
| | ^ |
|
| | ^ | .------------------.
|
||||||
| | | .----------------. | .------------------.
|
| | | .----------------. | | Validators |
|
||||||
| | | | Gossip Service |<------>| Validators |
|
| | | | Gossip Service +----->| |
|
||||||
| | | `----------------` | | |
|
| | | `--------+-------` | | .------------. |
|
||||||
| | | | | |
|
| | | ^ | | | | | |
|
||||||
| | | | | .------------. |
|
| | | | v | | | Upstream | |
|
||||||
| | .--+---. .------. .--------. | | | | |
|
| | .--+---. .-+---. | | | Validators | |
|
||||||
| | | Bank |<-|Replay| |Network |<------+ Upstream | |
|
| | | Bank |<--| TVU |<--------------+ | |
|
||||||
| | | Forks| |Stage | |Observer| | | | Validators | |
|
| | `------` `-----` | | `------------` |
|
||||||
| | `------` `--+---` `------+-` | | | | |
|
| | ^ | | |
|
||||||
| | ^ | ^ | | | `------------` |
|
| | | | | .------------. |
|
||||||
| | | .------ | | | | | |
|
| | .--+--. .-----------. | | | | |
|
||||||
| | | |Gossip|<-`.-+-------. | | | |
|
`-------->| TPU +-->| Broadcast +--------->| Downstream | |
|
||||||
| | | |Votes | |Blocktree|<-` | | |
|
| `-----` | Service | | | | Validators | |
|
||||||
| | | `-+----` `---------` | | .------------. |
|
| `-----------` | | | | |
|
||||||
| | | | ^ | | | | |
|
| | | `------------` |
|
||||||
| | | v | | | | Downstream | |
|
`---------------------------` | |
|
||||||
| | .+----. .------+----. | | | Validators | |
|
`------------------`
|
||||||
`-------->| TPU +-->| Broadcast +------------->| | |
|
|
||||||
| `-----` | Service | | | `------------` |
|
|
||||||
| `-----------` | `------------------`
|
|
||||||
`---------------------------------`
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
- [Data Plane Fanout](data-plane-fanout.md)
|
- [Data Plane Fanout](data-plane-fanout.md)
|
||||||
- [Reliable Vote Transmission](reliable-vote-transmission.md)
|
- [Reliable Vote Transmission](reliable-vote-transmission.md)
|
||||||
- [Bank Forks](bank-forks.md)
|
- [Bank Forks](bank-forks.md)
|
||||||
|
- [Fullnode Changes](fullnode-with-ledger-notifications.md)
|
||||||
- [Cluster Economics](ed_overview.md)
|
- [Cluster Economics](ed_overview.md)
|
||||||
- [Validation-client Economics](ed_validation_client_economics.md)
|
- [Validation-client Economics](ed_validation_client_economics.md)
|
||||||
- [State-validation Protocol-based Rewards](ed_vce_state_validation_protocol_based_rewards.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