Skip to content
docs

ensCcipRequest

ensCcipRequest(__namedParameters, opts?): Promise<`0x${string}`>

Defined in: names-ens/src/ens.ts:134

EIP-3668 (CCIP-Read) lookups as a wallet may make them (scan 2026-10-27 modules, F37): a name’s offchain resolver picks the gateway URLs, so only https URLs whose host is not, as written, a private one are asked — no http://, no localhost / LAN / link-local / CGNAT address in any spelling, no placeholder in the host — and a redirect is refused (redirect: 'error'). Same protocol as viem’s own: GET with {data} in the URL, POST {data, sender} otherwise, a hex data answer, at most opts.maxResponseBytes, within opts.timeoutMs per gateway.

Where the host resolves depends on the transport:

  • opts.fetch: up to that fetch (e.g. ensCcipViaProxy to your server’s createEnsCcipHandler).
  • Node, no opts.fetch (scan 2026-10-30 F17): the pinned transport of createEnsCcipHandler, in process — every DNS answer is checked and the connection is pinned to it, so a public-looking name that resolves to a private address is not asked. A gateway host whose records mix public and private addresses is refused; behind a corporate split-horizon DNS or an outbound proxy, pass opts.fetch.
  • A browser and other runtimes: the global fetch. The URL text is checked, the resolved address is not: no DNS-level isolation. Ask gateways through your server (ensCcipViaProxy) where that matters.
  • React Native: its fetch cannot refuse a redirect, and checking the final URL afterwards is too late (the redirected request has gone out: scan 2026-10-28 F13), so no gateway is asked unless opts.fetch handles redirects or opts.allowRedirectFollowingFetch accepts the risk.

CcipRequestParameters

EnsCcipOptions = {}

Promise<`0x${string}`>