Децентрализованная база данных поверх IPFS

OrbitDB - это бессерверная распределенная одноранговая база данных. OrbitDB использует IPFS в качестве хранилища данных и IPFS Pubsub для автоматической синхронизации баз данных с одноранговыми узлами. Это в конечном итоге согласованная база данных, которая использует CRDT для бесконфликтного слияния баз данных, что делает OrbitDB отличным выбором для децентрализованных приложений (dApps), приложений блокчейна и автономных веб-приложений.

Откройте для себя и ознакомьтесь с лучшим программным обеспечением Blockchain

Данные в OrbitDB могут храниться в

Это реализация Javascript, которая работает как в Node.js, так и в браузерах.

Для начала попробуйте OrbitDB CLI, прочтите Руководство по началу работы или отметьте Live demo 1, Live demo 2 или P2P TodoMVC app!

Оглавление

  • "Использование"
  • API
  • "Примеры"
  • "Разработка"
  • "Фон"
  • Содействие
  • "Лицензия"

использование

Прочтите руководство НАЧАЛО РАБОТЫ, чтобы получить более подробное руководство и понять, как работает OrbitDB.

OrbitDB в настоящее время поддерживает Linux и OS X, Windows пока не поддерживается.

CLI

Информацию об инструменте командной строки для управления базой данных orbit-db см. В разделе Интерфейс командной строки OrbitDB.

Его можно установить из Npm с помощью:

npm install orbit-db-cli -g

Как библиотека

Установите зависимости:

npm install orbit-db ipfs

Используйте его как модуль:

const IPFS = require('ipfs')
const OrbitDB = require('orbit-db')
// OrbitDB uses Pubsub which is an experimental feature
// and need to be turned on manually.
// Note that these options need to be passed to IPFS in 
// all examples even if not specfied so.
const ipfsOptions = {
  EXPERIMENTAL: {
    pubsub: true
  },
}
// Create IPFS instance
const ipfs = new IPFS(ipfsOptions)
ipfs.on('error', (e) => console.error(e))
ipfs.on('ready', async () => {
  // Create a database
  const orbitdb = new OrbitDB(ipfs)
  const db = await orbitdb.log('database name')
  // Add an entry to the database
  const hash = await db.add('hello world')
  // Get last 5 entries
  const latest = db.iterator({ limit: 5 }).collect()
  console.log(JSON.stringify(latest, null, 2))
})

Подробнее см. в примерах для kvstore, eventlog, feed, docstore и counter.

Минимальная необходимая версия Node.js сейчас - 8.0.0. Для использования со старыми версиями Node.js мы предоставляем ES5-совместимую сборку через пакет npm, расположенный в dist/es5/ при установке через npm.

API

См. Документацию по API для полной документации.

Примеры

Установить зависимости

git clone https://github.com/orbitdb/orbit-db.git
cd orbit-db
npm install

Вам также понадобятся babel и webpack, если они еще не установлены:

npm install --global babel-cli
npm install --global webpack

Некоторые зависимости зависят от собственных модулей надстройки, поэтому вам также необходимо выполнить предварительные требования для установки node-gyp. Поэтому пользователям Linux может потребоваться

make clean && make

чтобы повторить локальный package-lock.json с рабочими собственными зависимостями.

Пример браузера

В macOS:

npm run build
npm run examples:browser-macos

В Linux:

npm run build
npm run examples:browser-linux

Проверьте код в examples / browser / browser.html и попробуйте живой пример.

Пример Node.js

npm run examples:node

Журнал событий

Посмотрите код в examples / eventlog.js и запустите его:

node examples/eventlog.js

Больше примеров в примерах.

Пользовательские типы магазинов

Вы можете добавить в OrbitDB собственные типы магазинов:

// define custom store type
class CustomStore extends DocumentStore {
  constructor (ipfs, id, dbname, options) {
    super(ipfs, id, dbname, options)
    this._type = CustomStore.type
  }
  static get type () {
    return 'custom'
  }
}
// add custom type to orbitdb
OrbitDB.addDatabaseType(CustomStore.type, CustomStore)
// instantiate custom store
let orbitdb = new OrbitDB(ipfs, dbPath)
let store = orbitdb.create(name, CustomStore.type)

Разработка

Выполнить тесты

npm test

Строить

npm run build

Контрольный показатель

node benchmarks/benchmark-add.js

Смотрите тесты / для получения дополнительных тестов.

логирование

Чтобы включить вывод журнала OrbitDB, установите глобальную переменную ENV с именем LOG на _15 _, _ 16_ или error:

LOG=debug node <file>

Фон

Использует следующие модули:

Чтобы немного понять архитектуру, посмотрите визуализацию потока данных на https://github.com/haadcode/proto2 или живую демонстрацию: http://celebdil.benet.ai:8080/ipfs / Qmezm7g8mBpWyuPk6D84CNcfLKJwU6mpXuEN5GJZNkX3XK / .

Атрибуция - это скопированная копия файла readme на github OrbitDB.

Если вы наткнулись на это и являетесь разработчиком, попробуйте сообщить нам, как вам это понравилось, и о вариантах использования в разделе комментариев.

Чтобы узнать больше о технологии децентрализации, следите за публикацией Coinmonks. Чтобы узнать больше об IPFS, нажмите 👇.