SettleMint
ComponentsInfrastructure

Broadcast

The Broadcast is DALP's in-platform RPC control plane for outbound EVM JSON-RPC traffic. It routes every chain call across a pool of configured upstreams, scores them on tip lag and health, and retries and fails over transparently so application code keeps using one network configuration.

What the Broadcast does

The Broadcast is DALP's in-platform RPC control plane for outbound EVM JSON-RPC traffic. Instead of pointing each service at one blockchain node, the platform keeps a pool of upstream RPC endpoints for every network and routes calls across that pool itself.

An operator configures a network once, with one or more upstream endpoints. The platform then handles the rest: it scores each upstream on how far it lags the chain tip, routes traffic to a healthy and current upstream, retries transient failures, and fails over to another upstream when one goes down. Application services keep reading from a single network configuration while the control plane manages provider health, credentials, and failover behind it.

An architect planning a bank-grade deployment needs to know how chain reads survive a slow or failed node, where to configure upstreams, and which controls stay with the deployment environment. This page answers those questions: routing and health scoring, upstream configuration, and the platform-versus-environment security boundary.

The control plane does not decide node ownership, provider trust, RPC caller authentication, or mutual TLS policy. Those controls belong to the target environment, its ingress or service-mesh layer, and the selected node or provider operating model.

Architecture

Rendering diagram...

The control plane runs inside the platform rather than as a separate gateway pod. A single health-scoring poller measures each upstream and writes scores to a shared store, and every service reads those scores to select the same healthy upstream. The shared store also backs an optional historical-response cache.

How upstream selection works

The control plane keeps one upstream active per network and switches deliberately, not on every request. Three layers decide where a call goes.

LayerWhat it does
Tip-lag filterExcludes any upstream whose head trails the chain tip by more than the configured maxBlockHeadLag, so calls never read from a stale node.
Health scoreRanks the remaining upstreams on a composite score from block-head lag, finalization lag, latency, and error rate. The highest-scoring upstream wins.
Anti-flap guardsA hysteresis margin and a minimum switch interval keep the active upstream stable, so a small score wobble does not bounce traffic between providers.

When the active upstream fails a request, the control plane retries with backoff and jitter, then fails over to the next healthy upstream within the same request. If the shared health scores are stale or unavailable, each service falls back to a local liveness check rather than trusting an outdated ranking.

A weight on an upstream orders which healthy upstream is preferred when scores are close. Higher weight wins.

What operators configure

You define RPC connectivity per network in DALP configuration. Each network names one or more upstream endpoints, and the control plane supplies sensible defaults for everything else.

FieldWhat it controls
urlA single RPC endpoint for the network. Use it when one upstream is enough.
urlsA list of upstreams for failover and health-scored selection. Each entry is a URL string or an object with per-upstream auth and weight.
wsUrlA WebSocket endpoint for real-time subscriptions. The platform falls back to HTTP polling when it is absent.
allowPrivateUpstreamsPermits loopback, RFC 1918, and other private-range upstreams for local or in-cluster nodes. Defaults to off so the guard protects public deployments.
healthTip-lag, score, and anti-flap settings for multi-upstream selection, including maxBlockHeadLag and the minimum score to stay in rotation.
limitsPer-network eth_getLogs bounds for address count, block range, and concurrency.
retryCount, timeoutRetry attempts and request timeout applied before a call fails over.

Each upstream entry can carry its own authentication, either an API-key header or HTTP basic auth, so the platform can reach providers that require credentials without exposing them in application code.

networks:
  mainnet:
    chain: mainnet
    rpc:
      urls:
        - https://primary-node.example.com
        - url: https://provider.example.com
          auth:
            type: apiKey
            headerName: Authorization
            value: ${MAINNET_PROVIDER_KEY}
          weight: 2
      wsUrl: wss://primary-node.example.com
      health:
        maxBlockHeadLag: 50

Keep endpoint URLs and credentials in your deployment configuration or secret-management process, not in application code.

Node connection model and security boundary

DALP does not require one fixed RPC node hosting model. The control plane routes to self-hosted full nodes, cloud-hosted nodes, managed RPC providers, or any combination. Your bank can operate a dedicated full node, register it as an upstream, and keep its credentials and network policy under your own operating model. That node needs to expose an EVM JSON-RPC interface the platform can reach; the control plane handles routing, scoring, and failover.

Rendering diagram...
QuestionDALP answer
Node sourceConfigure each upstream endpoint explicitly. The upstream can be a bank-operated full node, a cloud-hosted node, or a managed RPC provider.
RPC authenticationAttach API-key or basic-auth credentials to each upstream in DALP configuration rather than in application code. For externally exposed access, add caller authentication at the ingress, service-mesh, or edge layer.
Private and in-cluster nodesThe platform blocks private-range upstream addresses by default to guard against server-side request forgery. Set allowPrivateUpstreams on the network when you intentionally point at loopback or in-cluster node DNS.
Tampered or inconsistent nodesThe tip-lag filter and health scoring exclude an upstream that falls behind the chain tip or returns errors. This does not replace consensus validation by a trusted full node. Use a trusted node when you require independent verification.
Dedicated bank nodeSupported as an upstream pattern. Register the bank-operated full node and keep direct node credentials and network policy under the bank's operating model.
FailoverAdd more than one upstream to a network. The control plane scores them and fails over to a healthy upstream within the same request.
TLS and mutual TLSUse encrypted https or wss upstream URLs. Mutual TLS is an environment control provided by the ingress controller, service mesh, edge gateway, or upstream node and provider; it is not an application-layer guarantee added by DALP.

DALP owns routing, health scoring, and failover. Node ownership, upstream authentication, and independent validation sit with the deployment environment, outside the platform boundary.

Monitor pool health from the Console

A platform administrator manages and monitors RPC connectivity from the RPC control plane view in the Console. The view has two parts.

  • Upstream pool editor. Configure the per-network upstream pool, including each endpoint and its provider-specific credential fields. Saved pools take effect without a restart.
  • Health monitoring. A per-network table shows each upstream's liveness state, its tip lag behind the chain head, the upstream currently serving traffic, and the most recent failover or throttle event.

Each upstream reports one of four liveness states.

StateMeaning
HealthyThe upstream is current and scoring well, so it is eligible to serve traffic.
ExcludedThe upstream is reachable but trails the chain tip beyond the lag limit, so selection skips it for now.
UnhealthyThe upstream is failing or unreachable and is out of rotation until it recovers.
UnknownNo recent score is available, often during cold start or when the shared score store is degraded.

When the shared health store is unavailable, the view shows a clear "scores stale" banner so an operator does not read a single pod's local fallback as the authoritative pool state.

Request handling

The control plane applies per-request retry and timeout policy before a call fails over to another upstream. Configure these per network.

ControlDefaultBehaviour
Request timeout10 secondsThe per-attempt deadline for a single upstream call before the control plane retries or fails over.
Retry attempts3Transient failures retry with exponential backoff and jitter before the request moves to another upstream.
Request deadline120 secondsThe whole-request budget across every retry and failover for one JSON-RPC call.
Upstream attempts32The maximum number of upstream attempts spent on one request across retries and failovers.

State-changing submissions such as eth_sendRawTransaction do not retry by default, so the platform never resubmits a transaction it cannot prove failed. The Transaction Signer owns submission and confirmation tracking for writes.

Log query limits

The Ledger Index and other read paths bound eth_getLogs calls against per-network limits before they reach an upstream: a maximum address count, a maximum block range, and a concurrency cap. These keep a single log scan from sweeping an unbounded range and let the platform adapt concurrency down when an upstream signals rate limiting. The same bounds are enforced on the public JSON-RPC endpoint.

Where resilience is applied

RPC resilience controls operate at distinct layers. Keep the responsibility split clear when you design an environment.

LayerControlBehaviour
RPC control planeUpstream selection and policyScores upstreams on tip lag and health, selects a healthy one, retries transient failures, and fails over within a request.
Network configUpstream definitionA network names one upstream with rpc.url or a pool with rpc.urls, plus per-upstream auth, weights, and health settings.
Ledger IndexLog-fetch limitsPer-network rpc.limits bound eth_getLogs address batching, block range, and concurrency before requests reach an upstream.
Upstream nodeExecution client behaviourThe node or provider still determines supported JSON-RPC methods, finality behaviour, trace and debug availability, and rate limits.

For production deployments, configure more than one upstream per network so the control plane has a healthy target to fail over to.

Operational notes

  • Configure at least one upstream RPC endpoint for each EVM network your deployment serves, and more than one where you need failover or load distribution.
  • Use encrypted https and wss upstream URLs, and set allowPrivateUpstreams only when you intentionally target in-cluster or loopback nodes.
  • Watch the Console health view for upstreams that drift into the Excluded or Unhealthy state, and for the stale-scores banner that signals a degraded shared store.
  • Track request volume, latency, upstream tip lag, failover events, and rate-limit responses in your observability tooling alongside chain node metrics.

See also

On this page