pub struct Coordinator<Aggregator: AggregatorTrait> {
pub current_dkg_id: u64,
pub current_sign_id: u64,
pub current_sign_iter_id: u64,
pub party_polynomials: HashMap<u32, PolyCommitment>,
pub aggregate_public_key: Option<Point>,
pub dkg_wait_signer_ids: HashSet<u32>,
pub message: Vec<u8>,
pub state: State,
pub coordinator_public_key: Option<PublicKey>,
/* private fields */
}Expand description
The coordinator for the FIRE algorithm
Fields§
§current_dkg_id: u64current DKG round ID
current_sign_id: u64current signing round ID
current_sign_iter_id: u64current signing iteration ID
party_polynomials: HashMap<u32, PolyCommitment>the current view of a successful DKG’s participants’ commitments
aggregate_public_key: Option<Point>aggregate public key
dkg_wait_signer_ids: HashSet<u32>which signers we’re currently waiting on for DKG
message: Vec<u8>the bytes that we’re signing
state: Statecurrent state of the state machine
coordinator_public_key: Option<PublicKey>coordinator public key
Implementations§
Source§impl<Aggregator: AggregatorTrait> Coordinator<Aggregator>
impl<Aggregator: AggregatorTrait> Coordinator<Aggregator>
Sourcepub fn process_timeout(
&mut self,
) -> Result<(Option<Packet>, Option<OperationResult>), Error>
pub fn process_timeout( &mut self, ) -> Result<(Option<Packet>, Option<OperationResult>), Error>
Check the timeout
Sourcepub fn process_message(
&mut self,
packet: &Packet,
) -> Result<(Option<Packet>, Option<OperationResult>), Error>
pub fn process_message( &mut self, packet: &Packet, ) -> Result<(Option<Packet>, Option<OperationResult>), Error>
Process the message inside the passed packet
Ask signers to send DKG public shares
Ask signers to send DKG private shares
Sourcepub fn start_dkg_end(&mut self) -> Result<Packet, Error>
pub fn start_dkg_end(&mut self) -> Result<Packet, Error>
Ask signers to compute shares and send DKG end
Trait Implementations§
Source§impl<Aggregator: Clone + AggregatorTrait> Clone for Coordinator<Aggregator>
impl<Aggregator: Clone + AggregatorTrait> Clone for Coordinator<Aggregator>
Source§fn clone(&self) -> Coordinator<Aggregator>
fn clone(&self) -> Coordinator<Aggregator>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<Aggregator: AggregatorTrait> Coordinator for Coordinator<Aggregator>
impl<Aggregator: AggregatorTrait> Coordinator for Coordinator<Aggregator>
Source§fn get_config(&self) -> Config
fn get_config(&self) -> Config
Retrieve the config
Source§fn set_key_and_party_polynomials(
&mut self,
aggregate_key: Point,
party_polynomials: Vec<(u32, PolyCommitment)>,
) -> Result<(), Error>
fn set_key_and_party_polynomials( &mut self, aggregate_key: Point, party_polynomials: Vec<(u32, PolyCommitment)>, ) -> Result<(), Error>
Set the aggregate key and polynomial commitments used to form that key. Check if the polynomial commitments match the key
Source§fn get_aggregate_public_key(&self) -> Option<Point>
fn get_aggregate_public_key(&self) -> Option<Point>
Retrieve the aggregate public key
Source§fn set_aggregate_public_key(&mut self, aggregate_public_key: Option<Point>)
fn set_aggregate_public_key(&mut self, aggregate_public_key: Option<Point>)
Set the aggregate public key
Source§fn start_dkg_round(&mut self, dkg_id: Option<u64>) -> Result<Packet, Error>
fn start_dkg_round(&mut self, dkg_id: Option<u64>) -> Result<Packet, Error>
Start a DKG round, with an optional dkg_id
Source§fn process(
&mut self,
packet: &Packet,
) -> Result<(Option<Packet>, Option<OperationResult>), Error>
fn process( &mut self, packet: &Packet, ) -> Result<(Option<Packet>, Option<OperationResult>), Error>
Process the timeouts, and if none of them fire then process the passed packet If a timeout does fire, then the coordinator state has changed; this means the packet is now stale and must be dropped
Source§fn start_signing_round(
&mut self,
message: &[u8],
signature_type: SignatureType,
sign_id: Option<u64>,
) -> Result<Packet, Error>
fn start_signing_round( &mut self, message: &[u8], signature_type: SignatureType, sign_id: Option<u64>, ) -> Result<Packet, Error>
Start a signing round
Source§fn load(state: &SavedState) -> Self
fn load(state: &SavedState) -> Self
stateSource§fn save(&self) -> SavedState
fn save(&self) -> SavedState
Source§fn set_coordinator_public_key(&mut self, key: Option<PublicKey>)
fn set_coordinator_public_key(&mut self, key: Option<PublicKey>)
Source§impl<Aggregator: Debug + AggregatorTrait> Debug for Coordinator<Aggregator>
impl<Aggregator: Debug + AggregatorTrait> Debug for Coordinator<Aggregator>
Source§impl<Aggregator: PartialEq + AggregatorTrait> PartialEq for Coordinator<Aggregator>
impl<Aggregator: PartialEq + AggregatorTrait> PartialEq for Coordinator<Aggregator>
Source§impl<Aggregator: AggregatorTrait> StateMachine<State, Error> for Coordinator<Aggregator>
impl<Aggregator: AggregatorTrait> StateMachine<State, Error> for Coordinator<Aggregator>
impl<Aggregator: AggregatorTrait> StructuralPartialEq for Coordinator<Aggregator>
Auto Trait Implementations§
impl<Aggregator> Freeze for Coordinator<Aggregator>where
Aggregator: Freeze,
impl<Aggregator> RefUnwindSafe for Coordinator<Aggregator>where
Aggregator: RefUnwindSafe,
impl<Aggregator> Send for Coordinator<Aggregator>where
Aggregator: Send,
impl<Aggregator> Sync for Coordinator<Aggregator>where
Aggregator: Sync,
impl<Aggregator> Unpin for Coordinator<Aggregator>where
Aggregator: Unpin,
impl<Aggregator> UnwindSafe for Coordinator<Aggregator>where
Aggregator: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.