mirror of
https://github.com/logos-co/logos-verified-proxy-module.git
synced 2026-08-27 13:01:09 +00:00
The supported-network set was written out in three places — the configure() whitelist, expectedChainId(), and the panel's hardcoded dropdown model — and adding per-chain defaults would have made four. They are now one table, exposed as supportedNetworks() so a UI builds its selector from the module's own whitelist. That is a safety property, not tidiness: `network` is one of two config fields whose value reaches a quit() inside Nim when upstream does not recognise it, so a UI list that drifts from the whitelist kills the host. The defaults are live-verified, not sourced from documentation. A beacon URL is only listed if /eth/v1/beacon/light_client/bootstrap/<root> answered 200, and an execution URL only if eth_getProof returned a result. Both filters matter: several hosts serve the standard beacon API but 404 the light_client namespace (Checkpointz instances especially, which answer /eth/v1/node/version and look healthy), and several long-published RPC URLs are now dead, key-gated or intermittent. mainnet and hoodi take drpc for execution because it answered eth_getProof deep in history where the pruning free tiers refuse anything past ~head-1024. That distinction is load-bearing here rather than cosmetic: the light client verifies against its FINALIZED header, which lags the head, so a pruning provider fails proofs for precisely the blocks this module asks about — and it surfaces as "distance to target block exceeds maximum proof window" long after start() reported success. Sepolia stays on publicnode because dRPC gates that chain behind a paid plan. Six tests pin the table's invariants: it covers exactly the three networks upstream compiles in, every entry is accepted by configure(), every chain id is non-zero (0 is the sentinel that would silently disable the post-start chain check), lookup rejects a plausible typo, non-empty defaults are well formed and all-or-nothing, and a profile's defaults are accepted as a real config. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>