Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.

Commit 9316655

Browse files
authored
rolls out merkle shreds to 100% of mainnet slots (#32979)
1 parent 72706d6 commit 9316655

File tree

1 file changed

+9
-38
lines changed

1 file changed

+9
-38
lines changed

turbine/src/broadcast_stage/standard_broadcast_run.rs

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use {
1414
shred::{shred_code, ProcessShredsStats, ReedSolomonCache, Shred, ShredFlags, Shredder},
1515
},
1616
solana_sdk::{
17-
genesis_config::ClusterType,
1817
signature::Keypair,
1918
timing::{duration_as_us, AtomicInterval},
2019
},
@@ -70,7 +69,6 @@ impl StandardBroadcastRun {
7069
&mut self,
7170
keypair: &Keypair,
7271
max_ticks_in_slot: u8,
73-
cluster_type: ClusterType,
7472
stats: &mut ProcessShredsStats,
7573
) -> Vec<Shred> {
7674
const SHRED_TICK_REFERENCE_MASK: u8 = ShredFlags::SHRED_TICK_REFERENCE_MASK.bits();
@@ -83,21 +81,18 @@ impl StandardBroadcastRun {
8381
let shredder =
8482
Shredder::new(state.slot, state.parent, reference_tick, self.shred_version)
8583
.unwrap();
86-
let merkle_variant = should_use_merkle_variant(state.slot, cluster_type);
8784
let (mut shreds, coding_shreds) = shredder.entries_to_shreds(
8885
keypair,
8986
&[], // entries
9087
true, // is_last_in_slot,
9188
state.next_shred_index,
9289
state.next_code_index,
93-
merkle_variant,
90+
true, // merkle_variant
9491
&self.reed_solomon_cache,
9592
stats,
9693
);
97-
if merkle_variant {
98-
stats.num_merkle_data_shreds += shreds.len();
99-
stats.num_merkle_coding_shreds += coding_shreds.len();
100-
}
94+
stats.num_merkle_data_shreds += shreds.len();
95+
stats.num_merkle_coding_shreds += coding_shreds.len();
10196
self.report_and_reset_stats(true);
10297
self.unfinished_slot = None;
10398
shreds.extend(coding_shreds);
@@ -114,7 +109,6 @@ impl StandardBroadcastRun {
114109
blockstore: &Blockstore,
115110
reference_tick: u8,
116111
is_slot_end: bool,
117-
cluster_type: ClusterType,
118112
process_stats: &mut ProcessShredsStats,
119113
max_data_shreds_per_slot: u32,
120114
max_code_shreds_per_slot: u32,
@@ -145,21 +139,18 @@ impl StandardBroadcastRun {
145139
};
146140
let shredder =
147141
Shredder::new(slot, parent_slot, reference_tick, self.shred_version).unwrap();
148-
let merkle_variant = should_use_merkle_variant(slot, cluster_type);
149142
let (data_shreds, coding_shreds) = shredder.entries_to_shreds(
150143
keypair,
151144
entries,
152145
is_slot_end,
153146
next_shred_index,
154147
next_code_index,
155-
merkle_variant,
148+
true, // merkle_variant
156149
&self.reed_solomon_cache,
157150
process_stats,
158151
);
159-
if merkle_variant {
160-
process_stats.num_merkle_data_shreds += data_shreds.len();
161-
process_stats.num_merkle_coding_shreds += coding_shreds.len();
162-
}
152+
process_stats.num_merkle_data_shreds += data_shreds.len();
153+
process_stats.num_merkle_coding_shreds += coding_shreds.len();
163154
let next_shred_index = match data_shreds.iter().map(Shred::index).max() {
164155
Some(index) => index + 1,
165156
None => next_shred_index,
@@ -239,15 +230,10 @@ impl StandardBroadcastRun {
239230
let mut process_stats = ProcessShredsStats::default();
240231

241232
let mut to_shreds_time = Measure::start("broadcast_to_shreds");
242-
let cluster_type = bank.cluster_type();
243233

244234
// 1) Check if slot was interrupted
245-
let prev_slot_shreds = self.finish_prev_slot(
246-
keypair,
247-
bank.ticks_per_slot() as u8,
248-
cluster_type,
249-
&mut process_stats,
250-
);
235+
let prev_slot_shreds =
236+
self.finish_prev_slot(keypair, bank.ticks_per_slot() as u8, &mut process_stats);
251237

252238
// 2) Convert entries to shreds and coding shreds
253239
let is_last_in_slot = last_tick_height == bank.max_tick_height();
@@ -259,7 +245,6 @@ impl StandardBroadcastRun {
259245
blockstore,
260246
reference_tick as u8,
261247
is_last_in_slot,
262-
cluster_type,
263248
&mut process_stats,
264249
blockstore::MAX_DATA_SHREDS_PER_SLOT as u32,
265250
shred_code::MAX_CODE_SHREDS_PER_SLOT as u32,
@@ -506,13 +491,6 @@ impl BroadcastRun for StandardBroadcastRun {
506491
}
507492
}
508493

509-
fn should_use_merkle_variant(slot: Slot, cluster_type: ClusterType) -> bool {
510-
match cluster_type {
511-
ClusterType::Testnet | ClusterType::Devnet | ClusterType::Development => true,
512-
ClusterType::MainnetBeta => (slot % 19) < 10,
513-
}
514-
}
515-
516494
#[cfg(test)]
517495
mod test {
518496
use {
@@ -596,12 +574,7 @@ mod test {
596574
run.current_slot_and_parent = Some((4, 2));
597575

598576
// Slot 2 interrupted slot 1
599-
let shreds = run.finish_prev_slot(
600-
&keypair,
601-
0,
602-
ClusterType::Devnet,
603-
&mut ProcessShredsStats::default(),
604-
);
577+
let shreds = run.finish_prev_slot(&keypair, 0, &mut ProcessShredsStats::default());
605578
let shred = shreds
606579
.get(0)
607580
.expect("Expected a shred that signals an interrupt");
@@ -851,7 +824,6 @@ mod test {
851824
&blockstore,
852825
0,
853826
false,
854-
ClusterType::Development,
855827
&mut stats,
856828
1000,
857829
1000,
@@ -867,7 +839,6 @@ mod test {
867839
&blockstore,
868840
0,
869841
false,
870-
ClusterType::Development,
871842
&mut stats,
872843
10,
873844
10,

0 commit comments

Comments
 (0)