0.0.3 • Published 6 years ago

hyperdb-mesh v0.0.3

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

hyperdb-mesh

Automatically authorise HyperDB peers to create a mesh, this code was extracted from the fantasic Cabal cabal-core on Github.

HyperDB allows peers to be authorised to replicate and using discovery-channel, peers are automatically authorised to form the mesh network.

As such you need to keep your discovery channel secret or run this in a controlled environment. I am trying to figure out a way to provide some authorisation process to run in untrusted places but I need to think about that.

Install

npm install hyperdb-mesh

Usage

Peer A

var mesh = Mesh('./demo.db', null, { id: 'mesh1' })
var db   = mesh1.db

mesh.on('ready', function () {

  console.log('peer A key ', db.key)
  // bec87d64bfdc33b6b02779666e46a3f01f0aa07f721c2177a44d64c4a6b50afd

  db.put('/hello', 'world', function (e) {
    if (e) throw e
  })
})

Peer B

Peer B running in a different computer or folder.

var key = 'bec87d64bfdc33b6b02779666e46a3f01f0aa07f721c2177a44d64c4a6b50afd'

var mesh = Mesh('./demo.db', key, { id: 'mesh2' })
var db   = mesh1.db

mesh.on('ready', function () {
  console.log('peer A key ', db.key)
  db.get('/hello', function (e, d) {
    if (!e) console.log('winning ', d[0].value)
  })
})

hyperdb-mesh events & methods

ready event

mesh.on('ready', function () {
  console.log('underlying hyperDB is ready')
})

HyperDB

The underlying HyperDB instance is accessible from .db

console.log(mesh.db.key.toString('hex'))

Pass in HyperDB options like so:

var mesh = Mesh('./json_api.db', key, { id: 'api', options: { valueEncoding: 'json' } })

Todo

  • Run tests on travis
  • Test on Windows
  • More testing
  • Global password or extra auth strategies for peers