pub struct Ack<S: Scheme, D: Digest> {
pub item: Item<D>,
pub epoch: Epoch,
pub attestation: Attestation<S>,
}Expand description
Acknowledgment (ack) represents a validator’s vote on an item. Multiple acks can be recovered into a certificate for consensus.
Fields§
§item: Item<D>The item being acknowledged
epoch: EpochThe epoch in which this acknowledgment was created
attestation: Attestation<S>Scheme-specific attestation material
Implementations§
Source§impl<S: Scheme, D: Digest> Ack<S, D>
impl<S: Scheme, D: Digest> Ack<S, D>
Sourcepub fn verify(&self, scheme: &S, namespace: &[u8]) -> boolwhere
S: Scheme<D>,
pub fn verify(&self, scheme: &S, namespace: &[u8]) -> boolwhere
S: Scheme<D>,
Verifies the attestation on this acknowledgment.
Returns true if the attestation is valid for the given namespace and public key.
Domain separation is automatically applied to prevent signature reuse.
Sourcepub fn sign(
scheme: &S,
namespace: &[u8],
epoch: Epoch,
item: Item<D>,
) -> Option<Self>where
S: Scheme<D>,
pub fn sign(
scheme: &S,
namespace: &[u8],
epoch: Epoch,
item: Item<D>,
) -> Option<Self>where
S: Scheme<D>,
Creates a new acknowledgment by signing an item with a validator’s key.
The signature uses domain separation to prevent cross-protocol attacks.
§Determinism
Signatures produced by this function are deterministic and safe for consensus.
Trait Implementations§
Source§impl<S: Scheme, D: Digest> EncodeSize for Ack<S, D>
impl<S: Scheme, D: Digest> EncodeSize for Ack<S, D>
Source§fn encode_size(&self) -> usize
fn encode_size(&self) -> usize
Returns the encoded size of this value (in bytes).
Source§impl<S: Scheme, D: Digest> Read for Ack<S, D>
impl<S: Scheme, D: Digest> Read for Ack<S, D>
impl<S: Eq + Scheme, D: Eq + Digest> Eq for Ack<S, D>
impl<S: Scheme, D: Digest> StructuralPartialEq for Ack<S, D>
Auto Trait Implementations§
impl<S, D> Freeze for Ack<S, D>
impl<S, D> RefUnwindSafe for Ack<S, D>
impl<S, D> Send for Ack<S, D>
impl<S, D> Sync for Ack<S, D>
impl<S, D> Unpin for Ack<S, D>
impl<S, D> UnwindSafe for Ack<S, D>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)Source§impl<T> Encode for Twhere
T: Write + EncodeSize,
impl<T> Encode for Twhere
T: Write + EncodeSize,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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>
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