# holepunchto/hypercore

**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/holepunchto-hypercore).**

2,767 stars · 193 forks · JavaScript · mit

## Links

- GitHub: https://github.com/holepunchto/hypercore
- Homepage: https://docs.holepunch.to
- awesome-repositories: https://awesome-repositories.com/repository/holepunchto-hypercore.md

## Description

Hypercore is a distributed append-only logging system designed for maintaining cryptographically signed data streams that are replicated and verified across a network of peers. It provides verifiable data storage using a Merkle tree structure to ensure the integrity and authenticity of information through cryptographic proofs.

The project is distinguished by its support for sparse data replication, which allows peers to download only the specific ranges or blocks of a log required for their current needs to reduce bandwidth. It also implements encrypted peer-to-peer messaging and the ability to create read-only log snapshots at specific lengths.

The system covers a broad range of capabilities including peer-to-peer data synchronization, log integrity validation, and block-level encryption. It includes tools for managing the local storage lifecycle, such as log truncation and cache management, alongside event listeners for monitoring network connectivity and data updates.

## Tags

### Data & Databases

- [Verifiable Storage](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/data-storage/verifiable-storage.md) — Maintains data in a Merkle tree structure to provide cryptographic proofs of integrity and authenticity.
- [Sparse Replication](https://awesome-repositories.com/f/data-databases/data-replication/sparse-replication.md) — Supports bandwidth-efficient replication by allowing peers to download only the specific log ranges they need.
- [Sparse Replication](https://awesome-repositories.com/f/data-databases/replication-protocols/sparse-replication.md) — Reduces bandwidth usage by downloading only specific ranges or individual blocks of data instead of the entire log. ([source](https://cdn.jsdelivr.net/gh/holepunchto/hypercore@main/README.md))
- [Remote Block Fetching](https://awesome-repositories.com/f/data-databases/block-storage/remote-block-fetching.md) — Enables fetching of individual data blocks by index from remote peers. ([source](https://cdn.jsdelivr.net/gh/holepunchto/hypercore@main/README.md))
- [Log Snapshots](https://awesome-repositories.com/f/data-databases/in-memory-caches/persistence-managers/snapshotting-and-command-logging/log-snapshots.md) — Enables opening read-only sessions of a log at a specific length that remains frozen as data grows. ([source](https://docs.pears.com/building-blocks/hypercore))
- [Log Truncation](https://awesome-repositories.com/f/data-databases/in-memory-caches/persistence-managers/snapshotting-and-command-logging/log-truncation.md) — Supports shortening logs to a specific length and signing the truncation to create data forks. ([source](https://docs.pears.com/building-blocks/hypercore))
- [Log Content Streaming](https://awesome-repositories.com/f/data-databases/log-content-streaming.md) — Reads ranges of data or bytes as continuous streams supporting discrete ranges and live updates. ([source](https://cdn.jsdelivr.net/gh/holepunchto/hypercore@main/README.md))
- [Remote Data Retrieval](https://awesome-repositories.com/f/data-databases/remote-data-retrieval.md) — Provides utilities for retrieving specific blocks or ranges of bytes from remote peers. ([source](https://docs.pears.com/building-blocks/hypercore))

### Networking & Communication

- [Append-Only Log Storage](https://awesome-repositories.com/f/networking-communication/peer-to-peer-distribution-protocols/append-only-log-storage.md) — Implements a distributed append-only log structure for synchronization across peer-to-peer networks.
- [State Synchronization](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/peer-to-peer-networking/state-synchronization.md) — Creates network streams to synchronize log state and blocks between local and remote peers. ([source](https://docs.pears.com/building-blocks/hypercore))
- [Peer-to-Peer Database Replication](https://awesome-repositories.com/f/networking-communication/peer-to-peer-database-replication.md) — Synchronizes log state between instances by establishing replication streams to exchange missing data blocks. ([source](https://cdn.jsdelivr.net/gh/holepunchto/hypercore@main/README.md))
- [Sparse Replication](https://awesome-repositories.com/f/networking-communication/peer-to-peer-database-replication/sparse-replication.md) — Allows peers to fetch only required ranges of data instead of the full log to reduce bandwidth.
- [Range-Based Stream Queries](https://awesome-repositories.com/f/networking-communication/message-stream-handlers/stream-message-fetchers/range-based-stream-queries.md) — Supports retrieving specific segments of the log as continuous streams based on defined ranges.
- [Peer-to-Peer Networking Extensions](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking-extensions.md) — Allows the creation of encrypted protocol streams and registration of custom extensions for peer-to-peer communication. ([source](https://docs.pears.com/building-blocks/hypercore))

### Security & Cryptography

- [Cryptographic Log Signing](https://awesome-repositories.com/f/security-cryptography/cryptographic-log-signing.md) — Secures the log by requiring every append or truncate operation to be signed by a private key.
- [Log Integrity Validation](https://awesome-repositories.com/f/security-cryptography/log-integrity-validation.md) — Generates Merkle Tree hashes of the log to validate the overall authenticity and integrity of the data stream. ([source](https://cdn.jsdelivr.net/gh/holepunchto/hypercore@main/README.md))
- [Merkle Tree Utilities](https://awesome-repositories.com/f/security-cryptography/merkle-tree-utilities.md) — Generates Merkle tree hashes and proofs to verify that specific blocks or ranges have not been tampered with. ([source](https://docs.pears.com/building-blocks/hypercore))
- [Block Encryption](https://awesome-repositories.com/f/security-cryptography/encrypted-key-value-stores/block-encryption.md) — Applies encryption to individual blocks using specific keys to ensure the privacy of stored data. ([source](https://docs.pears.com/building-blocks/hypercore))
- [Message Encryption](https://awesome-repositories.com/f/security-cryptography/message-encryption.md) — Implements encrypted protocol streams for secure message exchange between network participants.

### Software Engineering & Architecture

- [Merkle-Tree Data Integrity](https://awesome-repositories.com/f/software-engineering-architecture/string-processing-algorithms/tree-based-storage/merkle-tree-storage-engines/merkle-tree-data-integrity.md) — Uses Merkle trees to provide cryptographic proofs that specific data blocks remain authentic and untampered.
