parent
53275cc678
commit
82df267ec9
|
@ -45,7 +45,7 @@ The upsides compared to guards:
|
||||||
* The timeout is not fixed.
|
* The timeout is not fixed.
|
||||||
|
|
||||||
* The timeout is local to the leader, and therefore can be clever. The leader's
|
* The timeout is local to the leader, and therefore can be clever. The leader's
|
||||||
heuristic can take into account avalanche performance.
|
heuristic can take into account turbine performance.
|
||||||
|
|
||||||
* This design doesn't require a ledger hard fork to update.
|
* This design doesn't require a ledger hard fork to update.
|
||||||
|
|
||||||
|
|
|
@ -26,4 +26,4 @@ super majority vote, and when one of its children forks is frozen.
|
||||||
The node assigns a timestamp to every new fork, and computes the time it took to confirm
|
The node assigns a timestamp to every new fork, and computes the time it took to confirm
|
||||||
the fork. This time is reflected as validator confirmation time in performance metrics.
|
the fork. This time is reflected as validator confirmation time in performance metrics.
|
||||||
The performance dashboard displays the average of each validator node's confirmation time
|
The performance dashboard displays the average of each validator node's confirmation time
|
||||||
as a time series graph.
|
as a time series graph.
|
||||||
|
|
|
@ -48,7 +48,7 @@ specific parameters will be necessary:
|
||||||
|
|
||||||
Solana's trustless sense of time and ordering provided by its PoH data
|
Solana's trustless sense of time and ordering provided by its PoH data
|
||||||
structure, along with its
|
structure, along with its
|
||||||
[avalanche](https://www.youtube.com/watch?v=qt_gDRXHrHQ&t=1s) data broadcast
|
[turbine](https://www.youtube.com/watch?v=qt_gDRXHrHQ&t=1s) data broadcast
|
||||||
and transmission design, should provide sub-second transaction confirmation times that scale
|
and transmission design, should provide sub-second transaction confirmation times that scale
|
||||||
with the log of the number of nodes in the cluster. This means we shouldn't
|
with the log of the number of nodes in the cluster. This means we shouldn't
|
||||||
have to restrict the number of validating nodes with a prohibitive 'minimum
|
have to restrict the number of validating nodes with a prohibitive 'minimum
|
||||||
|
|
|
@ -521,4 +521,4 @@ ul#searchresults span.teaser em {
|
||||||
}
|
}
|
||||||
.content pre {
|
.content pre {
|
||||||
padding: 0 28px;
|
padding: 0 28px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,4 +152,4 @@ blockquote {
|
||||||
*:active,
|
*:active,
|
||||||
*:hover {
|
*:hover {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -87,7 +87,7 @@ pub struct ClusterInfo {
|
||||||
pub struct Locality {
|
pub struct Locality {
|
||||||
/// The bounds of the neighborhood represented by this locality
|
/// The bounds of the neighborhood represented by this locality
|
||||||
pub neighbor_bounds: (usize, usize),
|
pub neighbor_bounds: (usize, usize),
|
||||||
/// The `avalanche` layer this locality is in
|
/// The `turbine` layer this locality is in
|
||||||
pub layer_ix: usize,
|
pub layer_ix: usize,
|
||||||
/// The bounds of the current layer
|
/// The bounds of the current layer
|
||||||
pub layer_bounds: (usize, usize),
|
pub layer_bounds: (usize, usize),
|
||||||
|
@ -1414,7 +1414,7 @@ impl ClusterInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Avalanche logic
|
/// Turbine logic
|
||||||
/// 1 - For the current node find out if it is in layer 1
|
/// 1 - For the current node find out if it is in layer 1
|
||||||
/// 1.1 - If yes, then broadcast to all layer 1 nodes
|
/// 1.1 - If yes, then broadcast to all layer 1 nodes
|
||||||
/// 1 - using the layer 1 index, broadcast to all layer 2 nodes assuming you know neighborhood size
|
/// 1 - using the layer 1 index, broadcast to all layer 2 nodes assuming you know neighborhood size
|
||||||
|
|
|
@ -126,7 +126,7 @@ fn run_simulation(stakes: &[u64], fanout: usize) {
|
||||||
|
|
||||||
assert!(!batches.is_empty());
|
assert!(!batches.is_empty());
|
||||||
|
|
||||||
// start avalanche simulation
|
// start turbine simulation
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
batches.par_iter_mut().for_each(|batch| {
|
batches.par_iter_mut().for_each(|batch| {
|
||||||
let mut cluster = c_info.clone();
|
let mut cluster = c_info.clone();
|
||||||
|
|
Loading…
Reference in New Issue