Skip to content

Instantly share code, notes, and snippets.

/* Sketch of how muport identities could be used in OrbitDB */
const identitySignerFn = async (id, data) => {
// One can check here too that identity-to-be-signed is actually
// the same muport identity
if (id !== muport.getDid()) throw new Error("Trying to sign with a different identity!")
return await muport.sign(data)
}
const identityVerifierFn = async (identity) => {
'use strict'
const path = require('path')
const AccessController = require('./access-controller')
class OrbitDBAccessController extends AccessController {
constructor (orbitdb) {
super()
this._orbitdb = orbitdb
this._db = null
<!DOCTYPE html>
<html>
<head>
<title>Hello, WebVR! - A-Frame</title>
<meta name="description" content="Hello, WebVR! - A-Frame">
<script type="text/javascript" src="lib/aframe.min.js" charset="utf-8"></script>
<script type="text/javascript" src="lib/orbitdb.min.js" charset="utf-8"></script>
<script type="text/javascript" src="lib/ipfs-browser-daemon.min.js" charset="utf-8"></script>
</head>
<body>
/* Components for Orbit */
'use strict'
const styles = {
layout: {
flex: {
display: 'flex',
},
row: {
@haadcode
haadcode / pubsub.js
Last active November 24, 2016 06:28
'use strict'
const PubsubMessageStream = require('ipfs-pubsub-message-stream')
class Pubsub {
constructor (send: Function) {
this._subscriptions = {}
this._send = send
}
fs.init(1 * 1024 * 1024, (err) => {
if(err) {
logger.error("Couldn't initialize file system:", err)
} else {
logger.debug("FileSystem initialized")
}
})

clients

  • orbit-electron
  • orbit-textui (--> orbit-terminal?)

core

  • orbit-core (orbit_)
    • orbit-crypto
    • orbit-db
      • orbit-db-store
  • ipfs-log
'use strict';
// const ipfsd = require('ipfsd-ctl');
const IPFS = require('ipfs')
const ipfsd = require('ipfsd-ctl');
const OrbitDB = require('../src/OrbitDB');
const Timer = require('./Timer');
// usage: benchmark.js <network hash> <username> <channel>;

ImmutableDB

An interface for immutable databases

ImmutableDB is an abstract interface for content-addressed databases that:

  1. save the same blob of data to the same key every time (write)
  2. return the same blob of data with the same query key every time (read)

The difference to a a traditional key-value store is that the key doesn't get specified explicitly. Instead, the key gets calculated based on the data using a hashing function. This is also called content-addressed storage.

@haadcode
haadcode / Software Development Process and Managing It - PL Team Week Lisbon 2016.md
Last active July 17, 2016 17:08
Software Development Process and Managing It - PL Team Week Lisbon 2016.md

Software Development Process and Managing It

Introduction

  • We're growing in terms of team and the product
  • We're moving from "prototyping" to "production" --> our needs change
  • Need to shift our mindset to "delivering"
  • Need a way to manage all the 1001 endeavours we have

Introduction to Methodologies