# orbitdb/orbitdb

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

8,737 stars · 591 forks · JavaScript · mit

## Links

- GitHub: https://github.com/orbitdb/orbitdb
- awesome-repositories: https://awesome-repositories.com/repository/orbitdb-orbitdb.md

## Topics

`crdt` `database` `decentralized` `distributed` `ipfs` `libp2p` `merkle-crdt` `p2p` `peer-to-peer`

## Description

OrbitDB is a decentralized data storage system that enables the creation of serverless databases residing across a network of peers. It functions as a peer-to-peer database that integrates with a content-addressed storage layer to distribute and replicate data without a central server.

The system utilizes conflict-free replicated data types to ensure eventual consistency and state convergence across distributed nodes. It maintains an immutable record of updates using a directed acyclic graph to preserve causal ordering and cryptographic integrity. Access is managed through a decentralized identity system that uses public-key cryptography to verify write permissions and authenticate users.

The project provides capabilities for distributed data modeling, including document stores and append-only logs. It supports browser-based networking through relay servers and bridging mechanisms that allow web environments to connect to peer networks. Security is handled via pluggable encryption modules and customizable access validation logic.

The implementation allows for extensibility through custom identity providers, tailored storage backends, and user-defined data models.

## Tags

### Data & Databases

- [Decentralized Storage](https://awesome-repositories.com/f/data-databases/decentralized-storage.md) — Provides a serverless database system that resides across a network of peers using decentralized storage.
- [CRDT Databases](https://awesome-repositories.com/f/data-databases/distributed-databases/crdt-databases.md) — Provides a decentralized database using conflict-free replicated data types to ensure eventual consistency across all nodes.
- [Concurrent Update Resolution](https://awesome-repositories.com/f/data-databases/concurrent-update-resolution.md) — Uses a deterministic sort function to order simultaneous updates and determine the final database state. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/OPLOG.md))
- [Content-Addressable Storage](https://awesome-repositories.com/f/data-databases/content-addressable-storage.md) — Implements a storage layer where data is identified by cryptographic hashes, enabling decentralized distribution and retrieval.
- [Distributed Data Synchronization Systems](https://awesome-repositories.com/f/data-databases/distributed-data-synchronization-systems.md) — Maintains various data models, including immutable logs and document stores, across a network of peers. ([source](https://cdn.jsdelivr.net/gh/orbitdb/orbitdb@main/README.md))
- [Distributed Databases](https://awesome-repositories.com/f/data-databases/distributed-databases.md) — Initializes serverless data stores to distribute data across a decentralized network. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/DATABASES.md))
- [IPFS-Based Databases](https://awesome-repositories.com/f/data-databases/ipfs-based-databases.md) — Leverages IPFS for content-addressed storage and data replication across a decentralized network.
- [Custom Data Models](https://awesome-repositories.com/f/data-databases/custom-data-models.md) — Allows implementation of new data structures that inherit cryptographic verification and replication properties. ([source](https://cdn.jsdelivr.net/gh/orbitdb/orbitdb@main/README.md))
- [Cryptographic Commit Logs](https://awesome-repositories.com/f/data-databases/distributed-commit-logs/cryptographic-commit-logs.md) — Uses a Merkle-DAG as a cryptographic commit log to maintain a verified causal order of updates.
- [Storage Backend Adapters](https://awesome-repositories.com/f/data-databases/storage-backend-adapters.md) — Provides an adapter pattern for swapping default storage mechanisms with custom persistent backends. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/STORAGE.md))

### Networking & Communication

- [Append-Only Log Storage](https://awesome-repositories.com/f/networking-communication/data-streaming/append-only-log-storage.md) — Maintains an immutable, distributed record of updates using a Merkle-DAG for causal ordering. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/OPLOG.md))
- [Peer-to-Peer Synchronization Engines](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/data-synchronization-consistency/peer-to-peer-synchronization-engines.md) — Uses conflict-free replicated data types to keep data consistent across multiple devices and networks.
- [Conflict-Free Replicated Data Types](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/synchronization-strategies/conflict-free-replicated-data-types.md) — Uses conflict-free replicated data types to merge concurrent writes and ensure all nodes converge. ([source](https://github.com/orbitdb/orbitdb/tree/main/docs/jsdoc))
- [Distributed Database Synchronization](https://awesome-repositories.com/f/networking-communication/peer-to-peer-clients/distributed-database-synchronization.md) — Synchronizes database state between distributed nodes by connecting peers via unique addresses. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/DATABASES.md))
- [Peer-to-Peer Networking](https://awesome-repositories.com/f/networking-communication/peer-to-peer-networking.md) — Enables direct node-to-node communication using multiaddresses and dial functions for data retrieval. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/CONNECTING_PEERS.md))
- [PubSub Message Propagation](https://awesome-repositories.com/f/networking-communication/pubsub-message-propagation.md) — Propagates database updates across a decentralized network using a publish-subscribe mechanism to synchronize state.
- [Custom Identity Providers](https://awesome-repositories.com/f/networking-communication/client-identity-customization/custom-identity-providers.md) — Supports alternative authentication systems through custom logic for identity generation and signing. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/IDENTITIES.md))
- [Browser-Based Connectivity](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/peer-to-peer-networking/browser-based-connectivity.md) — Enables web browsers to connect to peer networks using WebRTC and relay servers.
- [Distributed Document Stores](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/peer-to-peer-networking/peer-to-peer-file-sharing/distributed-document-stores.md) — Implements a decentralized document store allowing peers to synchronize and query shared data models.
- [TURN Relays](https://awesome-repositories.com/f/networking-communication/remote-access-control/relay-server-management/turn-relays.md) — Uses relay servers and WebRTC to route traffic and connect browsers to the peer network. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/CONNECTING_PEERS.md))
- [WebSocket to Stream Bridges](https://awesome-repositories.com/f/networking-communication/websocket-to-stream-bridges.md) — Routes traffic between browser environments and server daemons to bypass raw network socket restrictions.

### Security & Cryptography

- [Identity and Access Management](https://awesome-repositories.com/f/security-cryptography/identity-access-management.md) — Uses cryptographically signed identities to control write access and authenticate users in a decentralized environment.
- [Decentralized Write Permissions](https://awesome-repositories.com/f/security-cryptography/identity-based-access-control/decentralized-write-permissions.md) — Provides a security layer using public-key cryptography to manage write permissions and identity verification.
- [Cryptographic Identity Verification](https://awesome-repositories.com/f/security-cryptography/identity-verification-modules/cryptographic-identity-verification.md) — Verifies write access and data authenticity by matching signed updates against a set of trusted public keys.
- [Write Permission Controls](https://awesome-repositories.com/f/security-cryptography/write-permission-controls.md) — Enforces write permissions for specific peers to ensure data integrity across the decentralized network. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/GETTING_STARTED.md))
- [Data Encryption](https://awesome-repositories.com/f/security-cryptography/data-encryption.md) — Secures payload data using customizable encryption modules that can be swapped based on security requirements.
- [Payload Encryptions](https://awesome-repositories.com/f/security-cryptography/data-encryption/encrypted-persistence/object-store-encryption/payload-encryptions.md) — Provides pluggable encryption modules to secure stored payload data and replication logs against unauthorized access. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/ENCRYPTION.md))
- [Identity-Based Access Restrictions](https://awesome-repositories.com/f/security-cryptography/domain-access-restrictions/administrative-access-restrictions/identity-based-access-restrictions.md) — Implements identity-based restrictions to control which users or peers can modify identities via immutable lists or grant-and-revoke systems. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/ACCESS_CONTROLLERS.md))
- [Pluggable Encryption Modules](https://awesome-repositories.com/f/security-cryptography/privacy-data-protection/data-encryption/end-to-end-encryption/pluggable-encryption-modules.md) — Provides support for custom encrypt and decrypt functions to apply specialized cryptographic logic to stored data. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/ENCRYPTION.md))
- [Access Validators](https://awesome-repositories.com/f/security-cryptography/storage-permissions/access-validators.md) — Supports custom validation functions to determine if specific data entries can be appended to the store. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/ACCESS_CONTROLLERS.md))

### Software Engineering & Architecture

- [Merkle-DAG](https://awesome-repositories.com/f/software-engineering-architecture/project-management-governance/repository-maintenance/update-logs/merkle-dag.md) — Maintains an immutable distributed record of updates using a directed acyclic graph to preserve causal ordering.
- [Browser-to-Server Channels](https://awesome-repositories.com/f/software-engineering-architecture/message-passing-channels/browser-to-server-channels.md) — Bridges browser nodes to server daemons using WebSockets to bypass raw TCP/QUIC restrictions. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/CONNECTING_PEERS.md))
- [Storage Engine Interfaces](https://awesome-repositories.com/f/software-engineering-architecture/storage-engine-interfaces.md) — Decouples database logic from physical storage through a standard interface for record retrieval and insertion.

### System Administration & Monitoring

- [Immutable Logs](https://awesome-repositories.com/f/system-administration-monitoring/audit-logging-systems/immutable-logs.md) — Maintains an immutable distributed record of updates using Merkle-DAGs to ensure causal ordering.

### Business & Productivity Software

- [Decentralized Identity Engines](https://awesome-repositories.com/f/business-productivity-software/social-media-management/decentralized-identity-engines.md) — Fetches identity data as linked data objects from a decentralized network using content hashes. ([source](https://github.com/orbitdb/orbitdb/blob/main/docs/IDENTITIES.md))
