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: StringJSON-RPC endpoint URL.
eth_keystore: PathBufEthereum 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: StringPaymentPool contract address — the shared payment pool this node
registers against for buyer and seller flows alike.
capacity_bond_address: StringCapacityBond 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: u64Positive-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: u64Negative-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: usizeMax 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: StringSlashJudge 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: u64Seconds 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: u64Seconds 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: u64EIP-712 chainId for the slash_sig domain separator. Defaults to
super::DEFAULT_CHAIN_ID (Arbitrum Sepolia) when unset.
rpc_watchdog_interval_sec: u64Seconds 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: u64Milliseconds between chain-event poll ticks (#1011, #1106). Two unrelated consumers read this one value:
- the
MultiplexedPoller’spoll_interval— theeth_getLogstick cadence shared by every chain watcher’sRoute. - alloy’s pending-transaction receipt heartbeat, applied to every provider
via the node’s
with_poll_interval(client().set_poll_interval) and consumed byPendingTransactionBuilder::get_receiptwhen the node awaits a mined settlement / channel 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: u64Ceiling 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.
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: u64Per-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: u64Maximum vouchers per redeemMany transaction (the redemption chunk size).
Defaults to 300 (DEFAULT_REDEEM_MAX_VOUCHERS_PER_TX); the resolver
rejects 0.
redeem_interval_secs: u64Seconds 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: u64Deposit (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: boolWhether 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: u64The 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: u64Per-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§
Auto Trait Implementations§
impl Freeze for ResolvedBlockchain
impl RefUnwindSafe for ResolvedBlockchain
impl Send for ResolvedBlockchain
impl Sync for ResolvedBlockchain
impl Unpin for ResolvedBlockchain
impl UnsafeUnpin for ResolvedBlockchain
impl UnwindSafe for ResolvedBlockchain
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> 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> ⓘ
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