DKV is a decentralized graph store built on IPFS.
import IPFS from 'ipfs'
import DKV from 'dkv'
const ipfs = await IPFS.create()
let store = await DKV.empty(ipfs)
store = await store.set('mykey', { hello: 'world' })
store.id // 'bafyreibbbjhk7fnxplcc6fqb24jctxffgxoqv65466gbx73n3jbqyzn3ru'
await store.get('mykey') // { hello: 'world' }
Every mutation (set()
, del()
) returns a new instance because every
mutation creates a new immutable state with a unique id
(CID).
Since the data is accessible over IPFS it is shared in a p2p network
and other peers can access the data using the id of the store (store.id
).
let store = DKV.from(ipfs, 'bafyreibbbjhk7fnxplcc6fqb24jctxffgxoqv65466gbx73n3jbqyzn3ru')
DKV offers a simple interface for storing key/value pairs. Values can include links to other values recursively, giving you the ability to create complex graphs that de-duplicate commonly linked data.
let store = await DKV.empty(ipfs)
const pizza = await store.link({ type: 'food', name: 'pizza' })
store = await store.set('bob', { type: 'person', name: 'bob', favoriteFoor: pizza })
const bob = await store.get('bob')
await bob.favoriteFood() // { type: 'food', name: 'pizza' }