pub struct ThresholdConfig { /* private fields */ }Expand description
An immutable M-of-N threshold configuration.
Construct with ThresholdConfig::new. The configuration validates all
inputs at construction time; a successfully constructed value is guaranteed
to be internally consistent.
§Canonical Address
Every ThresholdConfig has a canonical multisig address derived from the
sorted public keys and the (M, N) policy. This address is deterministic and
insertion-order-independent, so it can be used as a stable on-chain
identifier regardless of how committee members submit their keys.
Implementations§
Source§impl ThresholdConfig
impl ThresholdConfig
Sourcepub fn new(required: usize, public_keys: Vec<PublicKey>) -> Result<Self, Error>
pub fn new(required: usize, public_keys: Vec<PublicKey>) -> Result<Self, Error>
Construct a new threshold configuration.
§Parameters
required: M — the number of valid signatures required.public_keys: The N committee member public keys, in any order. Each key must be exactlyPUBLIC_KEY_BYTESbytes.
§Errors
Error::CommitteeTooSmallif fewer than 2 keys are supplied.Error::InvalidThresholdifrequiredis 0 or exceeds the number of keys.Error::InvalidPublicKeyLengthif any key has an incorrect byte length.
Sourcepub fn public_keys(&self) -> &[PublicKey]
pub fn public_keys(&self) -> &[PublicKey]
The ordered list of committee public keys.
Sourcepub fn address(&self) -> &MultisigAddress
pub fn address(&self) -> &MultisigAddress
The canonical multisig address for this committee and policy.
Sourcepub fn get_public_key(&self, index: usize) -> Option<&PublicKey>
pub fn get_public_key(&self, index: usize) -> Option<&PublicKey>
Return the public key at the given committee index.
Returns None if index >= total.
Trait Implementations§
Source§impl Clone for ThresholdConfig
impl Clone for ThresholdConfig
Source§fn clone(&self) -> ThresholdConfig
fn clone(&self) -> ThresholdConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ThresholdConfig
impl Debug for ThresholdConfig
Source§impl<'de> Deserialize<'de> for ThresholdConfig
impl<'de> Deserialize<'de> for ThresholdConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for ThresholdConfig
impl PartialEq for ThresholdConfig
Source§impl Serialize for ThresholdConfig
impl Serialize for ThresholdConfig
impl Eq for ThresholdConfig
impl StructuralPartialEq for ThresholdConfig
Auto Trait Implementations§
impl Freeze for ThresholdConfig
impl RefUnwindSafe for ThresholdConfig
impl Send for ThresholdConfig
impl Sync for ThresholdConfig
impl Unpin for ThresholdConfig
impl UnsafeUnpin for ThresholdConfig
impl UnwindSafe for ThresholdConfig
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more