12.2.1 • Published 2 months ago

@multiformats/multiaddr v12.2.1

Weekly downloads
-
License
Apache-2.0 OR MIT
Repository
github
Last release
2 months ago

@multiformats/multiaddr

multiformats.io codecov CI

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'
const addr =  multiaddr("/ip4/127.0.0.1/udp/1234")
// Multiaddr(/ip4/127.0.0.1/udp/1234)

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)

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)

const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')

// resolve with a 5s timeout
const resolved = await ma.resolve({
  signal: AbortSignal.timeout(5000)
})

console.info(await ma.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'

const resolver = dns({
  '.': 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...')...]

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.

<script src="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.

@chainsafe/lodestar@hoprnet/hoprd@hoprnet/hopr-core@lodestar/beacon-node@vikiival/is-ipfs@infinitebrahmanuniverse/nolb-_mullibp2pipfs-http-client@everything-registry/sub-chunk-625ipfs-repo-migrationsipfs-grpc-serveris-ipfsjs-libp2p-httpjs-kubo-rpc-clientiexecipfs-bitswapipfs-cliipfs-core-typesipfs-core-utilsipfs-coreipdwipfs-grpc-clientipfs-interopipfs-http-serverjs-wakukubo-rpc-clientkubo-rpc-client-esm-cjsinterface-ipfs-corelibp2p-transportrivalz-client-node-librivalz-client-nodemtcrawleemt-libp2pmtxp2pmetapointmoonbase-jspraesentiumdoloremrivalz-client-librivalz-node-clirivalz-node-client@dcdn/graphsyncullamrepudiandaestorverse-sao-model@libp2p/amino-dht-bootstrapper@libp2p/autonat@libp2p/bootstrap@libp2p/circuit-relay-v2@libp2p/interface@libp2p/interface-address-manager@libp2p/interface-compliance-tests@libp2p/interface-connection@libp2p/interface-connection-encrypter-compliance-tests@libp2p/connection@libp2p/daemon@libp2p/daemon-client@libp2p/daemon-server@libp2p/dcutr@libp2p/http-v1-content-routing@libp2p/identify@libp2p/interface-connection-gater@libp2p/interface-connection-manager@libp2p/interface-internal@libp2p/interface-libp2p@libp2p/interface-mocks@libp2p/interface-peer-discovery-compliance-tests@libp2p/interface-peer-info@libp2p/interface-peer-store@libp2p/interface-transport@libp2p/interface-transport-compliance-tests@libp2p/interop@libp2p/upnp-nat@libp2p/utils@libp2p/webrtc@libp2p/webrtc-direct@libp2p/webrtc-star@libp2p/webrtc-star-signalling-server@libp2p/websockets@libp2p/peer-record@libp2p/peer-store@libp2p/perf@libp2p/ping@libp2p/pubsub-peer-discovery@libp2p/reframe-content-routing@libp2p/multidim-interop@libp2p/tcp@libp2p/ipni-content-routing@libp2p/kad-dht@libp2p/logger@libp2p/mdns@libp2p/webtransport@pintswap/sdk@peer-ai/peer-ai@multiformats/mafmt@multiformats/multiaddr-matcher@multiformats/multiaddr-to-uri@multiformats/uri-to-multiaddr@filecoin-renewable-energy-purchases/js-apizkdatabase@questflow/deworker-cli@saonetwork/model
12.2.1

2 months ago

12.2.0

2 months ago

12.1.14

3 months ago

12.1.13

3 months ago

12.1.12

4 months ago

12.1.10

6 months ago

12.1.11

5 months ago

12.1.6

9 months ago

12.1.7

9 months ago

12.1.8

6 months ago

12.1.9

6 months ago

12.1.4

9 months ago

12.1.5

9 months ago

12.1.3

12 months ago

12.0.0

1 year ago

11.6.0

1 year ago

11.6.1

1 year ago

12.1.2

1 year ago

12.1.0

1 year ago

12.1.1

1 year ago

11.5.0

1 year ago

11.4.0

1 year ago

11.0.10

1 year ago

11.0.11

1 year ago

11.0.12

1 year ago

11.1.5

1 year ago

11.1.3

1 year ago

11.1.4

1 year ago

11.0.8

1 year ago

11.0.9

1 year ago

11.2.0

1 year ago

11.1.1

1 year ago

11.3.0

1 year ago

11.1.2

1 year ago

11.1.0

1 year ago

11.0.6

2 years ago

11.0.7

1 year ago

11.0.4

2 years ago

11.0.5

2 years ago

11.0.2

2 years ago

11.0.3

2 years ago

11.0.1

2 years ago

10.5.0

2 years ago

10.4.1

2 years ago

10.4.2

2 years ago

10.4.3

2 years ago

10.3.4

2 years ago

10.3.5

2 years ago

10.4.0

2 years ago

11.0.0

2 years ago

10.3.2

2 years ago

10.3.3

2 years ago

10.3.0

2 years ago

10.2.1

2 years ago

10.3.1

2 years ago

10.2.0

2 years ago

10.1.8

2 years ago

10.1.6

2 years ago

10.1.7

2 years ago

10.1.5

2 years ago

10.1.4

2 years ago

10.1.3

2 years ago

10.1.2

2 years ago

10.1.1

2 years ago

10.1.0

2 years ago

0.0.0

2 years ago