pub struct Ack<V: Variant, D: Digest> {
pub item: Item<D>,
pub epoch: Epoch,
pub signature: PartialSignature<V>,
}
Expand description
Acknowledgment (ack) represents a validator’s partial signature on an item. Multiple acks can be recovered into a threshold signature for consensus.
Fields§
§item: Item<D>
The item being acknowledged
epoch: Epoch
The epoch in which this acknowledgment was created
signature: PartialSignature<V>
Partial signature on the item using the validator’s threshold share
Implementations§
Source§impl<V: Variant, D: Digest> Ack<V, D>
impl<V: Variant, D: Digest> Ack<V, D>
Sourcepub fn verify(&self, namespace: &[u8], identity: &Public<V>) -> bool
pub fn verify(&self, namespace: &[u8], identity: &Public<V>) -> bool
Verifies the partial signature on this acknowledgment.
Returns true
if the signature is valid for the given namespace and public key.
Domain separation is automatically applied to prevent signature reuse.
Sourcepub fn sign(
namespace: &[u8],
epoch: Epoch,
share: &Share,
item: Item<D>,
) -> Self
pub fn sign( namespace: &[u8], epoch: Epoch, share: &Share, item: Item<D>, ) -> Self
Creates a new acknowledgment by signing an item with a validator’s threshold share.
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<V: Variant, D: Digest> EncodeSize for Ack<V, D>
impl<V: Variant, D: Digest> EncodeSize for Ack<V, D>
Source§fn encode_size(&self) -> usize
fn encode_size(&self) -> usize
Returns the encoded size of this value (in bytes).
Source§impl<V: Variant, D: Digest> Read for Ack<V, D>
impl<V: Variant, D: Digest> Read for Ack<V, D>
impl<V: Eq + Variant, D: Eq + Digest> Eq for Ack<V, D>
impl<V: Variant, D: Digest> StructuralPartialEq for Ack<V, D>
Auto Trait Implementations§
impl<V, D> Freeze for Ack<V, D>
impl<V, D> RefUnwindSafe for Ack<V, D>
impl<V, D> Send for Ack<V, D>
impl<V, D> Sync for Ack<V, D>
impl<V, D> Unpin for Ack<V, D>
impl<V, D> UnwindSafe for Ack<V, D>
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> 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