# libp2p/libp2p

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/libp2p-libp2p).**

2,940 stars · 288 forks · mit

## Links

- GitHub: https://github.com/libp2p/libp2p
- Homepage: https://libp2p.io
- awesome-repositories: https://awesome-repositories.com/repository/libp2p-libp2p.md

## Description

libp2p is a modular peer-to-peer networking stack designed for building decentralized applications. It provides the core infrastructure necessary for nodes to discover and connect with other participants across a network without relying on central servers.

The project distinguishes itself through a flexible transport layer that abstracts multiple protocols, including TCP, QUIC, WebSockets, and WebTransport, into a single interface. It features specialized tools for NAT and firewall traversal, such as hole punching and relay nodes, to establish direct connections between peers and web browsers.

The stack covers a broad range of decentralized capabilities, including gossip-based PubSub messaging, distributed hash tables for routing and key-value storage, and cryptographic identity verification for secure communication. It also includes system primitives for stream multiplexing, peer discovery, and network health monitoring.

Traffic management is handled through backpressure flow control, connection rate limiting, and encrypted channel establishment using modern security standards.

## Tags

### Networking & Communication

- [Peer-to-Peer Networking](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking.md) — Provides the core infrastructure for building peer-to-peer nodes that discover and connect without central servers.
- [Bidirectional Binary Streams](https://awesome-repositories.com/f/networking-communication/bidirectional-binary-streams.md) — Transmits bidirectional binary data with backpressure support over secure multiplexed connections. ([source](https://libp2p.io/docs/protocols/))
- [Bind Connection Listeners](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-protocols-standards/network-protocols/bind-connection-listeners.md) — Accepts incoming network requests from other peers using specific addresses and transport implementations. ([source](https://libp2p.io/docs/listen-and-dial/))
- [Connection Multiplexing](https://awesome-repositories.com/f/networking-communication/connection-multiplexing.md) — Creates multiple virtual connections within a single physical link to send different protocols in parallel. ([source](https://libp2p.io/docs/mplex/))
- [Content Provider Discovery](https://awesome-repositories.com/f/networking-communication/content-provider-discovery.md) — Identifies nodes that host specific data by querying the network for peers associated with a content key. ([source](https://libp2p.io/docs/dht/))
- [Decentralized Messaging](https://awesome-repositories.com/f/networking-communication/decentralized-messaging.md) — Implements gossip-based broadcasting and subscription for topic-based messaging across a routed peer network.
- [Topic-Based Broadcasting](https://awesome-repositories.com/f/networking-communication/instant-messaging-services/peer-to-peer-messaging/cluster-peer-broadcasting/topic-based-broadcasting.md) — Sends data to all peers subscribed to a specific topic via a routed network of peers using cryptographic signatures. ([source](https://libp2p.io/docs/pubsub/))
- [Multiaddr Encoding](https://awesome-repositories.com/f/networking-communication/multiaddr-encoding.md) — Combines transport and overlay protocol information into a standardized structure to identify peers across network types. ([source](https://libp2p.io/docs/addressing/))
- [NAT Traversal](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-proxying-tools/network-proxies/udp-tunneling/nat-traversal.md) — Establishes direct peer connections through firewalls using hole punching and relay nodes.
- [Multi-Protocol Transport Abstraction](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/multi-protocol-transport-abstraction.md) — Employs a unified interface to support various networking standards like TCP and UDP based on application requirements. ([source](https://libp2p.io/docs/transports-overview/))
- [Multi-Transport Linking](https://awesome-repositories.com/f/networking-communication/networking-libraries/custom-network-transport-layers/transport-layer-compatibility-evaluators/multi-transport-linking.md) — Links nodes across various transport layers like TCP and QUIC to maintain compatibility across environments. ([source](https://libp2p.io/docs/getting-started-javascript/))
- [Transport Abstraction Layers](https://awesome-repositories.com/f/networking-communication/networking/transport-abstraction-layers.md) — Abstracts TCP, QUIC, WebSockets, and WebTransport into a single, flexible networking interface.
- [Address Resolution](https://awesome-repositories.com/f/networking-communication/peer-connection-management/address-resolution.md) — Implements the ability to resolve unique peer identifiers into network addresses to enable connectivity. ([source](https://libp2p.io/docs/peers/))
- [Encrypted Handshakes](https://awesome-repositories.com/f/networking-communication/peer-to-peer-clients/connectivity-establishment/encrypted-handshakes.md) — Establishes encrypted peer connections using identity authentication and modern security standards in a single round-trip. ([source](https://libp2p.io/docs/quic/))
- [Peer Discovery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery.md) — Locates network addresses of remote peers and routes data using distributed hash tables.
- [Routing Table Management](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/routing-table-management.md) — Determines the network location of a peer by maintaining routing tables or using neighbor discovery algorithms. ([source](https://libp2p.io/docs/discovery-routing-overview/))
- [Distributed Hash Table Discovery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-protocols/http-to-p2p-translation/distributed-hash-table-discovery.md) — Locates peers and content across a decentralized network using distributed hash table algorithms. ([source](https://libp2p.io/docs/protocols/))
- [Stream Multiplexing](https://awesome-repositories.com/f/networking-communication/peer-to-peer-streaming/stream-multiplexing.md) — Multiplexes multiple bidirectional data streams over a single connection to transfer binary data efficiently.
- [PubSub Message Propagation](https://awesome-repositories.com/f/networking-communication/pubsub-message-propagation.md) — Implements a gossip-based messaging system for broadcasting data to topic subscribers.
- [Secure Communication Channels](https://awesome-repositories.com/f/networking-communication/secure-communication-channels.md) — Creates encrypted communication channels between peers using standard handshakes like TLS 1.3 and Noise. ([source](https://libp2p.io/docs/secure-channels-overview/))
- [Specialized Network Transports](https://awesome-repositories.com/f/networking-communication/specialized-network-transports.md) — Coordinates multiple networking protocols through a single interface to abstract the underlying transport stack complexity. ([source](https://libp2p.io/docs/listen-and-dial/))
- [Bidirectional Stream Establishment](https://awesome-repositories.com/f/networking-communication/stream-multiplexers/bidirectional-stream-establishment.md) — Establishes multiplexed connections between browsers and servers to transfer data without blocking other streams. ([source](https://libp2p.io/docs/webtransport/))
- [Topic Subscription Management](https://awesome-repositories.com/f/networking-communication/topic-subscription-management.md) — Synchronizes topic interests between connected peers using signals to maintain a network-wide map of membership. ([source](https://libp2p.io/docs/pubsub/))
- [Stream Limiters](https://awesome-repositories.com/f/networking-communication/concurrent-stream-handlers/stream-limiters.md) — Caps the number of simultaneous bidirectional and unidirectional streams per connection to protect system resources. ([source](https://libp2p.io/docs/dos-mitigation/))
- [Connection Upgraders](https://awesome-repositories.com/f/networking-communication/connection-management/websocket-connection-managers/connection-upgraders.md) — Upgrades standard web requests into persistent bidirectional WebSocket data streams to link browsers to nodes. ([source](https://libp2p.io/docs/browser-connectivity/))
- [Connection Rate Limiting](https://awesome-repositories.com/f/networking-communication/connection-rate-limiting.md) — Controls the total number of active connections to mitigate denial-of-service attacks and prevent resource exhaustion. ([source](https://libp2p.io/docs/dos-mitigation/))
- [Browser-Based Connectivity](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/peer-to-peer-networking/browser-based-connectivity.md) — Links web browsers to public network nodes using direct data streams without requiring signaling channels. ([source](https://libp2p.io/docs/browser-connectivity/))
- [Version Negotiation](https://awesome-repositories.com/f/networking-communication/http-2-support/protocol-negotiation/version-negotiation.md) — Negotiates specific protocol versions between peers to ensure system compatibility before data exchange. ([source](https://libp2p.io/docs/protocols/))
- [Local Peer Discovery](https://awesome-repositories.com/f/networking-communication/local-peer-discovery.md) — Broadcasts and listens for multicast DNS records to find and connect with nodes on a local network. ([source](https://libp2p.io/docs/mdns/))
- [Message Recovery Mechanisms](https://awesome-repositories.com/f/networking-communication/message-recovery-mechanisms.md) — Exchanges metadata about recently seen messages with random peers to detect and recover missing data. ([source](https://libp2p.io/docs/pubsub/))
- [Protocol Handlers](https://awesome-repositories.com/f/networking-communication/message-stream-handlers/protocol-handlers.md) — Maps network protocols to specific functions to determine how incoming data streams are processed and routed. ([source](https://libp2p.io/docs/getting-started-go/))
- [Node Role Configurations](https://awesome-repositories.com/f/networking-communication/node-role-configurations.md) — Allows toggling between a record-storing server mode and a resource-constrained client mode. ([source](https://libp2p.io/docs/dht/))
- [Peer Connection Monitoring](https://awesome-repositories.com/f/networking-communication/peer-connection-monitoring.md) — Verifies peer liveness and connectivity by echoing random payloads and measuring round-trip time. ([source](https://libp2p.io/docs/protocols/))
- [Bootstrap Node Discovery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/bootstrap-node-discovery.md) — Populates local routing tables by connecting to bootstrap nodes and performing discovery lookups. ([source](https://libp2p.io/docs/dht/))
- [Browser Data Channels](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/browser-data-channels.md) — Creates direct peer-to-peer data channels between web browsers to facilitate decentralized communication. ([source](https://libp2p.io/docs/webrtc-browser-connectivity/))
- [Message Filtering Rules](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/gossip-protocols/message-filtering-rules.md) — Inspects incoming gossip messages against protocol rules to drop invalid data and prevent network replication. ([source](https://libp2p.io/docs/pubsub/))
- [Peer List Exchange](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/peer-list-exchange.md) — Shares public keys and network addresses between peers to facilitate discovery and identity verification. ([source](https://libp2p.io/docs/protocols/))
- [Gossip-Based Discovery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/peer-list-exchange/gossip-based-discovery.md) — Exchanges network addresses between peers using a gossip-based messaging protocol to establish connections. ([source](https://libp2p.io/docs/webrtc-browser-connectivity/))
- [Peer Metadata Management](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/peer-metadata-management.md) — Stores peer identities, network addresses, and metadata in a local directory to track network participants. ([source](https://libp2p.io/docs/peers/))
- [Rendezvous Point Discovery](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/rendezvous-point-discovery.md) — Registers presence in named namespaces at stable hub nodes so other peers can locate and connect. ([source](https://libp2p.io/docs/rendezvous/))
- [Supernode Relay Routing](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/supernode-relay-routing.md) — Routes network data between two nodes via an intermediary node when direct connections are blocked. ([source](https://libp2p.io/docs/hole-punching/))
- [Round-Trip Time Measurements](https://awesome-repositories.com/f/networking-communication/round-trip-time-measurements.md) — Calculates round-trip time between peers using heartbeat signals to verify connectivity and network delay. ([source](https://libp2p.io/docs/getting-started-javascript/))
- [Transmission Rate Regulation](https://awesome-repositories.com/f/networking-communication/transmission-rate-regulation.md) — Regulates data transmission rates by allowing receivers to signal processing capacity to senders to prevent buffer overflows. ([source](https://libp2p.io/docs/yamux/))
- [Hole-Punching Connection Dialing](https://awesome-repositories.com/f/networking-communication/webrtc-media-orchestration/peer-connectivity/hole-punching-connection-dialing.md) — Establishes direct network paths between peers behind firewalls using hole punching and relay nodes. ([source](https://libp2p.io/docs/dcutr/))

### Data & Databases

- [Distributed Hash Tables](https://awesome-repositories.com/f/data-databases/distributed-hash-tables.md) — Implements a distributed hash table for shared storage and discovery of peers and services. ([source](https://libp2p.io/docs/security-considerations/))
- [Distributed Storage](https://awesome-repositories.com/f/data-databases/distributed-storage.md) — Saves and fetches signed arbitrary data across a distributed set of nodes based on proximity to a key. ([source](https://libp2p.io/docs/dht/))

### Security & Cryptography

- [Cryptographic Identity Networks](https://awesome-repositories.com/f/security-cryptography/identity-verification-modules/cryptographic-identity-verification/cryptographic-identity-networks.md) — Links unique network identifiers to public keys for secure routing and peer authentication. ([source](https://libp2p.io/docs/peers/))
- [Peer Communication Security](https://awesome-repositories.com/f/security-cryptography/network-infrastructure-security/peer-communication-security.md) — Creates encrypted channels between nodes using cryptographic identities and secure handshakes.
- [Peer Identity Verifications](https://awesome-repositories.com/f/security-cryptography/remote-service-authentication/peer-identity-verifications.md) — Verifies remote participant identities using unique cryptographic keys to prevent impersonation. ([source](https://libp2p.io/docs/security-considerations/))
- [Traffic Encryption](https://awesome-repositories.com/f/security-cryptography/traffic-encryption.md) — Secures all data in transit between peers using pluggable cryptography modules for maximum privacy. ([source](https://libp2p.io/docs/getting-started-javascript/))
- [Automated Certificate Issuance](https://awesome-repositories.com/f/security-cryptography/certificate-automation-protocols/automated-certificate-issuance.md) — Provides automated wildcard TLS certificate issuance via ACME to secure browser-to-node connections. ([source](https://libp2p.io/docs/browser-connectivity/))
- [Certificate Verification](https://awesome-repositories.com/f/security-cryptography/certificate-verification.md) — Authenticates server connections by verifying the SHA-256 hash of self-signed certificates to bypass central authorities. ([source](https://libp2p.io/docs/webtransport/))

### Software Engineering & Architecture

- [Distributed Hash Tables](https://awesome-repositories.com/f/software-engineering-architecture/distributed-systems/distributed-data-management/distributed-hash-tables.md) — Provides a decentralized system for storing signed key-value pairs and locating peers across the network.

### Web Development

- [Peer Security Filtering](https://awesome-repositories.com/f/web-development/peer-to-peer-transfer-engines/peer-security-filtering.md) — Implements allow and deny lists to block untrusted addresses or grant preferential resource limits to trusted peers. ([source](https://libp2p.io/docs/dos-mitigation/))
