A standard way to represent addresses that
import { multiaddr } from '@multiformats/multiaddr'const addr = multiaddr('/ip4/127.0.0.1/udp/1234')// Multiaddr(/ip4/127.0.0.1/udp/1234)addr.bytes// <Uint8Array 04 7f 00 00 01 11 04 d2>addr.toString()// '/ip4/127.0.0.1/udp/1234'addr.protos()// [// {code: 4, name: 'ip4', size: 32},// {code: 273, name: 'udp', size: 16}// ]// gives you an object that is friendly with what Node.js core modules expect for addressesaddr.nodeAddress()// {// family: 4,// port: 1234,// address: "127.0.0.1"// }addr.encapsulate('/sctp/5678')// Multiaddr(/ip4/127.0.0.1/udp/1234/sctp/5678) Copy
import { multiaddr } from '@multiformats/multiaddr'const addr = multiaddr('/ip4/127.0.0.1/udp/1234')// Multiaddr(/ip4/127.0.0.1/udp/1234)addr.bytes// <Uint8Array 04 7f 00 00 01 11 04 d2>addr.toString()// '/ip4/127.0.0.1/udp/1234'addr.protos()// [// {code: 4, name: 'ip4', size: 32},// {code: 273, name: 'udp', size: 16}// ]// gives you an object that is friendly with what Node.js core modules expect for addressesaddr.nodeAddress()// {// family: 4,// port: 1234,// address: "127.0.0.1"// }addr.encapsulate('/sctp/5678')// Multiaddr(/ip4/127.0.0.1/udp/1234/sctp/5678)
DNSADDR is a spec that allows storing a TXT DNS record that contains a Multiaddr.
To resolve DNSADDR addresses, call the .resolve() function the multiaddr, optionally passing a DNS resolver.
.resolve()
DNS
DNSADDR addresses can resolve to multiple multiaddrs, since there is no limit to the number of TXT records that can be stored.
import { multiaddr, resolvers } from '@multiformats/multiaddr'import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'resolvers.set('dnsaddr', dnsaddrResolver)const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')// resolve with a 5s timeoutconst resolved = await ma.resolve({ signal: AbortSignal.timeout(5000)})console.info(resolved)// [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...] Copy
import { multiaddr, resolvers } from '@multiformats/multiaddr'import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'resolvers.set('dnsaddr', dnsaddrResolver)const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')// resolve with a 5s timeoutconst resolved = await ma.resolve({ signal: AbortSignal.timeout(5000)})console.info(resolved)// [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]
See the docs for @multiformats/dns for a full breakdown of how to specify multiple resolvers or resolvers that can be used for specific TLDs.
import { multiaddr } from '@multiformats/multiaddr'import { dns } from '@multiformats/dns'import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'const resolver = dns({ resolvers: { '.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query') }})const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')const resolved = await ma.resolve({ dns: resolver})console.info(resolved)// [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...] Copy
import { multiaddr } from '@multiformats/multiaddr'import { dns } from '@multiformats/dns'import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'const resolver = dns({ resolvers: { '.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query') }})const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')const resolved = await ma.resolve({ dns: resolver})console.info(resolved)// [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]
A standard way to represent addresses that
Example
Resolving DNSADDR addresses
DNSADDR is a spec that allows storing a TXT DNS record that contains a Multiaddr.
To resolve DNSADDR addresses, call the
.resolve()
function the multiaddr, optionally passing aDNS
resolver.DNSADDR addresses can resolve to multiple multiaddrs, since there is no limit to the number of TXT records that can be stored.
Example: Resolving DNSADDR Multiaddrs
Example: Using a custom DNS resolver to resolve DNSADDR Multiaddrs
See the docs for @multiformats/dns for a full breakdown of how to specify multiple resolvers or resolvers that can be used for specific TLDs.