Skip to content

Repository files navigation

@multiformats/multiaddr

multiformats.iocodecovCI

multiaddr implementation (binary + string representation of network addresses)

About

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

Example

import{multiaddr}from'@multiformats/multiaddr'constaddr=multiaddr("/ip4/127.0.0.1/udp/1234")// Multiaddr(/ip4/127.0.0.1/udp/1234)constaddr=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)

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 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.

Example - Resolving DNSADDR Multiaddrs

import{multiaddr,resolvers}from'@multiformats/multiaddr'import{dnsaddr}from'@multiformats/multiaddr/resolvers'resolvers.set('dnsaddr',dnsaddr)constma=multiaddr('/dnsaddr/bootstrap.libp2p.io')// resolve with a 5s timeoutconstresolved=awaitma.resolve({signal: AbortSignal.timeout(5000)})console.info(awaitma.resolve(resolved)// [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]

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.

import{multiaddr}from'@multiformats/multiaddr'import{dns}from'@multiformats/dns'import{dnsJsonOverHttps}from'@multiformats/dns/resolvers'constresolver=dns({'.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query')})constma=multiaddr('/dnsaddr/bootstrap.libp2p.io')constresolved=awaitma.resolve({dns: resolver})console.info(resolved)// [Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...'), Multiaddr('/ip4/147.75...')...]

Install

$ npm i @multiformats/multiaddr

Browser <script> tag

Loading this module through a script tag will make it's exports available as MultiformatsMultiaddr in the global namespace.

<scriptsrc="https://unpkg.com/@multiformats/multiaddr/dist/index.min.js"></script>

API Docs

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

JavaScript implementation of multiaddr

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages