Skip to main content

ResolvedBlockchain

Struct ResolvedBlockchain 

Source
pub struct ResolvedBlockchain {
Show 26 fields pub rpc_url: String, pub eth_keystore: PathBuf, pub keystore_password_file: Option<PathBuf>, pub payment_pool_address: String, pub capacity_bond_address: String, pub origin_assignment_address: Option<String>, pub origin_directory_positive_ttl_sec: u64, pub origin_directory_negative_ttl_sec: u64, pub origin_directory_cache_capacity: usize, pub publisher_registry_address: Option<String>, pub slash_judge_address: String, pub content_blacklist_address: Option<String>, pub content_blacklist_poll_interval_sec: u64, pub chain_staleness_grace_sec: u64, pub chain_id: u64, pub rpc_watchdog_interval_sec: u64, pub event_poll_interval_ms: u64, pub get_logs_max_block_span: u64, pub fee_shares_poll_interval_sec: u64, pub redeem_threshold_micro_usdc: u64, pub redeem_max_vouchers_per_tx: u64, pub redeem_interval_secs: u64, pub buyer_working_deposit_micro_usdc: u64, pub buyer_max_approve: bool, pub pool_min_remaining_deposit_micro_usdc: u64, pub pool_floor_signer_live_windows: u64,
}
Expand description

Resolved blockchain fields.

Fields§

§rpc_url: String

JSON-RPC endpoint URL.

§eth_keystore: PathBuf

Ethereum keystore file path.

§keystore_password_file: Option<PathBuf>

Optional path to a file holding the keystore password. CLI/env-only; not surfaced via the TOML schema (passwords don’t belong in config files even by reference). The runtime first consults the DECDN_KEYSTORE_PASSWORD env var, then this file, then prompts on stdin if connected to a TTY. Each source is chosen by presence, so a set-but-empty env var and an empty file both mean an empty password.

§payment_pool_address: String

PaymentPool contract address — the shared payment pool this node registers against for buyer and seller flows alike.

§capacity_bond_address: String

CapacityBond contract address.

§origin_assignment_address: Option<String>

OriginAssignment contract address. Some only when the operator opts into the chain-backed origin directory; None => empty directory, so the FIND_VALUE routing fallback (ADR 022) resolves nothing.

§origin_directory_positive_ttl_sec: u64

Positive-hit TTL for the lazy origin directory cache, in seconds: how long a resolved, non-empty getOrigins(namespaceId) set is served before a re-read. Defaults to super::DEFAULT_ORIGIN_DIRECTORY_POSITIVE_TTL_SEC.

§origin_directory_negative_ttl_sec: u64

Negative-hit TTL for the lazy origin directory cache, in seconds: how long “this namespace has no origins / does not exist” is cached. Defaults to super::DEFAULT_ORIGIN_DIRECTORY_NEGATIVE_TTL_SEC.

§origin_directory_cache_capacity: usize

Max distinct namespaces held in the lazy origin directory cache (LRU eviction). Defaults to super::DEFAULT_ORIGIN_DIRECTORY_CACHE_CAPACITY.

§publisher_registry_address: Option<String>

PublisherRegistry contract address. Independent of the origin directory (the publish CLI’s namespace create target); not consumed by the node.

§slash_judge_address: String

SlashJudge contract address — the EIP-712 verifyingContract for slash_sig signatures (ADR 014). Required (no default).

§content_blacklist_address: Option<String>

Required ContentBlacklist contract address (ADR 011/019/031). Successful node config resolution always produces Some; the runtime rejects None.

§content_blacklist_poll_interval_sec: u64

Seconds between the blacklist watcher’s periodic replay + re-scope pass. Defaults to super::DEFAULT_CONTENT_BLACKLIST_POLL_INTERVAL_SEC. Only used when content_blacklist_address is set.

§chain_staleness_grace_sec: u64

Seconds the node may go without a successful chain read before the serve and probe paths refuse (ADR 011 § Serving while chain-stale). Defaults to super::DEFAULT_CHAIN_STALENESS_GRACE_SEC. Always evaluated; a large value opts out. Only used when content_blacklist_address is set.

§chain_id: u64

EIP-712 chainId for the slash_sig domain separator. Defaults to super::DEFAULT_CHAIN_ID (Arbitrum Sepolia) when unset.

§rpc_watchdog_interval_sec: u64

Seconds between RPC connectivity watchdog probes. 0 disables the watchdog entirely; otherwise the resolver enforces a minimum (see MIN_RPC_WATCHDOG_INTERVAL_SEC).

§event_poll_interval_ms: u64

Milliseconds between chain-event poll ticks (#1011, #1106). Two unrelated consumers read this one value:

  • the MultiplexedPoller’s poll_interval — the eth_getLogs tick cadence shared by every chain watcher’s Route.
  • alloy’s pending-transaction receipt heartbeat, applied to every provider via the node’s with_poll_interval (client().set_poll_interval) and consumed by PendingTransactionBuilder::get_receipt when the node awaits a mined settlement / pool tx. This is also what overrides alloy’s localhost-detected 250 ms default.

Defaults to 7000 ms (DEFAULT_EVENT_POLL_INTERVAL_MS); the resolver enforces a minimum (see MIN_EVENT_POLL_INTERVAL_MS).

§get_logs_max_block_span: u64

Ceiling on the block span of one chain-watcher eth_getLogs request (the MultiplexedPoller’s window). The poller starts here. When the provider rejects a range, it sets its span to half the rejected window’s length, and it doubles back toward this ceiling after a streak of accepted windows. Defaults to super::DEFAULT_GET_LOGS_MAX_BLOCK_SPAN; always >= 1.

§fee_shares_poll_interval_sec: u64

Seconds between authoritative FeeRouter.getShares() re-reads by the fee-shares watcher (ADR 041 / ADR 016 § Tunable Economics). Safety-net cadence alongside the SharesUpdated event subscription. Defaults to 3600s (DEFAULT_FEE_SHARES_POLL_INTERVAL_SEC); the resolver rejects 0.

§redeem_threshold_micro_usdc: u64

Per-chunk redemption floor (base units, µUSDC). The seller settlement path submits an on-chain redemption transaction for a chunk of lanes only once the aggregate un-redeemed value across that chunk’s lanes reaches this floor; every lane in a submitted chunk settles. Defaults to 1 USDC (1_000_000 µUSDC) when unset.

§redeem_max_vouchers_per_tx: u64

Maximum vouchers per redeemMany transaction (the redemption chunk size). Defaults to 300 (DEFAULT_REDEEM_MAX_VOUCHERS_PER_TX); the resolver rejects 0.

§redeem_interval_secs: u64

Seconds between the redeemer self-tick sweeps (#327, #751): the low-frequency backstop that sweeps every lane and redeems the chunks that clear the redemption floor, independent of the advisory per-voucher hints. Defaults to 300s (DEFAULT_REDEEM_INTERVAL_SECS); the resolver rejects 0.

§buyer_working_deposit_micro_usdc: u64

Deposit (base units, µUSDC) the buyer path escrows when it opens a pool, and the target every top-up restores the pool balance toward. Defaults to 10 USDC (10_000_000). Guaranteed nonzero (the resolver rejects 0; the pool’s openPool reverts on a zero deposit).

§buyer_max_approve: bool

Whether the buyer path issues a one-time max USDC approval for the PaymentPool contract at startup (#744, ADR 003 § Deposit Economics). Defaults to true; set false to manage the allowance out-of-band (e.g. a tighter per-pool approval policy).

§pool_min_remaining_deposit_micro_usdc: u64

The node’s refundable floor M (base units, µUSDC), sized per ADR 003 § Sizing (M = k·ρ·B·Δ). The node stops serving a pool once its remaining on-chain balance minus M can no longer cover the next credit window. Defaults to 1 USDC (1_000_000 µUSDC).

§pool_floor_signer_live_windows: u64

Per-signer LIVE concurrency cap k, in ramp-start credit windows (ADR 003 § Pool solvency, per-signer floor isolation): the most live un-vouchered floor reservation any one capability signer may hold against a pool, k · one credit window. Lower-clamped to one window at use. Defaults to 8 — see decdn_common::config::DEFAULT_POOL_FLOOR_SIGNER_LIVE_WINDOWS.

Trait Implementations§

Source§

impl Debug for ResolvedBlockchain

Source§

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

Formats the value using the given formatter. 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<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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> MaybeSend for T
where T: Send,

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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