pub struct ChainOriginDirectory { /* private fields */ }Expand description
Chain-backed origin directory: a lazy TTL cache over getOrigins, resolving
operators to active NodeIds against the shared capacity-bond reverse
projection. No background watcher and no whole-directory mirror — a single
getOrigins(ns) RPC fires only on a cold-namespace miss, and chain reads
therefore scale with the namespaces this node is actually asked to serve,
not the permissionless global namespace count.
Implementations§
Source§impl ChainOriginDirectory
impl ChainOriginDirectory
Sourcepub fn new<P>(
provider: P,
origin_assignment_addr: Address,
operator_to_node: Arc<RwLock<HashMap<Address, NodeId>>>,
staker_set: Arc<dyn StakerSet>,
content_deny: Arc<ContentDenylist>,
cache_capacity: usize,
positive_ttl: Duration,
negative_ttl: Duration,
metrics: Arc<Metrics>,
) -> Self
pub fn new<P>( provider: P, origin_assignment_addr: Address, operator_to_node: Arc<RwLock<HashMap<Address, NodeId>>>, staker_set: Arc<dyn StakerSet>, content_deny: Arc<ContentDenylist>, cache_capacity: usize, positive_ttl: Duration, negative_ttl: Duration, metrics: Arc<Metrics>, ) -> Self
Build a directory over the given OriginAssignment contract. No RPC:
the cache is lazy and populates on the first lookup miss for each
namespace.
Trait Implementations§
Source§impl Debug for ChainOriginDirectory
impl Debug for ChainOriginDirectory
Source§impl OriginDirectory for ChainOriginDirectory
impl OriginDirectory for ChainOriginDirectory
Source§fn lookup_origins<'life0, 'async_trait>(
&'life0 self,
namespace_id: U256,
) -> Pin<Box<dyn Future<Output = Vec<NodeId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn lookup_origins<'life0, 'async_trait>(
&'life0 self,
namespace_id: U256,
) -> Pin<Box<dyn Future<Output = Vec<NodeId>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Return the operator
NodeIds authorised as origins for namespace_id,
already filtered to only currently-active stakers (the active == true
filter from CapacityBond.nodeIdOf per ADR 022 §FIND_VALUE Flow “Origin
discovery”). Read moreAuto Trait Implementations§
impl !Freeze for ChainOriginDirectory
impl !RefUnwindSafe for ChainOriginDirectory
impl !UnwindSafe for ChainOriginDirectory
impl Send for ChainOriginDirectory
impl Sync for ChainOriginDirectory
impl Unpin for ChainOriginDirectory
impl UnsafeUnpin for ChainOriginDirectory
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> 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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.