# perlin-network/noise

**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/perlin-network-noise).**

1,826 stars · 207 forks · Go · MIT

## Links

- GitHub: https://github.com/perlin-network/noise
- Homepage: https://godoc.org/github.com/perlin-network/noise
- awesome-repositories: https://awesome-repositories.com/repository/perlin-network-noise.md

## Topics

`cryptography` `golang` `network` `p2p` `peer-discovery`

## Description

Noise is a peer-to-peer networking stack written in Go designed for building decentralized systems. It provides a framework for managing node lifecycles, establishing encrypted communication channels, and facilitating direct data exchange between distributed nodes without reliance on central authorities.

The library distinguishes itself through a modular architecture that allows developers to stack custom communication layers, enabling the creation of specialized network protocols. It incorporates a decentralized key-value lookup system for peer discovery and routing, alongside cryptographic identity verification that ensures message integrity and sender authenticity across the network.

The framework includes comprehensive tools for managing distributed system resources, such as connection pooling and traffic limits to maintain stability under load. It supports both synchronous request-response patterns and asynchronous message multiplexing, providing granular control over node behavior, security credentials, and connection states.

## Tags

### Networking & Communication

- [Peer-to-Peer Networking Libraries](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking-extensions/peer-to-peer-networking-libraries.md) — Implements a modular peer-to-peer networking stack for building decentralized systems with encrypted communication and custom protocol composition.
- [Distributed Communication Frameworks](https://awesome-repositories.com/f/networking-communication/distributed-communication-frameworks.md) — Provides a comprehensive toolkit for managing node lifecycles, connection pooling, and resource-constrained traffic routing in distributed systems.
- [Peer Connection Managers](https://awesome-repositories.com/f/networking-communication/network-reliability-diagnostics/connection-session-management/peer-connection-managers.md) — Automates the establishment and lifecycle management of encrypted peer-to-peer connections. ([source](https://github.com/perlin-network/noise#readme))
- [Connection Resource Managers](https://awesome-repositories.com/f/networking-communication/connection-rate-limiting/per-protocol-connection-limiters/connection-resource-managers.md) — Manages node resources by enforcing limits on concurrent inbound and outbound traffic streams. ([source](https://github.com/perlin-network/noise#readme))
- [Custom Network Protocols](https://awesome-repositories.com/f/networking-communication/custom-network-protocols.md) — Provides a framework for developing and stacking custom network protocols.
- [Peer-to-Peer Networking](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/peer-to-peer-networking.md) — Manages distributed system resources to maintain stability and performance in peer-to-peer environments.
- [Structured Data Exchanges](https://awesome-repositories.com/f/networking-communication/message-passing/structured-data-exchanges.md) — Supports structured data exchange across peers with automatic serialization for reliable communication. ([source](https://github.com/perlin-network/noise#readme))
- [Peer-to-Peer Networking Extensions](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking-extensions.md) — Enables stacking custom communication modules to extend network functionality within the stack.
- [Decentralized Discovery Methods](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking/peer-discovery/decentralized-discovery-methods.md) — Implements decentralized routing and peer discovery using distributed hash table protocols. ([source](https://godoc.org/github.com/perlin-network/noise))
- [Stream Multiplexing](https://awesome-repositories.com/f/networking-communication/peer-to-peer-streaming/stream-multiplexing.md) — Supports multiplexing multiple independent data streams over a single encrypted peer-to-peer connection.
- [Remote Procedure Calls](https://awesome-repositories.com/f/networking-communication/remote-procedure-calls.md) — Facilitates synchronous communication between distributed nodes using remote procedure calls. ([source](https://github.com/perlin-network/noise/blob/master/example_rpc_test.go))

### System Administration & Monitoring

- [P2P Network Administration](https://awesome-repositories.com/f/system-administration-monitoring/p2p-network-administration.md) — Builds decentralized systems where nodes communicate directly without central authorities.

### Data & Databases

- [Distributed Hash Tables](https://awesome-repositories.com/f/data-databases/distributed-hash-tables.md) — Incorporates a distributed hash table for peer discovery and efficient network routing.
- [Resource-Constrained](https://awesome-repositories.com/f/data-databases/connection-pools/resource-constrained.md) — Maintains system stability by enforcing limits on concurrent traffic and automating peer connection eviction.

### Security & Cryptography

- [Peer Communication Security](https://awesome-repositories.com/f/security-cryptography/network-infrastructure-security/peer-communication-security.md) — Ensures private and authenticated communication between peers using encrypted sessions. ([source](https://godoc.org/github.com/perlin-network/noise))
- [Authenticated Encryption Channels](https://awesome-repositories.com/f/security-cryptography/secure-communication-clients/authenticated-encryption-channels.md) — Implements authenticated encryption channels to secure communication and verify peer identities.
- [Cryptographic Signing Methods](https://awesome-repositories.com/f/security-cryptography/asymmetric-signing/cryptographic-signing-methods.md) — Provides cryptographic signing methods to verify message integrity and sender authenticity.
- [Binary Data Signing](https://awesome-repositories.com/f/security-cryptography/binary-data-signing.md) — Signs network data using node-specific keys to ensure message integrity and sender authenticity. ([source](https://godoc.org/github.com/perlin-network/noise))
- [Peer Identity Verifications](https://awesome-repositories.com/f/security-cryptography/remote-service-authentication/peer-identity-verifications.md) — Verifies the cryptographic identity of remote peers to ensure sender authenticity and message integrity across the network.

### Software Engineering & Architecture

- [Node Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/node-lifecycle-management.md) — Provides tools for managing node lifecycles, including protocol registration and connection state control. ([source](https://godoc.org/github.com/perlin-network/noise))
