Detect tracer key in sigverify (#25579)

* Mark the tracer transaction

* simplify tracer check
This commit is contained in:
carllin 2022-05-30 18:41:54 -05:00 committed by GitHub
parent 58092f746c
commit 90a3315b69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 7 deletions

View File

@ -64,6 +64,7 @@ impl SigVerifier for TransactionSigVerifier {
removed_before_sigverify_stage: bool,
is_dup: bool,
) {
sigverify::check_for_tracer_packet(packet);
if packet.meta.is_tracer_packet() {
if removed_before_sigverify_stage {
self.tracer_packet_stats

View File

@ -38,6 +38,7 @@ const TRACER_KEY_BYTES: [u8; 32] = [
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_OFFSET_IN_TRANSACTION: usize = 69;
lazy_static! {
static ref PAR_THREAD_POOL: ThreadPool = rayon::ThreadPoolBuilder::new()
@ -152,13 +153,6 @@ fn verify_packet(packet: &mut Packet, reject_non_vote: bool) {
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;
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(
packet: &mut Packet,
current_offset: usize,