Skip to content

Commit 4dc2b7b

Browse files
committed
Adjustments after review comments.
1 parent 7f4c8a7 commit 4dc2b7b

File tree

8 files changed

+52
-80
lines changed

8 files changed

+52
-80
lines changed

cliquenet/src/addr.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,13 @@ impl AddressableCommittee {
194194
.map(|(k, (x, a))| (*k, *x, a.clone()))
195195
}
196196

197+
pub fn update_addresses<F>(&mut self, f: F)
198+
where
199+
F: Fn(&Address) -> Address,
200+
{
201+
self.addresses.values_mut().for_each(|(_, a)| *a = f(a))
202+
}
203+
197204
/// Assert that addresses and committee have the same keys.
198205
fn assert_shared_domain(&self) {
199206
for p in self.committee.parties() {

tests/src/tests/timeboost/block_order.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,8 @@ async fn block_order() {
5050
// delay start of a recovering node:
5151
sleep(Duration::from_secs(5)).await
5252
}
53-
let mut s = Sequencer::new(c.clone(), &NoMetrics)
54-
.await
55-
.unwrap_or_else(|e| panic!("failed to create sequencer: {e}"));
56-
let mut p = Certifier::new(b.clone(), &NoMetrics)
57-
.await
58-
.unwrap_or_else(|e| panic!("failed to create certifer: {e}"));
53+
let mut s = Sequencer::new(c, &NoMetrics).await.unwrap();
54+
let mut p = Certifier::new(b, &NoMetrics).await.unwrap();
5955
let mut r = None;
6056

6157
let handle = p.handle();

tests/src/tests/timeboost/timeboost_handover.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,17 @@ async fn run_handover(
6262

6363
// run committee 1 (current):
6464
for (_, seq_conf, cert_conf) in &curr {
65-
let seq_conf = seq_conf.clone();
66-
let cert_conf = cert_conf.clone();
65+
let sc = seq_conf.clone();
66+
let cc = cert_conf.clone();
6767
let (tx, rx) = mpsc::unbounded_channel();
6868
let finish = finish.clone();
6969
let mut cmd = bcast.subscribe();
70-
let label = seq_conf.sign_keypair().public_key();
70+
let label = sc.sign_keypair().public_key();
7171
let r2b = round2block.clone();
7272

7373
tasks.spawn(async move {
74-
let mut s = Sequencer::new(seq_conf.clone(), &NoMetrics).await.unwrap();
75-
let mut c = Certifier::new(cert_conf.clone(), &NoMetrics).await.unwrap();
74+
let mut s = Sequencer::new(sc, &NoMetrics).await.unwrap();
75+
let mut c = Certifier::new(cc, &NoMetrics).await.unwrap();
7676
let mut r: Option<RoundNumber> = None;
7777
let c_handle = c.handle();
7878

@@ -181,10 +181,10 @@ async fn run_handover(
181181
tasks.spawn(async move {
182182
let mut s = Sequencer::new(seq_conf, &NoMetrics)
183183
.await
184-
.unwrap_or_else(|e| panic!("failed to create sequencer: {e}"));
184+
.unwrap();
185185
let mut c = Certifier::new(cert_conf, &NoMetrics)
186186
.await
187-
.unwrap_or_else(|e| panic!("failed to create certifer: {e}"));
187+
.unwrap();
188188
let mut r: Option<sailfish_types::RoundNumber> = None;
189189
let c_handle = c.handle();
190190

tests/src/tests/timeboost/transaction_order.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ async fn transaction_order() {
5252
// delay start of a recovering node:
5353
sleep(Duration::from_secs(5)).await
5454
}
55-
let mut s = Sequencer::new(c.clone(), &NoMetrics)
56-
.await
57-
.unwrap_or_else(|e| panic!("failed to create sequencer: {e}"));
55+
let mut s = Sequencer::new(c.clone(), &NoMetrics).await.unwrap();
5856
loop {
5957
select! {
6058
trx = brx.recv() => match trx {

timeboost-builder/src/certifier.rs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,10 @@ impl Certifier {
143143
/// Prepare for the next committee.
144144
pub async fn set_next_committee(
145145
&mut self,
146-
c: AddressableCommittee,
146+
mut c: AddressableCommittee,
147147
) -> StdResult<(), CertifierDown> {
148148
debug!(node = %self.label, committee = %c.committee().id(), "next committee");
149-
// map to Certifier network
150-
let c = translate_addr(c);
149+
c.update_addresses(|a| a.to_owned().with_offset(CERTIFIER_PORT_OFFSET));
151150
self.worker_tx
152151
.send(Command::NextCommittee(c))
153152
.await
@@ -166,19 +165,6 @@ impl Certifier {
166165
}
167166
}
168167

169-
fn translate_addr(c: AddressableCommittee) -> AddressableCommittee {
170-
let committee = c.committee().clone();
171-
let shifted_entries = c
172-
.entries()
173-
.map(|(pk, dh, addr)| {
174-
let cert_port = addr.port().saturating_add(CERTIFIER_PORT_OFFSET);
175-
let new_addr = addr.with_port(cert_port);
176-
(pk, dh, new_addr)
177-
})
178-
.collect::<Vec<_>>();
179-
AddressableCommittee::new(committee, shifted_entries)
180-
}
181-
182168
impl Drop for Certifier {
183169
fn drop(&mut self) {
184170
self.worker.abort()

timeboost-sequencer/src/decrypt.rs

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -348,14 +348,13 @@ impl Decrypter {
348348
/// Prepare for the next committee.
349349
pub async fn next_committee(
350350
&mut self,
351-
c: AddressableCommittee,
351+
mut c: AddressableCommittee,
352352
k: KeyStore,
353353
) -> StdResult<(), DecrypterDown> {
354354
debug!(node = %self.label, committee = %c.committee().id(), "next committee");
355-
// map to Decrypter network
356-
let d = translate_addr(c);
355+
c.update_addresses(|a| a.to_owned().with_offset(DECRYPTER_PORT_OFFSET));
357356
self.worker_tx
358-
.send(Command::NextCommittee(d, k))
357+
.send(Command::NextCommittee(c, k))
359358
.await
360359
.map_err(|_| DecrypterDown(()))?;
361360
Ok(())
@@ -372,19 +371,6 @@ impl Decrypter {
372371
}
373372
}
374373

375-
fn translate_addr(c: AddressableCommittee) -> AddressableCommittee {
376-
let committee = c.committee().clone();
377-
let shifted_entries = c
378-
.entries()
379-
.map(|(pk, dh, addr)| {
380-
let dec_port = addr.port().saturating_add(DECRYPTER_PORT_OFFSET);
381-
let new_addr = addr.with_port(dec_port);
382-
(pk, dh, new_addr)
383-
})
384-
.collect::<Vec<_>>();
385-
AddressableCommittee::new(committee, shifted_entries)
386-
}
387-
388374
impl Drop for Decrypter {
389375
fn drop(&mut self) {
390376
self.worker.abort()
@@ -2450,7 +2436,7 @@ mod tests {
24502436
Arc::new(SequencerMetrics::default()),
24512437
)
24522438
.await
2453-
.unwrap_or_else(|e| panic!("failed to create decrypter: {e}"));
2439+
.unwrap();
24542440
decrypters.push(decrypter);
24552441
encryption_key_cells.push(encryption_key_cell);
24562442
}

timeboost-types/src/decryption.rs

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -410,48 +410,46 @@ impl DkgAccumulator {
410410
}
411411

412412
/// Try to add a bundle to the accumulator.
413-
pub async fn try_add(&mut self, bundle: DkgBundle) -> Result<(), VessError> {
413+
pub async fn try_add(&mut self, bundle: DkgBundle) -> anyhow::Result<()> {
414414
// caller should ensure that no bundles are added after finalization
415415
if self.bundles().contains(&bundle) || self.complete {
416416
return Ok(());
417417
}
418418

419419
let aad: &[u8; 3] = b"dkg";
420-
let committee = self.store.committee().clone();
421-
let sorted_keys: Vec<DkgEncKey> = self.store.sorted_keys().cloned().collect();
420+
let vess = Vess::new_fast();
421+
let store = self.store.clone();
422422
let mode = self.mode.clone();
423423

424-
spawn_blocking({
425-
let bundle = bundle.clone();
426-
move || {
427-
let vess = Vess::new_fast();
428-
match mode {
429-
AccumulatorMode::Dkg => vess.verify_shares(
430-
&committee,
431-
sorted_keys.iter(),
424+
let bundle = spawn_blocking(move || {
425+
// verify the bundle based on the mode
426+
match mode {
427+
AccumulatorMode::Dkg => {
428+
vess.verify_shares(
429+
store.committee(),
430+
store.sorted_keys(),
432431
bundle.vess_ct(),
433432
bundle.comm(),
434433
aad,
435-
),
436-
AccumulatorMode::Resharing(combkey) => {
437-
let Some(pub_share) = combkey.get_pub_share(bundle.origin().0.into())
438-
else {
439-
return Err(VessError::FailedVerification);
440-
};
441-
vess.verify_reshares(
442-
&committee,
443-
sorted_keys.iter(),
444-
bundle.vess_ct(),
445-
bundle.comm(),
446-
aad,
447-
*pub_share,
448-
)
449-
}
434+
)?;
435+
}
436+
AccumulatorMode::Resharing(combkey) => {
437+
let Some(pub_share) = combkey.get_pub_share(bundle.origin().0.into()) else {
438+
return Err(VessError::FailedVerification);
439+
};
440+
vess.verify_reshares(
441+
store.committee(),
442+
store.sorted_keys(),
443+
bundle.vess_ct(),
444+
bundle.comm(),
445+
aad,
446+
*pub_share,
447+
)?;
450448
}
451449
}
450+
Ok(bundle)
452451
})
453-
.await
454-
.map_err(|_| VessError::FailedVerification)??;
452+
.await??;
455453

456454
self.bundles.push(bundle);
457455
// only store the necessary amount of bundles in the accumulator

timeboost/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
mod conf;
22

3+
use std::iter::once;
4+
use std::sync::Arc;
5+
36
use ::metrics::prometheus::PrometheusMetrics;
47
use anyhow::Result;
58
use metrics::TimeboostMetrics;
69
use multisig::PublicKey;
7-
use std::iter::once;
8-
use std::sync::Arc;
910
use timeboost_builder::{Certifier, CertifierDown, Submitter};
1011
use timeboost_sequencer::{Output, Sequencer};
1112
use timeboost_types::BundleVariant;

0 commit comments

Comments
 (0)