Files
zeekayandHanzo Dev 7417193940 A chain answers under one segment, and the fleet asks for it there
luxd moved chain APIs from /v1/bc/<alias> to /v1/chain/<alias> and deleted the
old prefix, and health moved onto typed ops at /v1/health/ops/*. Both landed in
node 1.36.181. Nothing here could move before that image existed, and the image
cannot roll out while the manifests still ask for addresses it no longer serves,
so the pin and the paths move in one commit.

What moved:
  image    1.36.171 -> 1.36.181, digest with it, on devnet/testnet/mainnet
  internal exchange-api, lux-hb2, rpc-tip-gate, the luxd startup script
  probes   /v1/health/liveness -> /v1/health/ops/liveness (bare /v1/health,
           which the local compose healthcheck used, no longer routes at all)
  public   the devnet and testnet gateway routes

Comments that RECORD an observation keep their original spelling: a note saying
/v1/bc/zoo/rpc returned 404 on a given date is a fact about that date, and
rewriting it would make the record false. Only live addresses moved.

1.36.181 also carries chains v1.7.38, so the deployed node has the zkvm
content-derived transaction identity.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-30 16:17:20 -07:00

2.1 KiB

Bare-hostname RPC — https://api.<brand>.network in MetaMask

A user should be able to paste https://api.lux.network into MetaMask and have it work. That is what these two objects do together:

IngressRoute lux-mainnet/api-brand-root-mainnet
  Host(`api.<brand>.network`) && Path(`/`)   priority 10000
  -> middleware rpc-rewrite-<brand>          -> svc api-gateway-gateway

Middleware lux-system/rpc-rewrite-lux        replacePath: /v1/chain/C/rpc
Middleware lux-system/rpc-rewrite-hanzo      replacePath: /v1/chain/hanzo/rpc
Middleware lux-mainnet/zoo-rpc-rewrite       replacePath: /v1/chain/zoo/rpc

It was broken for ~57 days, and the failure was invisible

All three rewrote to the RETIRED /ext/bc/... prefix. luxd serves /v1/chain/... now, so the root route rewrote every request onto a path the gateway does not have and answered 404 page not found — Traefik's default body, which reads like "no such host/route" rather than "your rewrite target is wrong". Meanwhile the explicit /v1/chain/C/rpc kept working, so nothing looked broken unless you tried the bare hostname the way a wallet does.

Verified after the fix (2026-08-06), bare hosts, no path: api.lux.network eth_chainId 0x17871 (96369) net_version 96369 api.zoo.network 0x30e08 (200200) api.hanzo.network 0x9063 (36963) api.pars.network 0x78d65 (494949) and a full wallet handshake on api.lux.network: eth_chainId, net_version, eth_blockNumber, eth_gasPrice, eth_getBalance all 200 with real values.

⛔ Do NOT add a / endpoint to the gateway's own krakend config to achieve this. That was tried and reverted: it duplicates the mechanism, and two ways to route the same request is exactly what this estate forbids. The rewrite middleware is the one way.

⚠ api.spc.network returns nothing on the bare host — it has a brand-root route but no rewrite middleware of its own. Left alone rather than guessed at.

⚠ api.lux.network/v1/health answering 503 is NOT this: lux-mainnet runs with --dex-validator, so its health check includes a D-Chain the public luxd image does not carry. Zoo, which does not, answers 200. See the luxd-health note.