mirror of
https://github.com/luxfi/chains.git
synced 2026-09-24 00:26:00 +00:00
CreateHandlers returns endpoint -> handler, and the node mounts each KEY as an exact route, then delivers the request on the path it arrived on. A handler that dispatches on r.URL.Path therefore never matches: it is asked for /v1/bc/<chainID>/rpc and looks for /stats. aivm returned one ServeMux under "/rpc" carrying twelve endpoints, and graphvm switched on r.URL.Path behind a single mount. Both were mounted correctly and both 404'd every request, so every endpoint either VM offers was unreachable by construction — not misconfigured, unreachable. The chains that serve do so because their handlers are path-blind: the gorilla/rpc servers in keyvm, quantumvm and mpcvm read only the body, and bridgevm mounts bare HandlerFuncs. That is the whole difference, and it is the contract: one map entry per endpoint, and the key IS the route. The old aivm test asserted the handler map contained "/rpc" — it locked in the broken shape and never asked whether a request could reach it. The new test asks for each endpoint at the path the node actually mounts, which is the only question that distinguishes the two designs. Co-authored-by: Hanzo Dev <[email protected]>