Skip to main content

ProviderReputationStore

Struct ProviderReputationStore 

Source
pub struct ProviderReputationStore { /* private fields */ }
Expand description

Local provider reputation database.

Implementations§

Source§

impl ProviderReputationStore

Source

pub fn new(config: ReputationConfig) -> Self

Source

pub fn with_database( database: IndexingDatabase, config: ReputationConfig, ) -> Result<Self>

Create a store backed by an indexing database.

Reputations and signal sequences are hydrated from the database on construction. Mutations are persisted through the database.

§Errors

Returns an error if the database cannot be read.

Source

pub fn with_policy(config: ReputationConfig, policy: TrustPolicy) -> Self

Source

pub const fn config(&self) -> &ReputationConfig

Source

pub fn set_policy(&mut self, policy: TrustPolicy)

Source

pub const fn set_reporter(&mut self, reporter: PublicKey)

Configure the reporter identity used for reputation transitions.

Source

pub fn trust_reporter(&mut self, reporter: &PublicKey) -> Result<()>

§Errors

Returns an error when the reporter identity is not a valid Ed25519 key.

Source

pub fn reputation(&self, provider: PublicKey) -> ProviderReputation

Source

pub fn score(&self, provider: PublicKey, now: u64) -> f64

Source

pub fn record_fetch_result( &mut self, provider: PublicKey, success: bool, kind: FetchFailureKind, now: u64, )

Source

pub fn record_success(&mut self, provider: PublicKey, now: u64)

Source

pub fn record_failure( &mut self, provider: PublicKey, kind: FetchFailureKind, now: u64, )

Source

pub fn is_banned(&self, provider: PublicKey, now: u64) -> bool

Source

pub fn auto_ban_until(&self, provider: PublicKey) -> Option<u64>

Source

pub fn auto_ban_count(&self, provider: PublicKey) -> u32

Source

pub fn rejoin(&mut self, provider: PublicKey, now: u64) -> bool

Clear the active timeout while retaining its backoff history.

Source

pub fn should_skip_provider( &self, provider: PublicKey, now: u64, threshold: f64, ) -> bool

Source

pub fn rank_providers(&self, now: u64, hash: Hash) -> Vec<PublicKey>

Return all known providers, ranked by score and then hash distance.

Source

pub fn rank_provider_list( &self, now: u64, hash: Hash, providers: &[PublicKey], ) -> Vec<PublicKey>

Source

pub fn purge_stale(&mut self, now: u64, ttl: Duration)

Source

pub fn queue_trust_signal( &mut self, signal: ProviderTrustSignal, ) -> Result<bool>

Queue one observation, coalescing identical observations in the batch.

§Errors

Returns an error when the signal structure is invalid.

Source

pub fn pending_trust_signals(&self) -> &[ProviderTrustSignal]

Source

pub fn take_pending_trust_signals(&mut self) -> Vec<ProviderTrustSignal>

Source

pub fn set_max_signal_batch(&mut self, max_signal_batch: usize)

Source

pub fn ingest_trust_signal( &mut self, signal: ProviderTrustSignal, ) -> Result<bool>

Accept a signed observation from a locally trusted reporter.

§Errors

Returns an error when the signal is malformed, expired, or unsigned.

Source

pub async fn publish_signal( &self, gossip: &GossipService, sender: &GossipSender, signal: &ProviderTrustSignal, ) -> Result<()>

Publish a signed signal to the provider-trust stream.

§Errors

Returns an error when the signal is invalid or gossip rejects the publication.

Source

pub async fn subscribe_trust_stream( &self, gossip: &GossipService, bootstrap: Vec<PublicKey>, ) -> Result<GossipTopic>

Subscribe to the provider-trust stream.

§Errors

Returns an error when the gossip subscription cannot be created.

Trait Implementations§

Source§

impl Clone for ProviderReputationStore

Source§

fn clone(&self) -> ProviderReputationStore

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ProviderReputationStore

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ProviderReputationStore

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more