All Projects → johnny-morrice → godless

johnny-morrice / godless

Licence: MIT license
Peer-to-peer lite database over IPFS

Programming Languages

go
31211 projects - #10 most used programming language
Protocol Buffer
295 projects

Projects that are alternatives of or similar to godless

Peer Pad
📝 Online editor providing collaborative editing in really real-time using CRDTs and IPFS.
Stars: ✭ 564 (+683.33%)
Mutual labels:  ipfs, crdt
Ipfs Log
Append-only log CRDT on IPFS
Stars: ✭ 269 (+273.61%)
Mutual labels:  ipfs, crdt
Berty
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
Stars: ✭ 5,101 (+6984.72%)
Mutual labels:  ipfs, crdt
Orbit Db
Peer-to-Peer Databases for the Decentralized Web
Stars: ✭ 6,381 (+8762.5%)
Mutual labels:  ipfs, crdt
Y Ipfs Connector
Y.js connector over IPFS
Stars: ✭ 49 (-31.94%)
Mutual labels:  ipfs, crdt
Peer Base
Build real-time collaborative DApps on top of IPFS
Stars: ✭ 208 (+188.89%)
Mutual labels:  ipfs, crdt
Go Orbit Db
Go version of P2P Database on IPFS
Stars: ✭ 119 (+65.28%)
Mutual labels:  ipfs, crdt
dynamic-data-and-capabilities
[ARCHIVED] Dynamic Data and Capabilities in IPFS Working Group
Stars: ✭ 57 (-20.83%)
Mutual labels:  ipfs, crdt
pc
people's cloud: using the ideas of botnets for good
Stars: ✭ 31 (-56.94%)
Mutual labels:  ipfs
aragon-desktop
(Aragon 1) Managing an decentralized organization on a desktop near you
Stars: ✭ 37 (-48.61%)
Mutual labels:  ipfs
s3x
s3x is a minio gateway providing an S3 API powered by TemporalX that uses IPFS as the data storage layer. It lets you turn any S3 application into an IPFS application with no change in application design
Stars: ✭ 85 (+18.06%)
Mutual labels:  ipfs
react-ethereum-ipfs
This is a starter kit for a demo dApp using React, Ethereum and IPFS
Stars: ✭ 18 (-75%)
Mutual labels:  ipfs
field-manual
The Offical User's Guide to OrbitDB
Stars: ✭ 178 (+147.22%)
Mutual labels:  ipfs
rdoc
Conflict-free replicated JSON implementation in native Go
Stars: ✭ 76 (+5.56%)
Mutual labels:  crdt
filecoin-client
Golang的轻量级filecoin客户端,支持离线签名,基本满足钱包交易所充值提现逻辑
Stars: ✭ 50 (-30.56%)
Mutual labels:  ipfs
ipfs-encrypted-share
IPFS Encrypted Share
Stars: ✭ 14 (-80.56%)
Mutual labels:  ipfs
go-ipfs-recovery
Data recovery for IPFS protocol.
Stars: ✭ 16 (-77.78%)
Mutual labels:  ipfs
yorkie-js-sdk
Yorkie JavaScript SDK
Stars: ✭ 57 (-20.83%)
Mutual labels:  crdt
nifty-game
🃏🎮A NFT(ERC721) card game build on Ethereum, Truffle, Ganache and hosting on IPFS.
Stars: ✭ 222 (+208.33%)
Mutual labels:  ipfs
netty-queue
Simple queue: java, json-rest, netty
Stars: ✭ 21 (-70.83%)
Mutual labels:  crdt

Godless

A toy peer-to-peer database for the future internet.

What does that mean?

Godless is a way of sharing structured data between computers without using servers or the cloud.

Check the wiki for a tutorial.

Try it!

Run IPFS:

$ ipfs daemon

Run server:

$ godless init
$ godless store server --early

The --early flag indicates that the server should fail if it can find no running IPFS daemon.

Now send queries to the server using godless query console:

> join books rows (@key=book50, authorName="EL James", publisher="Don't wanna know")

QmPbufdDocGLc1jxmyLwMXdNpnj4Gsgs5Ve5ky4at5DFYx
Waited 278.572562ms for response from server.

> select books where str_eq(@key, "book50")

--------------------------------------------------
| Table | Row    | Entry      | Point            |
--------------------------------------------------
| books | book50 | authorName | EL James         |
| books | book50 | publisher  | Don't wanna know |
--------------------------------------------------
Found 2 Namespace Entries.
Waited 29.798089ms for response from server.

How does it work?

Data is stored in a CRDT namespace suitable for sharing between peers. This is indexed using an another datastructure which itself is a CRDT. Indexes and namespaces are arranged into a canonical order and saved to the Interplanetary File System.

The datastructures can be reassembled at another peer by looking up the IPFS hash. Index hashes are shared over PubSub.

Crucially, data is signed using strong cryptography. You can specify a key in your queries to sign (in joins) or verify (in selects). This is crucial to maintaining data consistency in the face of arbitrary joins by other net users :).

Installing

Godless is currently in alpha stage for Linux only.

For everyone

Check out the releases page.

Download signatures from teoma.org.uk.

For Golang programmers

go get -u github.com/johnny-morrice/godless/godless
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].