pub struct ClientPow {
pub peer_verification_key: VerificationKeyBytes,
pub peer_pq_commitment_bytes: PQCommitmentBytes,
pub peer_pow: PeerPow,
}Expand description
A client-side best-ever proof-of-work token, used as a reputation credential in the trust-sensitive parts of the protocol.
Unlike PeerPow, which is scoped to a single request, ClientPow is the hardest
PoW a particular client has ever produced against a canonical sponsor target. It is
carried on feedback and healing requests — the operations that let peers influence what
content is propagated or suppressed — so the recipient can weight the sender’s opinion
by how much work they have ever invested in an identity. This makes Sybil-style attacks
expensive: voting with many fresh clients means doing all that work many times.
The struct bundles the peer’s verification key, PQ commitment, and the underlying
PeerPow so a verifier has everything it needs in one place.
Fields§
§peer_verification_key: VerificationKeyBytes§peer_pq_commitment_bytes: PQCommitmentBytes§peer_pow: PeerPowImplementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ClientPow
impl<'de> Deserialize<'de> for ClientPow
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for ClientPow
Auto Trait Implementations§
impl Freeze for ClientPow
impl RefUnwindSafe for ClientPow
impl Send for ClientPow
impl Sync for ClientPow
impl Unpin for ClientPow
impl UnsafeUnpin for ClientPow
impl UnwindSafe for ClientPow
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more