Drop read lock

This commit is contained in:
Eitan Seri-Levi
2026-04-27 10:32:48 +02:00
parent 2f98ca6d55
commit ea9664dc91

View File

@@ -141,19 +141,21 @@ impl<T: BeaconChainTypes> VerifiedPayloadAttestationMessage<T> {
signature: AggregateSignature::from(&payload_attestation_message.signature),
};
// [REJECT] The signature is valid with respect to the `validator_index`.
let pubkey_cache = ctx.validator_pubkey_cache.read();
let signature_set = indexed_payload_attestation_signature_set(
state,
|validator_index| pubkey_cache.get(validator_index).map(Cow::Borrowed),
&indexed_payload_attestation.signature,
&indexed_payload_attestation,
ctx.spec,
)
.map_err(|_| Error::UnknownValidatorIndex(validator_index))?;
{
// [REJECT] The signature is valid with respect to the `validator_index`.
let pubkey_cache = ctx.validator_pubkey_cache.read();
let signature_set = indexed_payload_attestation_signature_set(
state,
|validator_index| pubkey_cache.get(validator_index).map(Cow::Borrowed),
&indexed_payload_attestation.signature,
&indexed_payload_attestation,
ctx.spec,
)
.map_err(|_| Error::UnknownValidatorIndex(validator_index))?;
if !signature_set.verify() {
return Err(Error::InvalidSignature);
if !signature_set.verify() {
return Err(Error::InvalidSignature);
}
}
// Record that we have received a valid payload attestation message from this