All Projects → Manwe-777 → tool-db

Manwe-777 / tool-db

Licence: other
A peer-to-peer decentralized database

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to tool-db

trystero
🤝 Serverless WebRTC matchmaking for painless P2P — Make any site multiplayer in a few lines — Use BitTorrent, IPFS, or Firebase
Stars: ✭ 512 (+3313.33%)
Mutual labels:  peer-to-peer, decentralized, web3
Decentralized Internet
A SDK/library for decentralized web and distributing computing projects
Stars: ✭ 406 (+2606.67%)
Mutual labels:  offline-first, peer-to-peer, decentralized
sprawl
Alpha implementation of the Sprawl distributed marketplace protocol.
Stars: ✭ 27 (+80%)
Mutual labels:  peer-to-peer, decentralized, distributed
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (+460%)
Mutual labels:  peer-to-peer, decentralized, distributed
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+101046.67%)
Mutual labels:  offline-first, peer-to-peer, decentralized
Memo
The memo elastic and resilient key-value store.
Stars: ✭ 111 (+640%)
Mutual labels:  peer-to-peer, decentralized, distributed
Yjs
Shared data types for building collaborative software
Stars: ✭ 5,894 (+39193.33%)
Mutual labels:  offline-first, peer-to-peer, decentralized
geesome-node
🦈 Your self-hosted decentralized Messenger, Social network, Media file storage on top of IPFS! Freely communicate in encrypted chat groups, share images, video, text or any data without a risk of censorship or blocking.
Stars: ✭ 90 (+500%)
Mutual labels:  peer-to-peer, decentralized, web3
Infinit
The Infinit policy-based software-defined storage platform.
Stars: ✭ 363 (+2320%)
Mutual labels:  peer-to-peer, decentralized, distributed
field-manual
The Offical User's Guide to OrbitDB
Stars: ✭ 178 (+1086.67%)
Mutual labels:  peer-to-peer, decentralized, distributed
pyrsia
Decentralized Package Network
Stars: ✭ 103 (+586.67%)
Mutual labels:  peer-to-peer, decentralized, distributed
Orbit Db
Peer-to-Peer Databases for the Decentralized Web
Stars: ✭ 6,381 (+42440%)
Mutual labels:  peer-to-peer, decentralized, distributed
Js Ipfs
IPFS implementation in JavaScript
Stars: ✭ 6,129 (+40760%)
Mutual labels:  peer-to-peer, decentralized, distributed
Js Dag Service
Library for storing and replicating hash-linked data over the IPFS network.
Stars: ✭ 81 (+440%)
Mutual labels:  peer-to-peer, decentralized, distributed
Nile.js
Server
Stars: ✭ 1,757 (+11613.33%)
Mutual labels:  peer-to-peer, distributed
Bitchatclient
Technitium Bit Chat, a secure, peer-to-peer, instant messenger!
Stars: ✭ 111 (+640%)
Mutual labels:  peer-to-peer, decentralized
Ensichat
Project discontinued
Stars: ✭ 143 (+853.33%)
Mutual labels:  peer-to-peer, decentralized
Diztl
Share, discover & download files in your network 💥
Stars: ✭ 162 (+980%)
Mutual labels:  peer-to-peer, distributed
Unstoppable Wallet Android
A secure and decentralized Bitcoin and other cryptocurrency wallet for Android phones. Supports Bitcoin, Ethereum, EOS, Binance Chain, Bitcoin Cash, DASH, ...
Stars: ✭ 165 (+1000%)
Mutual labels:  peer-to-peer, decentralized
Degit
DeGit is a "Decentralized GitHub"
Stars: ✭ 104 (+593.33%)
Mutual labels:  peer-to-peer, decentralized

Tool Db

ToolDb is a peer-to-peer model for a decentralized database, inspired by GundB

It is the mix of a lot of cool concepts into one;

  • Cryptographically secure.
  • Offline first.
  • Fully decentralized.
  • Capable of providing realtime updates.
  • Key-value/document storage.
  • Works in the Browser and Nodejs seamlessly.

For a more detailed documentation head here;

https://github.com/Manwe-777/tool-db-docs

(No live version just yet!, until the protocol is more finalized)

We push towards of the concept of federated servers, where we set up a p2p mesh network between any servers who want to join the swarm, and have those servers manage the connection and data sharing between them, while allowing client peers to connect to them to push updates to the database. This setup IS NOT a requirement! It is just what I think is the best and most reliable way of creating a p2p network for dApps using both desktop and web compatible technologies. Any peer has the capability of connecting to any other peer trough websockets, and modifiying the code to allow webRtc connections between web peers is absolutely possible.

Since anyone can join a federated server swarm to help growing the network we use cryptography (basic public and private key authenthication and signature validation) to ensure all messages are coming from the real authors of the data that they intend to modify; this way by joining a swarm all peers in it can help validate without even having full data; even a new server peer can help, because all information is stored on each message and we dont rely on any centralized database to fetch users data.

Please check the chain-swarm repository to see how a federated server swarm would look like, Tool Db only handles the connection and messaging between peers, but it does not have any logic for peer discovery. We do that using discovery-channel, but you can use any DHT/networking solution you want! even WebRTC between browsers works using the toolDbWebrtc transport.

Future work

While the database is currently functioning as expected, there are many things that could be added or improved to make it even better!

  • Allow data encryption (proably built in), add methods for ECC encryption, shared keys, etc.
  • Allow adding Noise/encryption to connections (probably based on the peer identity, requires initial keys exchange on connection)

Install

You can install ToolDb via npm or yarn;

npm install tool-db

or use it via script in your html;

<script src="https://unpkg.com/tool-db/bundle.js"></script>

That will include all of ToolDb exports in tooldb, then you can use it like;

const { ToolDb, sha256 } = tooldb;

Base usage

Creating a webrtc peers network is as easy as;

import { ToolDb, ToolDbWebrtc } from "tool-db";

const db = new ToolDb({
  networkAdapter: ToolDbWebrtc,
  debug: true,
});

From there you can put and get data using the api;

db.putData("foo-key", "var").then(console.log);

There is a lot more you can do, like subscribe for updates, built-in users credentials validation based on ECC, create federated networks, run servers on Nodejs, auto-replicate data trough them, etc. Make sure more you read trough the documentation!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].