Skip to content

Commit d0e3fea

Browse files
authored
integrating vortexor with sigverifier (#4424)
* integrating with sigverifier sigverify integration -- move out sender creation * changes metrics and thread name to particular to vortexor * update comments * made the channel bounded
1 parent 6ff4dee commit d0e3fea

File tree

5 files changed

+38
-5
lines changed

5 files changed

+38
-5
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/src/banking_trace.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ impl BankingTracer {
267267
Self::channel(label, self.active_tracer.as_ref().cloned())
268268
}
269269

270-
fn create_channel_non_vote(&self) -> (BankingPacketSender, BankingPacketReceiver) {
270+
pub fn create_channel_non_vote(&self) -> (BankingPacketSender, BankingPacketReceiver) {
271271
self.create_channel(ChannelLabel::NonVote)
272272
}
273273

vortexor/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ rustls = { workspace = true }
3535
smallvec = { workspace = true }
3636
socket2 = { workspace = true }
3737
solana-clap-utils = { workspace = true }
38+
solana-core = { workspace = true }
3839
solana-measure = { workspace = true }
3940
solana-metrics = { workspace = true }
4041
solana-net-utils = { workspace = true }

vortexor/src/main.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use {
22
clap::{value_t, value_t_or_exit},
3-
crossbeam_channel::unbounded,
3+
crossbeam_channel::bounded,
44
solana_clap_utils::input_parsers::keypair_of,
5+
solana_core::banking_trace::BankingTracer,
56
solana_sdk::net::DEFAULT_TPU_COALESCE,
67
solana_streamer::streamer::StakedNodes,
78
solana_vortexor::{
@@ -14,6 +15,8 @@ use {
1415
},
1516
};
1617

18+
const DEFAULT_CHANNEL_SIZE: usize = 100_000;
19+
1720
pub fn main() {
1821
let default_args = DefaultArgs::default();
1922
let solana_version = solana_version::version!();
@@ -53,12 +56,22 @@ pub fn main() {
5356
let max_streams_per_ms = value_t_or_exit!(matches, "max_streams_per_ms", u64);
5457
let exit = Arc::new(AtomicBool::new(false));
5558
// To be linked with the Tpu sigverify and forwarder service
56-
let (tpu_sender, _tpu_receiver) = unbounded();
57-
let (tpu_fwd_sender, _tpu_fwd_receiver) = unbounded();
59+
let (tpu_sender, tpu_receiver) = bounded(DEFAULT_CHANNEL_SIZE);
60+
let (tpu_fwd_sender, _tpu_fwd_receiver) = bounded(DEFAULT_CHANNEL_SIZE);
5861

5962
let tpu_sockets =
6063
Vortexor::create_tpu_sockets(bind_address, dynamic_port_range, num_quic_endpoints);
6164

65+
let (banking_tracer, _) = BankingTracer::new(
66+
None, // Not interesed in banking tracing
67+
)
68+
.unwrap();
69+
70+
// The _non_vote_receiver will forward the verified transactions to its configured validator
71+
let (non_vote_sender, _non_vote_receiver) = banking_tracer.create_channel_non_vote();
72+
73+
let sigverify_stage = Vortexor::create_sigverify_stage(tpu_receiver, non_vote_sender);
74+
6275
// To be linked with StakedNodes service.
6376
let staked_nodes = Arc::new(RwLock::new(StakedNodes::default()));
6477

@@ -79,4 +92,5 @@ pub fn main() {
7992
exit,
8093
);
8194
vortexor.join().unwrap();
95+
sigverify_stage.join().unwrap();
8296
}

vortexor/src/vortexor.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
use {
2-
crossbeam_channel::Sender,
2+
crossbeam_channel::{Receiver, Sender},
3+
solana_core::{
4+
banking_trace::TracedSender, sigverify::TransactionSigVerifier,
5+
sigverify_stage::SigVerifyStage,
6+
},
37
solana_net_utils::{bind_in_range_with_config, bind_more_with_config, SocketConfig},
48
solana_perf::packet::PacketBatch,
59
solana_sdk::{quic::NotifyKeyUpdate, signature::Keypair},
@@ -88,6 +92,19 @@ impl Vortexor {
8892
}
8993
}
9094

95+
pub fn create_sigverify_stage(
96+
tpu_receiver: Receiver<solana_perf::packet::PacketBatch>,
97+
non_vote_sender: TracedSender,
98+
) -> SigVerifyStage {
99+
let verifier = TransactionSigVerifier::new(non_vote_sender);
100+
SigVerifyStage::new(
101+
tpu_receiver,
102+
verifier,
103+
"solSigVtxTpu",
104+
"tpu-vortexor-verifier",
105+
)
106+
}
107+
91108
#[allow(clippy::too_many_arguments)]
92109
pub fn create_vortexor(
93110
tpu_sockets: TpuSockets,

0 commit comments

Comments
 (0)