12.3.1 • Published 9 months ago

@multiformats/multiaddr v12.3.1

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

@vikiival/is-ipfs@infinitebrahmanuniverse/nolb-_mulipfs-http-client@everything-registry/sub-chunk-625electron-forge-react-typescript-boilerplatewalletdropstorverse-sao-model@djack-sdk/network@djack-sdk/server@drtc/core@drtc/create@drtc/discovery@drtc/huddle-client@drtc/interfaces@drtc/media-client@drtc/tests@dreamcatcher-tech/dos@dreamcatcher-tech/interblock@co2-storage/js-api@douganderson444/ipfs-core@blockless/browser-node@canvas-js/cli@canvas-js/core@canvas-js/discovery@canvas-js/gossiplog@canvas-js/libp2p-okra-service@canvas-js/libp2p-rendezvous@rosen-bridge/rosenet-nodeipfs-grpc-clientipfs-grpc-serveripfs-interopipfs-http-serveripfs-repo-migrationsjs-ds-crdtjs-kubo-rpc-clientjs-libp2p-httpjs-wakuipfs-coreipfs-core-typesipfs-core-utilsipfs-bitswapipfs-cliis-ipfsipdwrivalz-client-node-librivalz-client-nodedenetwork-gossipsub@bpx-chain/synapse-enrullamrepudiandae@aztec/p2p@biglup/is-cid@carmel/core@carmel/node@byzanlink-bundler/node@canvas-js/pubsub-service-discovery@canvas-js/store@chainsafe/lodestar@chainsafe/libp2p-identify@chainsafe/libp2p-gossipsub@chainsafe/discv5@chainsafe/enr@0xvaibhav/libp2p-events@0xvaibhav/libp2p-events-client@achingbrain/webrtc-direct@dcdn/graphsync@deworker/deworker-cli@dao-xyz/libp2p-webrtcwebnativezkdatabase@filecoin-renewable-energy-purchases/js-api@dstanesc/ipfs-core-store-access@helia/pinning-service-api-server@helia/remote-pinning@helia/routing-v1-http-api-client@helia/rpc-client@helia/rpc-server@heirtrust/heirtrust-sdk@helia/bitswap@helia/block-brokers@helia/cli-utils@helia/delegated-routing-v1-http-api-client@fluencelabs/cli@fluencelabs/js-client@fluencelabs/js-peer@hoprnet/hopr-core-ethereum@hoprnet/hopr-core@hoprnet/hopr-connect@hoprnet/hopr-utils@hoprnet/hoprd@hoprnet/hopr-cover-traffic-daemon@iexec/dataprotector@ethereumjs/client@ladans-io/libp2p-interface@krypton-js/sdk@lodestar/beacon-node@libertynet/core@libp2p/daemon@libp2p/daemon-client@libp2p/daemon-server@libp2p/dcutr
12.3.1

9 months ago

12.3.0

1 year ago

12.2.2

1 year ago

12.2.3

1 year ago

12.2.1

1 year ago

12.2.0

1 year ago

12.1.14

1 year ago

12.1.13

1 year ago

12.1.12

1 year 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

2 years ago

12.0.0

2 years ago

11.6.0

2 years ago

11.6.1

2 years ago

12.1.2

2 years ago

12.1.0

2 years ago

12.1.1

2 years ago

11.5.0

2 years ago

11.4.0

2 years ago

11.0.10

3 years ago

11.0.11

3 years ago

11.0.12

3 years ago

11.1.5

2 years ago

11.1.3

2 years ago

11.1.4

2 years ago

11.0.8

3 years ago

11.0.9

3 years ago

11.2.0

2 years ago

11.1.1

2 years ago

11.3.0

2 years ago

11.1.2

2 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

3 years ago

10.1.6

3 years ago

10.1.7

3 years ago

10.1.5

3 years ago

10.1.4

3 years ago

10.1.3

3 years ago

10.1.2

3 years ago

10.1.1

3 years ago

10.1.0

3 years ago

0.0.0

3 years ago