Децентрализованная база данных поверх IPFS
OrbitDB - это бессерверная распределенная одноранговая база данных. OrbitDB использует IPFS в качестве хранилища данных и IPFS Pubsub для автоматической синхронизации баз данных с одноранговыми узлами. Это в конечном итоге согласованная база данных, которая использует CRDT для бесконфликтного слияния баз данных, что делает OrbitDB отличным выбором для децентрализованных приложений (dApps), приложений блокчейна и автономных веб-приложений.
Откройте для себя и ознакомьтесь с лучшим программным обеспечением Blockchain
Данные в OrbitDB могут храниться в
- Хранилище ключей и значений
- База данных журнала (журнал только для добавления)
- Лента (то же, что и база данных журнала, но записи могут быть удалены)
- Хранилище документов (хранить проиндексированные документы JSON)
- Счетчики
Это реализация 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 для полной документации.
- "Начиная"
- OrbitDB
- Ключевое значение
- "бревно"
- "кормить"
- Docstore
- Счетчик тест г
- "общий"
Примеры
Установить зависимости
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>
Фон
Использует следующие модули:
- Ipfs-log
- Crdts
- Орбита-бд-кеш
- Орбита-дб-магазин
- Orbit-db-eventstore
- Orbit-db-feedstore
- Орбита-дб-квстор
- Orbit-db-docstore
- Орбита-дб-counterstore
- Орбита-дб-пабсуб
- Orbit-db-keystore
- Ipfs
- Ipfs-pubub-room
Чтобы немного понять архитектуру, посмотрите визуализацию потока данных на https://github.com/haadcode/proto2 или живую демонстрацию: http://celebdil.benet.ai:8080/ipfs / Qmezm7g8mBpWyuPk6D84CNcfLKJwU6mpXuEN5GJZNkX3XK / .
Атрибуция - это скопированная копия файла readme на github OrbitDB.
Если вы наткнулись на это и являетесь разработчиком, попробуйте сообщить нам, как вам это понравилось, и о вариантах использования в разделе комментариев.
Чтобы узнать больше о технологии децентрализации, следите за публикацией Coinmonks. Чтобы узнать больше об IPFS, нажмите 👇.