Skip to content

Commit 22df8e1

Browse files
authored
refactor(signature_collector): Remove base_hash (#437)
1 parent 6f9eb98 commit 22df8e1

File tree

2 files changed

+19
-38
lines changed
  • anchor

2 files changed

+19
-38
lines changed

anchor/signature_collector/src/lib.rs

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ impl SignatureCollectorManager {
103103
self: &Arc<Self>,
104104
metadata: SignatureMetadata,
105105
requester: SignatureRequester,
106-
validator_signing_data: ValidatorSigningData,
106+
signing_data: SigningData,
107107
) -> Result<Arc<Signature>, CollectionError> {
108108
let Some(signer) = self.operator_id.get() else {
109109
return Err(CollectionError::OwnOperatorIdUnknown);
@@ -114,8 +114,8 @@ impl SignatureCollectorManager {
114114
debug!(
115115
?metadata,
116116
?requester,
117-
root=?validator_signing_data.root,
118-
index=?validator_signing_data.index,
117+
root=?signing_data.root,
118+
index=?signing_data.index,
119119
"sign_and_collect called",
120120
);
121121

@@ -125,8 +125,8 @@ impl SignatureCollectorManager {
125125
self.processor.permitless.send_immediate(
126126
move |drop_on_finish| {
127127
let sender = manager.get_or_spawn(
128-
validator_signing_data.root,
129-
validator_signing_data.index,
128+
signing_data.root,
129+
signing_data.index,
130130
cloned_metadata.slot,
131131
);
132132
let _ = sender.send(CollectorMessage {
@@ -144,21 +144,21 @@ impl SignatureCollectorManager {
144144
let manager = self.clone();
145145
self.processor.urgent_consensus.send_blocking(
146146
move || {
147-
trace!(root = ?validator_signing_data.root, "Signing...");
147+
trace!(root = ?signing_data.root, "Signing...");
148148
// If we have no share, we can not actually sign the message, because we are running
149149
// in impostor mode.
150-
let partial_signature = if let Some(share) = &validator_signing_data.share {
151-
share.sign(validator_signing_data.root)
150+
let partial_signature = if let Some(share) = &signing_data.share {
151+
share.sign(signing_data.root)
152152
} else {
153153
Signature::empty()
154154
};
155-
trace!(root = ?validator_signing_data.root, "Signed");
155+
trace!(root = ?signing_data.root, "Signed");
156156

157157
let message = PartialSignatureMessage {
158158
partial_signature,
159-
signing_root: validator_signing_data.root,
159+
signing_root: signing_data.root,
160160
signer,
161-
validator_index: validator_signing_data.index,
161+
validator_index: signing_data.index,
162162
};
163163
match requester {
164164
SignatureRequester::SingleValidator { pubkey } => {
@@ -178,13 +178,12 @@ impl SignatureCollectorManager {
178178
}
179179
SignatureRequester::Committee {
180180
num_signatures_to_collect,
181-
base_hash,
182181
} => {
183182
// We have to collect all signatures from the given validators.
184183
// To check this create or get an entry from the `committee_signatures` map.
185184
let mut entry = match manager
186185
.committee_signatures
187-
.entry((base_hash, metadata.committee_id))
186+
.entry((signing_data.root, metadata.committee_id))
188187
{
189188
Entry::Occupied(occupied) => occupied,
190189
Entry::Vacant(vacant) => vacant.insert_entry(CommitteeSignatures {
@@ -225,7 +224,7 @@ impl SignatureCollectorManager {
225224

226225
// Finally, make the local instance aware of the partial signature, if it is a real
227226
// signature.
228-
if validator_signing_data.share.is_some() {
227+
if signing_data.share.is_some() {
229228
let _ = manager.receive_partial_signature(message, metadata.slot);
230229
}
231230
},
@@ -392,15 +391,11 @@ pub enum SignatureRequester {
392391
Committee {
393392
/// The number of signatures we have to wait for.
394393
num_signatures_to_collect: usize,
395-
/// A hash that identifies what we are signing. Note that the actual signing root might be
396-
/// different - for example, because we are in different beacon chain attestation
397-
/// committees, and the attestation data differs therefore.
398-
base_hash: Hash256,
399394
},
400395
}
401396

402397
#[derive(Clone)]
403-
pub struct ValidatorSigningData {
398+
pub struct SigningData {
404399
pub root: Hash256,
405400
pub index: ValidatorIndex,
406401
pub share: Option<SecretKey>,

anchor/validator_store/src/lib.rs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,16 @@ use qbft_manager::{
2424
};
2525
use safe_arith::{ArithError, SafeArith};
2626
use signature_collector::{
27-
CollectionError, SignatureCollectorManager, SignatureMetadata, SignatureRequester,
28-
ValidatorSigningData,
27+
CollectionError, SignatureCollectorManager, SignatureMetadata, SignatureRequester, SigningData,
2928
};
3029
use slashing_protection::{NotSafe, Safe, SlashingDatabase};
3130
use slot_clock::SlotClock;
3231
use ssv_types::{
3332
Cluster, CommitteeId, ValidatorIndex, ValidatorMetadata,
3433
consensus::{
3534
BEACON_ROLE_AGGREGATOR, BEACON_ROLE_PROPOSER, BEACON_ROLE_SYNC_COMMITTEE_CONTRIBUTION,
36-
BeaconVote, Contribution, ContributionWrapper, Contributions, QbftData,
37-
ValidatorConsensusData, ValidatorDuty,
35+
BeaconVote, Contribution, ContributionWrapper, Contributions, ValidatorConsensusData,
36+
ValidatorDuty,
3837
},
3938
msgid::Role,
4039
partial_sig::PartialSignatureKind,
@@ -336,7 +335,6 @@ impl<T: SlotClock, E: EthSpec> AnchorValidatorStore<T, E> {
336335
&self,
337336
signature_kind: PartialSignatureKind,
338337
role: Role,
339-
base_hash: Option<Hash256>,
340338
validator: InitializedValidator,
341339
signing_root: Hash256,
342340
slot: Slot,
@@ -355,7 +353,7 @@ impl<T: SlotClock, E: EthSpec> AnchorValidatorStore<T, E> {
355353
committee_id,
356354
};
357355

358-
let requester = if let Some(base_hash) = base_hash {
356+
let requester = if role == Role::Committee {
359357
let metadata = self.get_slot_metadata(slot).await?;
360358
SignatureRequester::Committee {
361359
num_signatures_to_collect: self
@@ -377,15 +375,14 @@ impl<T: SlotClock, E: EthSpec> AnchorValidatorStore<T, E> {
377375
.sum()
378376
})
379377
.unwrap_or_default(),
380-
base_hash,
381378
}
382379
} else {
383380
SignatureRequester::SingleValidator {
384381
pubkey: validator.metadata.public_key,
385382
}
386383
};
387384

388-
let signing_data = ValidatorSigningData {
385+
let signing_data = SigningData {
389386
root: signing_root,
390387
index: validator
391388
.metadata
@@ -517,7 +514,6 @@ impl<T: SlotClock, E: EthSpec> AnchorValidatorStore<T, E> {
517514
.collect_signature(
518515
PartialSignatureKind::PostConsensus,
519516
Role::Proposer,
520-
None,
521517
self.validator(validator_pubkey)?,
522518
signing_root,
523519
header.slot,
@@ -620,7 +616,6 @@ impl<T: SlotClock, E: EthSpec> AnchorValidatorStore<T, E> {
620616
.collect_signature(
621617
PartialSignatureKind::VoluntaryExit,
622618
Role::VoluntaryExit,
623-
None,
624619
self.validator(validator_pubkey)?,
625620
signing_root,
626621
slot,
@@ -840,7 +835,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
840835
self.collect_signature(
841836
PartialSignatureKind::RandaoPartialSig,
842837
Role::Proposer,
843-
None,
844838
self.validator(validator_pubkey)?,
845839
signing_root,
846840
self.slot_clock.now().ok_or(SpecificError::SlotClock)?,
@@ -978,7 +972,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
978972
Completed::TimedOut => return Err(Error::SpecificError(SpecificError::Timeout)),
979973
Completed::Success(data) => data,
980974
};
981-
let data_hash = data.hash();
982975
attestation.data_mut().beacon_block_root = data.block_root;
983976
attestation.data_mut().source = data.source;
984977
attestation.data_mut().target = data.target;
@@ -999,7 +992,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
999992
.collect_signature(
1000993
PartialSignatureKind::PostConsensus,
1001994
Role::Committee,
1002-
Some(data_hash),
1003995
validator,
1004996
signing_root,
1005997
attestation.data().slot,
@@ -1044,7 +1036,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
10441036
.collect_signature(
10451037
PartialSignatureKind::ValidatorRegistration,
10461038
Role::ValidatorRegistration,
1047-
None,
10481039
self.validator(validator_registration_data.pubkey)?,
10491040
signing_root,
10501041
validity_slot,
@@ -1158,7 +1149,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
11581149
.collect_signature(
11591150
PartialSignatureKind::PostConsensus,
11601151
Role::Aggregator,
1161-
None,
11621152
validator,
11631153
signing_root,
11641154
message.aggregate().get_slot(),
@@ -1200,7 +1190,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
12001190
self.collect_signature(
12011191
PartialSignatureKind::SelectionProofPartialSig,
12021192
Role::Aggregator,
1203-
None,
12041193
self.validator(validator_pubkey)?,
12051194
signing_root,
12061195
slot,
@@ -1245,7 +1234,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
12451234
self.collect_signature(
12461235
PartialSignatureKind::ContributionProofs,
12471236
Role::SyncCommittee,
1248-
None,
12491237
self.validator(*validator_pubkey)?,
12501238
signing_root,
12511239
slot,
@@ -1306,7 +1294,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
13061294
.collect_signature(
13071295
PartialSignatureKind::PostConsensus,
13081296
Role::Committee,
1309-
Some(data.hash()),
13101297
validator,
13111298
signing_root,
13121299
slot,
@@ -1454,7 +1441,6 @@ impl<T: SlotClock, E: EthSpec> ValidatorStore for AnchorValidatorStore<T, E> {
14541441
self.collect_signature(
14551442
PartialSignatureKind::PostConsensus,
14561443
Role::SyncCommittee,
1457-
None,
14581444
validator,
14591445
signing_root,
14601446
slot,

0 commit comments

Comments
 (0)