diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index a8911b06c..c882cde75 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -16,7 +16,7 @@ - [Leader Rotation](leader-rotation.md) - [Fork Generation](fork-generation.md) - [Managing Forks](managing-forks.md) - - [Data Plane Fanout](data-plane-fanout.md) + - [Turbine Block Propagation](turbine-block-propagation.md) - [Ledger Replication](ledger-replication.md) - [Secure Vote Signing](vote-signing.md) - [Stake Delegation and Rewards](stake-delegation-and-rewards.md) diff --git a/book/src/data-plane-fanout.md b/book/src/turbine-block-propagation.md similarity index 78% rename from book/src/data-plane-fanout.md rename to book/src/turbine-block-propagation.md index 2ff429f8f..8c3c2816c 100644 --- a/book/src/data-plane-fanout.md +++ b/book/src/turbine-block-propagation.md @@ -1,12 +1,12 @@ -# Data Plane Fanout +# Turbine Block Propagation -A Solana cluster uses a multi-layer mechanism called *data plane fanout* to -broadcast transaction blobs to all nodes in a very quick and efficient manner. -In order to establish the fanout, the cluster divides itself into small -collections of nodes, called *neighborhoods*. Each node is responsible for -sharing any data it receives with the other nodes in its neighborhood, as well -as propagating the data on to a small set of nodes in other neighborhoods. -This way each node only has to communicate with a small number of nodes. +A Solana cluster uses a multi-layer block propagation mechanism called *Turbine* +to broadcast transaction blobs to all nodes with minimal amount of duplicate +messages. The cluster divides itself into small collections of nodes, called +*neighborhoods*. Each node is responsible for sharing any data it receives with +the other nodes in its neighborhood, as well as propagating the data on to a +small set of nodes in other neighborhoods. This way each node only has to +communicate with a small number of nodes. During its slot, the leader node distributes blobs between the validator nodes in the first neighborhood (layer 0). Each validator shares its data within its @@ -26,6 +26,14 @@ make up layer 0. These will automatically be the highest stake holders, allowing the heaviest votes to come back to the leader first. Layer-0 and lower-layer nodes use the same logic to find their neighbors and next layer peers. +To reduce the possibility of attack vectors, each blob is transmitted over a +random tree of neighborhoods. Each node uses the same set of nodes representing +the cluster. A random tree is generated from the set for each blob using +randomness derived from the blob itself. Since the random seed is not known in +advance, attacks that try to eclipse neighborhoods from certain leaders or +blocks become very difficult, and should require almost complete control of the +stake in the cluster. + ## Layer and Neighborhood Structure The current leader makes its initial broadcasts to at most `DATA_PLANE_FANOUT`