@multiformats/multiaddr
    Preparing search index...

    Module index

    A standard way to represent addresses that

    • support any standard network protocol
    • are self-describing
    • have a binary packed format
    • have a nice string representation
    • encapsulate well
    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 addresses
    addr.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.

    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 timeout
    const 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...')...]

    To add application-specific or experimental protocols, add a protocol codec to the protocol registry:

    import { registry, V, multiaddr } from '@multiformats/multiaddr'
    import type { ProtocolCodec } from '@multiformats/multiaddr'

    const maWithCustomTuple = '/custom-protocol/hello'

    // throws UnknownProtocolError
    multiaddr(maWithCustomTuple)

    const protocol: ProtocolCodec = {
    code: 2059,
    name: 'custom-protocol',
    size: V
    // V means variable length, can also be 0, a positive integer (e.g. a fixed
    // length or omitted
    }

    registry.addProtocol(protocol)

    // does not throw UnknownProtocolError
    multiaddr(maWithCustomTuple)

    // protocols can also be removed
    registry.removeProtocol(protocol.code)

    Classes

    MultiaddrFilter

    Interfaces

    AbortOptions
    Component
    Multiaddr
    MultiaddrObject
    NodeAddress
    Protocol
    ProtocolCodec
    Registry
    ResolveOptions

    Type Aliases

    MultiaddrInput
    StringTuple
    Tuple

    Variables

    CODE_CERTHASH
    CODE_DCCP
    CODE_DNS
    CODE_DNS4
    CODE_DNS6
    CODE_DNSADDR
    CODE_GARLIC32
    CODE_GARLIC64
    CODE_HTTP
    CODE_HTTP_PATH
    CODE_HTTPS
    CODE_IP4
    CODE_IP6
    CODE_IP6ZONE
    CODE_IPCIDR
    CODE_MEMORY
    CODE_NOISE
    CODE_ONION
    CODE_ONION3
    CODE_P2P
    CODE_P2P_CIRCUIT
    CODE_P2P_STARDUST
    CODE_P2P_WEBRTC_DIRECT
    CODE_P2P_WEBRTC_STAR
    CODE_P2P_WEBSOCKET_STAR
    CODE_QUIC
    CODE_QUIC_V1
    CODE_SCTP
    CODE_SNI
    CODE_TCP
    CODE_TLS
    CODE_UDP
    CODE_UDT
    CODE_UNIX
    CODE_UTP
    CODE_WEBRTC
    CODE_WEBRTC_DIRECT
    CODE_WEBTRANSPORT
    CODE_WS
    CODE_WSS
    registry
    resolvers
    V

    Functions

    fromNodeAddress
    fromStringTuples
    fromTuples
    isMultiaddr
    isName
    multiaddr
    protocols

    References

    Resolver → Resolver