feat(electrumx): add bare IP peer for relay.testls.bit (23.158.233.10)

Adds the underlying IP literal as a separate ElectrumX entry in both
the clearnet default list and the Tor list, mirroring how
46.229.238.187:57002 sits beside nmc2.bitcoins.sk:57002.

Why a bare IP entry alongside a hostname entry?

  - Robustness against unhealthy ICANN DNS paths. The relay.testls.bit
    name resolves through Namecoin (.bit), which most resolvers ship
    via a NIP-05 lookup against ElectrumX itself \u2014 chicken-and-egg if
    the only listed servers ARE .bit-resolved. A bare IP gives the
    resolver pool a completely-DNS-free anchor.
  - Same physical box, same self-signed cert, same SHA-256 (DER) pin
    (bb0b35e6\u20266cba) added in the prior commit, so no new cert pin is
    needed.

The .onion entry added in the prior commit already serves as the
DNS-free Tor anchor; this commit handles the equivalent for clearnet.

Verified end-to-end:
  node tls direct connect 23.158.233.10:50002 (no SNI) -> server.version
  reply ElectrumX 1.16.0; cert SHA-256 matches the pinned hash exactly.
This commit is contained in:
mstrofnone
2026-05-03 17:37:10 +10:00
parent 737464e528
commit 07f6c352e8
@@ -105,6 +105,11 @@ val DEFAULT_ELECTRUMX_SERVERS =
// Also exposed as wss://relay.testls.bit/electrumx (browser-viable, future
// WS transport — see N1 §"Browser / WebSocket transport" in mstrofnone/nips).
ElectrumxServer("relay.testls.bit", 50002, useSsl = true, usePinnedTrustStore = true),
// Bare IP peer of relay.testls.bit — same operator, same cert, same box.
// Listed as a separate entry (mirrors how 46.229.238.187 sits beside
// nmc2.bitcoins.sk) so resolvers that have an unhealthy DNS path can
// still reach the server. Cert pin works by SHA-256 of DER, no SNI required.
ElectrumxServer("23.158.233.10", 50002, useSsl = true, usePinnedTrustStore = true),
)
/** Tor-preferred server list: onion primary, clearnet fallback. */
@@ -128,4 +133,6 @@ val TOR_ELECTRUMX_SERVERS =
ElectrumxServer("electrumx.testls.space", 50002, useSsl = true, usePinnedTrustStore = true),
ElectrumxServer("nmc2.bitcoins.sk", 57002, useSsl = true, usePinnedTrustStore = true),
ElectrumxServer("relay.testls.bit", 50002, useSsl = true, usePinnedTrustStore = true),
// Bare IP peer (same operator/cert/box). See clearnet list above.
ElectrumxServer("23.158.233.10", 50002, useSsl = true, usePinnedTrustStore = true),
)