pub struct PreflightRequest {
pub app_entry_hash: HoloHash<Entry>,
pub signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>,
pub optional_signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>,
pub minimum_optional_signing_agents: u8,
pub enzymatic: bool,
pub session_times: CounterSigningSessionTimes,
pub action_base: ActionBase,
pub preflight_bytes: PreflightBytes,
}Expand description
The same PreflightRequest is sent to every agent. Each agent signs this data as part of their PreflightResponse. Every preflight must be identical and signed by every agent for a session to be valid.
Fields§
§app_entry_hash: HoloHash<Entry>The hash of the app entry, as if it were not countersigned. The final entry hash will include the countersigning session.
signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>The agents that are participating in this countersignature session.
optional_signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>The optional additional M of N signers. If there are additional signers then M MUST be the majority of N. If there are additional signers then the enzyme MUST be used and is the first signer in BOTH signing_agents and optional_signing_agents.
minimum_optional_signing_agents: u8The M in the M of N signers. M MUST be strictly greater than than N / 2 and NOT larger than N.
enzymatic: boolThe first signing agent (index 0) is acting as an enzyme. If true AND optional_signing_agents are set then the first agent MUST be the same in both signing_agents and optional_signing_agents.
session_times: CounterSigningSessionTimesThe session times. Session actions must all have the same timestamp, which is the session offset.
action_base: ActionBaseThe action information that is shared by all agents. Contents depend on the action type, create, update, etc.
preflight_bytes: PreflightBytesThe preflight bytes for session.
Implementations§
Source§impl PreflightRequest
impl PreflightRequest
Sourcepub fn try_new(
app_entry_hash: HoloHash<Entry>,
signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>,
optional_signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>,
minimum_optional_signing_agents: u8,
enzymatic: bool,
session_times: CounterSigningSessionTimes,
action_base: ActionBase,
preflight_bytes: PreflightBytes,
) -> Result<PreflightRequest, CounterSigningError>
pub fn try_new( app_entry_hash: HoloHash<Entry>, signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>, optional_signing_agents: Vec<(HoloHash<Agent>, Vec<Role>)>, minimum_optional_signing_agents: u8, enzymatic: bool, session_times: CounterSigningSessionTimes, action_base: ActionBase, preflight_bytes: PreflightBytes, ) -> Result<PreflightRequest, CounterSigningError>
Fallible constructor.
Sourcepub fn check_integrity(&self) -> Result<(), CounterSigningError>
pub fn check_integrity(&self) -> Result<(), CounterSigningError>
Combined integrity checks.
Sourcepub fn check_agents_dupes(&self) -> Result<(), CounterSigningError>
pub fn check_agents_dupes(&self) -> Result<(), CounterSigningError>
Verify there are no duplicate agents to sign.
Sourcepub fn check_agents_len(&self) -> Result<(), CounterSigningError>
pub fn check_agents_len(&self) -> Result<(), CounterSigningError>
Verify the number of signing agents is within the correct range.
Sourcepub fn check_agents_optional(&self) -> Result<(), CounterSigningError>
pub fn check_agents_optional(&self) -> Result<(), CounterSigningError>
Verify the optional signing agents.
Sourcepub fn check_agents(&self) -> Result<(), CounterSigningError>
pub fn check_agents(&self) -> Result<(), CounterSigningError>
Verify the preflight request agents.
Sourcepub fn check_enzyme(&self) -> Result<(), CounterSigningError>
pub fn check_enzyme(&self) -> Result<(), CounterSigningError>
Verify everything about the enzyme.
Trait Implementations§
Source§impl Clone for PreflightRequest
impl Clone for PreflightRequest
Source§fn clone(&self) -> PreflightRequest
fn clone(&self) -> PreflightRequest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PreflightRequest
impl Debug for PreflightRequest
Source§impl<'de> Deserialize<'de> for PreflightRequest
impl<'de> Deserialize<'de> for PreflightRequest
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<PreflightRequest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<PreflightRequest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Hash for PreflightRequest
impl Hash for PreflightRequest
Source§impl PartialEq for PreflightRequest
impl PartialEq for PreflightRequest
Source§impl Serialize for PreflightRequest
impl Serialize for PreflightRequest
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for PreflightRequest
impl StructuralPartialEq for PreflightRequest
Auto Trait Implementations§
impl Freeze for PreflightRequest
impl RefUnwindSafe for PreflightRequest
impl Send for PreflightRequest
impl Sync for PreflightRequest
impl Unpin for PreflightRequest
impl UnwindSafe for PreflightRequest
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> CallHasher for T
impl<T> CallHasher for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.