
Security News
TC39 Advances Temporal to Stage 4 Alongside Several ECMAScript Proposals
TC39’s March 2026 meeting advanced eight ECMAScript proposals, including Temporal reaching Stage 4 and securing its place in the ECMAScript 2026 specification.
@multiformats/multiaddr
Advanced tools
multiaddr implementation (binary + string representation of network addresses)
multiaddr implementation (binary + string representation of network addresses)
A standard way to represent addresses that
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)
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.
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...')...]
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...')...]
$ npm i @multiformats/multiaddr
<script> tagLoading 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>
Licensed under either of
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.
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.
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.
FAQs
The JavaScript implementation of the Multiaddr spec
The npm package @multiformats/multiaddr receives a total of 237,668 weekly downloads. As such, @multiformats/multiaddr popularity was classified as popular.
We found that @multiformats/multiaddr demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 10 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
TC39’s March 2026 meeting advanced eight ECMAScript proposals, including Temporal reaching Stage 4 and securing its place in the ECMAScript 2026 specification.

Research
/Security News
Since January 31, 2026, we identified at least 72 additional malicious Open VSX extensions, including transitive GlassWorm loader extensions targeting developers.

Research
Six malicious Packagist packages posing as OphimCMS themes contain trojanized jQuery that exfiltrates URLs, injects ads, and loads FUNNULL-linked redirects.