12.4.1 • Published 5 months ago

@multiformats/multiaddr v12.4.1

Weekly downloads
-
License
Apache-2.0 OR MIT
Repository
github
Last release
5 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)

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

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({
  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...')...]

Install

$ npm i @multiformats/multiaddr

Browser <script> tag

Loading this module through a script tag will make its 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.

@vikiival/is-ipfs@infinitebrahmanuniverse/nolb-_mulipfs-http-client@everything-registry/sub-chunk-625electron-forge-react-typescript-boilerplatewalletdropstorverse-sao-modelipfs-grpc-clientipfs-grpc-serveripfs-interopipfs-http-serveripfs-repo-migrationsjs-ds-crdtjs-kubo-rpc-clientjs-libp2p-httpjs-wakuipfs-coreipfs-core-typesipfs-core-utilsipfs-bitswapipfs-cliis-ipfsipdwiexecinterface-ipfs-corelibp2p-transportlibp2plibp2p-middleware-registrarkubo-rpc-clientkubo-rpc-client-esm-cjs@waku/libp2p-utils@waku/enr@windingtree/sdk-pubsub@windingtree/sdk-client@windingtree/sdk-node@web3-storage/ipni@turbo-ing/edge-v0@ts-drp/network@topology-foundation/network@tracelabs/kad-dht@tgbc/ping@zkfs/storage-orbit-dbaxon-webtorrent@graphops/graphcast-jsrivalz-client-node-librivalz-client-nodedenetwork-gossipsub@bpx-chain/synapse-enrullamrepudiandaewebnativezkdatabase@ladans-io/libp2p-interface@krypton-js/sdk@lodestar/beacon-node@libertynet/core@libp2p/daemon@libp2p/daemon-client@libp2p/daemon-server@libp2p/dcutr@libp2p/devtools-metrics@libp2p/echo@libp2p/http-v1-content-routing@libp2p/identify@libp2p/interface@libp2p/interface-address-manager@libp2p/interface-compliance-tests@libp2p/amino-dht-bootstrapper@libp2p/auto-tls@libp2p/autonat@libp2p/bootstrap@libp2p/interface-connection@libp2p/interface-connection-encrypter-compliance-tests@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/http-fetch@libp2p/circuit-relay-v2@libp2p/connection@libp2p/utils@libp2p/webrtc@libp2p/webrtc-direct@libp2p/webrtc-star@libp2p/webrtc-star-signalling-server@libp2p/websockets@libp2p/webtransport@libp2p/peer-record@libp2p/peer-store@libp2p/perf@libp2p/ping@libp2p/tcp@libp2p/upnp-nat@libp2p/interface-transport@libp2p/interface-transport-compliance-tests@libp2p/interop@libp2p/ipni-content-routing
12.4.0

9 months ago

12.4.1

5 months ago

12.3.4

11 months ago

12.3.5

9 months ago

12.3.2

12 months ago

12.3.3

12 months ago

12.3.1

1 year ago

12.3.0

1 year ago

12.2.2

1 year ago

12.2.3

1 year ago

12.2.1

2 years ago

12.2.0

2 years ago

12.1.14

2 years ago

12.1.13

2 years ago

12.1.12

2 years ago

12.1.10

2 years ago

12.1.11

2 years ago

12.1.6

2 years ago

12.1.7

2 years ago

12.1.8

2 years ago

12.1.9

2 years ago

12.1.4

2 years ago

12.1.5

2 years ago

12.1.3

3 years ago

12.0.0

3 years ago

11.6.0

3 years ago

11.6.1

3 years ago

12.1.2

3 years ago

12.1.0

3 years ago

12.1.1

3 years ago

11.5.0

3 years ago

11.4.0

3 years ago

11.0.10

3 years ago

11.0.11

3 years ago

11.0.12

3 years ago

11.1.5

3 years ago

11.1.3

3 years ago

11.1.4

3 years ago

11.0.8

3 years ago

11.0.9

3 years ago

11.2.0

3 years ago

11.1.1

3 years ago

11.3.0

3 years ago

11.1.2

3 years ago

11.1.0

3 years ago

11.0.6

3 years ago

11.0.7

3 years ago

11.0.4

3 years ago

11.0.5

3 years ago

11.0.2

3 years ago

11.0.3

3 years ago

11.0.1

3 years ago

10.5.0

3 years ago

10.4.1

3 years ago

10.4.2

3 years ago

10.4.3

3 years ago

10.3.4

3 years ago

10.3.5

3 years ago

10.4.0

3 years ago

11.0.0

3 years ago

10.3.2

3 years ago

10.3.3

3 years ago

10.3.0

3 years ago

10.2.1

3 years ago

10.3.1

3 years ago

10.2.0

3 years ago

10.1.8

4 years ago

10.1.6

4 years ago

10.1.7

4 years ago

10.1.5

4 years ago

10.1.4

4 years ago

10.1.3

4 years ago

10.1.2

4 years ago

10.1.1

4 years ago

10.1.0

4 years ago

0.0.0

4 years ago