Struct oasis_core_runtime::consensus::keymanager::churp::Status

source ·
pub struct Status {
Show 13 fields pub id: u8, pub runtime_id: Namespace, pub suite_id: SuiteId, pub threshold: u8, pub extra_shares: u8, pub handoff_interval: EpochTime, pub policy: SignedPolicySGX, pub handoff: EpochTime, pub checksum: Option<Hash>, pub committee: Vec<PublicKey>, pub next_handoff: EpochTime, pub next_checksum: Option<Hash>, pub applications: HashMap<PublicKey, Application>,
}
Expand description

Status represents the current state of a CHURP instance.

Fields§

§id: u8

A unique identifier within the key manager runtime.

§runtime_id: Namespace

The identifier of the key manager runtime.

§suite_id: SuiteId

The identifier of a cipher suite used for verifiable secret sharing and key derivation.

§threshold: u8

The degree of the secret-sharing polynomial.

In a (t,n) secret-sharing scheme, where t represents the threshold, any combination of t+1 or more shares can reconstruct the secret, while losing n-t or fewer shares still allows the secret to be recovered.

§extra_shares: u8

The minimum number of shares that can be lost to render the secret unrecoverable.

If t and e represent the threshold and extra shares, respectively, then the minimum size of the committee is t+e+1.

§handoff_interval: EpochTime

The time interval in epochs between handoffs.

A zero value disables handoffs.

§policy: SignedPolicySGX

A signed SGX access control policy.

§handoff: EpochTime

The epoch of the last successfully completed handoff.

The zero value indicates that no handoffs have been completed so far. Note that the first handoff is special and is called the dealer phase, in which nodes do not reshare or randomize shares but instead construct the secret and shares.

§checksum: Option<Hash>

The hash of the verification matrix from the last successfully completed handoff.

§committee: Vec<PublicKey>

A vector of nodes holding a share of the secret in the active handoff.

A client needs to obtain more than a threshold number of key shares from the nodes in this vector to construct the key.

§next_handoff: EpochTime

The epoch in which the next handoff will occur.

If an insufficient number of applications is received, the next handoff will be delayed by one epoch.

§next_checksum: Option<Hash>

The hash of the verification matrix from the current handoff.

The first candidate to confirm share reconstruction is the source of truth for the checksum. All other candidates need to confirm with the same checksum; otherwise, the applications will be annulled, and the nodes will need to apply for the new committee again.

§applications: HashMap<PublicKey, Application>

A map of nodes that wish to form the new committee.

Candidates are expected to generate a random bivariate polynomial, construct a verification matrix, compute its checksum, and submit an application one epoch in advance of the next scheduled handoff. Subsequently, upon the arrival of the handoff epoch, nodes must execute the handoff protocol and confirm the reconstruction of its share.

Trait Implementations§

source§

impl Clone for Status

source§

fn clone(&self) -> Status

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Status

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Decode for Status

source§

fn try_default() -> Result<Self, DecodeError>

Try to decode from a missing/null/undefined value.
source§

fn try_from_cbor_value(value: Value) -> Result<Self, DecodeError>

Try to decode from a given CBOR value.
§

fn try_from_cbor_value_default(value: Value) -> Result<Self, DecodeError>
where Self: Sized,

Try to decode from a given CBOR value, calling try_default in case the value is null or undefined.
source§

impl Default for Status

source§

fn default() -> Status

Returns the “default value” for a type. Read more
source§

impl Encode for Status

source§

fn into_cbor_value(self) -> Value

Encode the type into a CBOR Value.
§

fn is_empty(&self) -> bool

Whether the value is equal to the empty value for the type.
source§

impl EncodeAsMap for Status

§

fn into_cbor_value_map(self) -> Value
where Self: Sized,

Encode the type into a CBOR Map.
§

fn into_cbor_map(self) -> Vec<(Value, Value)>
where Self: Sized,

Encode the type into a CBOR Map, returning the map items.
source§

impl PartialEq for Status

source§

fn eq(&self, other: &Status) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Status

source§

impl StructuralPartialEq for Status

Auto Trait Implementations§

§

impl Freeze for Status

§

impl RefUnwindSafe for Status

§

impl Send for Status

§

impl Sync for Status

§

impl Unpin for Status

§

impl UnwindSafe for Status

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> SendSyncUnwindSafe for T
where T: Send + Sync + UnwindSafe + ?Sized,