What is @multiformats/multiaddr?
@multiformats/multiaddr is a JavaScript implementation of the multiaddr format, which is a self-describing network address format. It is used to represent addresses in a way that is protocol-agnostic and can be easily extended to support new protocols.
What are @multiformats/multiaddr's main functionalities?
Create a Multiaddr
This feature allows you to create a new multiaddr instance from a string. The example demonstrates creating a multiaddr for an IPv4 address with a TCP port.
const multiaddr = require('@multiformats/multiaddr');
const addr = multiaddr('/ip4/127.0.0.1/tcp/4001');
console.log(addr.toString());
Parse a Multiaddr
This feature allows you to parse a multiaddr and extract protocol names. The example shows how to get the protocol names from a multiaddr.
const multiaddr = require('@multiformats/multiaddr');
const addr = multiaddr('/ip4/127.0.0.1/tcp/4001');
console.log(addr.protoNames());
Encapsulate and Decapsulate
This feature allows you to encapsulate and decapsulate addresses. The example demonstrates adding a UDP layer to an existing address and then removing it.
const multiaddr = require('@multiformats/multiaddr');
const addr = multiaddr('/ip4/127.0.0.1/tcp/4001');
const encapsulated = addr.encapsulate('/udp/1234');
console.log(encapsulated.toString());
const decapsulated = encapsulated.decapsulate('/udp');
console.log(decapsulated.toString());
Other packages similar to @multiformats/multiaddr
ip
The 'ip' package provides utilities for IP address manipulation, including parsing and formatting. While it focuses on IP addresses specifically, @multiformats/multiaddr is more versatile, supporting a wider range of protocols and encapsulation.
netaddr
The 'netaddr' package is used for network address manipulation, including IP and CIDR operations. It is similar in functionality to 'ip', but @multiformats/multiaddr offers a more comprehensive approach to handling multi-protocol addresses.
@multiformats/multiaddr

multiaddr implementation (binary + string representation of network addresses)
Table of contents
Install
$ npm i @multiformats/multiaddr
Background
What is multiaddr?
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
npm i multiaddr
Browser: <script>
Tag
Loading this module through a script tag will make the Multiaddr
obj available in
the global namespace.
<script src="https://unpkg.com/multiaddr/dist/index.min.js"></script>
Usage
import { multiaddr } from 'multiaddr'
const addr = multiaddr("/ip4/127.0.0.1/udp/1234")
const addr = multiaddr("/ip4/127.0.0.1/udp/1234")
addr.bytes
addr.toString()
addr.protos()
addr.nodeAddress()
addr.encapsulate('/sctp/5678')
API
https://multiformats.github.io/js-multiaddr/
Resolvers
multiaddr
allows multiaddrs to be resolved when appropriate resolvers are provided. This module already has resolvers available, but you can also create your own. Resolvers should always be set in the same module that is calling multiaddr.resolve()
to avoid conflicts if multiple versions of multiaddr
are in your dependency tree.
To provide multiaddr resolvers you can do:
import { resolvers } from 'multiaddr'
resolvers.set('dnsaddr', resolvers.dnsaddrResolver)
The available resolvers are:
Name | type | Description |
---|
dnsaddrResolver | dnsaddr | dnsaddr resolution with TXT Records |
A resolver receives a Multiaddr
as a parameter and returns a Promise<Array<string>>
.
License
Licensed under either of
Contribute
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.