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.
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 Decode for Status
impl Decode for Status
source§fn try_default() -> Result<Self, DecodeError>
fn try_default() -> Result<Self, DecodeError>
source§fn try_from_cbor_value(value: Value) -> Result<Self, DecodeError>
fn try_from_cbor_value(value: Value) -> Result<Self, DecodeError>
§fn try_from_cbor_value_default(value: Value) -> Result<Self, DecodeError>where
Self: Sized,
fn try_from_cbor_value_default(value: Value) -> Result<Self, DecodeError>where
Self: Sized,
try_default
in case the value is null or
undefined.source§impl EncodeAsMap for Status
impl EncodeAsMap for Status
§fn into_cbor_value_map(self) -> Valuewhere
Self: Sized,
fn into_cbor_value_map(self) -> Valuewhere
Self: Sized,
§fn into_cbor_map(self) -> Vec<(Value, Value)>where
Self: Sized,
fn into_cbor_map(self) -> Vec<(Value, Value)>where
Self: Sized,
source§impl PartialEq for Status
impl PartialEq for Status
impl Eq for Status
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§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.