Detect tracer key in sigverify (#25579)
* Mark the tracer transaction * simplify tracer check
This commit is contained in:
parent
58092f746c
commit
90a3315b69
|
@ -64,6 +64,7 @@ impl SigVerifier for TransactionSigVerifier {
|
||||||
removed_before_sigverify_stage: bool,
|
removed_before_sigverify_stage: bool,
|
||||||
is_dup: bool,
|
is_dup: bool,
|
||||||
) {
|
) {
|
||||||
|
sigverify::check_for_tracer_packet(packet);
|
||||||
if packet.meta.is_tracer_packet() {
|
if packet.meta.is_tracer_packet() {
|
||||||
if removed_before_sigverify_stage {
|
if removed_before_sigverify_stage {
|
||||||
self.tracer_packet_stats
|
self.tracer_packet_stats
|
||||||
|
|
|
@ -38,6 +38,7 @@ const TRACER_KEY_BYTES: [u8; 32] = [
|
||||||
155, 90, 30, 39, 116, 115, 238, 38, 126, 21, 232, 133,
|
155, 90, 30, 39, 116, 115, 238, 38, 126, 21, 232, 133,
|
||||||
];
|
];
|
||||||
const TRACER_KEY: Pubkey = Pubkey::new_from_array(TRACER_KEY_BYTES);
|
const TRACER_KEY: Pubkey = Pubkey::new_from_array(TRACER_KEY_BYTES);
|
||||||
|
const TRACER_KEY_OFFSET_IN_TRANSACTION: usize = 69;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref PAR_THREAD_POOL: ThreadPool = rayon::ThreadPoolBuilder::new()
|
static ref PAR_THREAD_POOL: ThreadPool = rayon::ThreadPoolBuilder::new()
|
||||||
|
@ -152,13 +153,6 @@ fn verify_packet(packet: &mut Packet, reject_non_vote: bool) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for tracer pubkey
|
|
||||||
if !packet.meta.is_tracer_packet()
|
|
||||||
&& &packet.data()[pubkey_start..pubkey_end] == TRACER_KEY.as_ref()
|
|
||||||
{
|
|
||||||
packet.meta.flags |= PacketFlags::TRACER_PACKET;
|
|
||||||
}
|
|
||||||
|
|
||||||
pubkey_start = pubkey_end;
|
pubkey_start = pubkey_end;
|
||||||
sig_start = sig_end;
|
sig_start = sig_end;
|
||||||
}
|
}
|
||||||
|
@ -315,6 +309,22 @@ fn do_get_packet_offsets(
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn check_for_tracer_packet(packet: &mut Packet) -> bool {
|
||||||
|
let first_pubkey_start: usize = TRACER_KEY_OFFSET_IN_TRANSACTION;
|
||||||
|
let first_pubkey_end = first_pubkey_start.saturating_add(size_of::<Pubkey>());
|
||||||
|
// Check for tracer pubkey
|
||||||
|
if packet.meta.size > first_pubkey_start {
|
||||||
|
let is_tracer_packet =
|
||||||
|
&packet.data()[first_pubkey_start..first_pubkey_end] == TRACER_KEY.as_ref();
|
||||||
|
if is_tracer_packet {
|
||||||
|
packet.meta.flags |= PacketFlags::TRACER_PACKET;
|
||||||
|
}
|
||||||
|
is_tracer_packet
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn get_packet_offsets(
|
fn get_packet_offsets(
|
||||||
packet: &mut Packet,
|
packet: &mut Packet,
|
||||||
current_offset: usize,
|
current_offset: usize,
|
||||||
|
|
Loading…
Reference in New Issue