Merge pull request #19 from poanetwork/afck-change

Migrate to new hbbft API: arbitrary validator set changes.
This commit is contained in:
Andreas Fackler 2018-11-18 10:23:25 +01:00 committed by GitHub
commit eecab4c532
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 11 deletions

View File

@ -12,8 +12,7 @@ use super::{Error, Hydrabadger, InputOrMessage, StateMachine, State, StateDsct};
use crossbeam::queue::SegQueue;
use hbbft::{
crypto::{PublicKey, PublicKeySet},
dynamic_honey_badger::{ChangeState, JoinPlan, Message as DhbMessage, Change as DhbChange,
NodeChange},
dynamic_honey_badger::{ChangeState, JoinPlan, Message as DhbMessage, Change as DhbChange},
sync_key_gen::{Ack, AckOutcome, Part, PartOutcome, SyncKeyGen},
Target, Epoched,
};
@ -504,13 +503,11 @@ impl<T: Contribution> Handler<T> {
State::GeneratingKeys { .. } => {
// Do something here (possibly panic).
}
State::Observer { ref mut dhb } => {
// Do nothing instead?
let step = dhb.as_mut().unwrap().vote_to_remove(src_uid)?;
self.step_queue.push(step);
State::Observer { .. } => {
// Observers cannot vote.
}
State::Validator { ref mut dhb } => {
let step = dhb.as_mut().unwrap().vote_to_remove(src_uid)?;
let step = dhb.as_mut().unwrap().vote_to_remove(&src_uid)?;
self.step_queue.push(step);
}
}
@ -760,16 +757,15 @@ impl<T: Contribution> Future for Handler<T> {
ChangeState::None => {}
ChangeState::InProgress(_change) => {}
ChangeState::Complete(change) => match change {
DhbChange::NodeChange(NodeChange::Add(uid, pk)) => {
if uid == self.hdb.uid() {
DhbChange::NodeChange(pub_keys) => {
if let Some(pk) = pub_keys.get(self.hdb.uid()) {
assert_eq!(*pk, self.hdb.secret_key().public_key());
assert!(state.dhb().unwrap().netinfo().is_validator());
state.promote_to_validator()?;
}
// FIXME: Handle removed nodes.
}
// FIXME
DhbChange::NodeChange(NodeChange::Remove(_uid)) => {}
// FIXME
DhbChange::EncryptionSchedule(_schedule) => {}
},
}