Fluree

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:07, 3 октября 2020.
Fluree
Fluree.jpg
Создатели: Fluree PBC
Разработчики: Fluree PBC Development Team
Постоянный выпуск: 0.15 / июнь 2020
Состояние разработки: Active
Операционная система: Windows, MacOS, Linux
Платформа: The Web3 Data Platform
Тип ПО:

https://www.zeeve.io/

Blockchain

Decentralized application (dApp)

Big Data
Веб-сайт flur.ee

Fluree - это платформа управления данными, созданная для поддержки требований современных приложений, облегчения внешнего и децентрализованного обмена данными, совместной работы и управления транзакциями. Fluree - это универсальный набор инструментов, который можно использовать для поддержки корпоративных приложений, облегчения надежного обмена данными и совместной работы, а также для создания комплексных решений на основе блокчейнов.

Хотя принято проводить четкую границу между блокчейнами и базами данных, Fluree объединила две соответствующие технологии, чтобы предоставить инструмент для создания ориентированных на данные приложений, которые делают практическое (и масштабируемое) использование децентрализации, неизменяемости и целостности данных.[Источник 1]

История

Штаб-квартира компании находится в Уинстоне Салеме, Северная Каролина. Компания была основана в 2017 году Эндрю Филиповски и Брайаном Платцем. [Источник 2]

В 2017 году перемещение границы между внутренними транзакциями и общедоступными регистрами слишком усложняло (и увеличивало накладные расходы) бизнес-процесс. Для большинства бизнес-транзакций не обязательно нужен публичный реестр, поэтому создание всеобъемлющей базы данных блокчейнов было нецелесообразно или невозможно. Однако FlureeDB решила эту проблему, добавляя Composite Consensus, в котором каждая база данных может работать на разных консенсусных уровнях блокчейна, что позволило проверять и защищать данные в соответствии с характером транзакции. Потребности с низким уровнем консенсуса (внутренние транзакции) осуществляются очень быстро, в то время как потребности с высоким уровнем используют преимущества децентрализованного публичного учета и проверки. Запрос FlureeDB позволил объединять несколько БД, поэтому появилась возможность запрашивать несколько согласованных БД как одну систему БД.

Fluree был создан, чтобы предоставить преимущества и полезность технологии блокчейна напрямую любой организации, которая нуждается в более высоком уровне безопасности транзакций и неизменности данных. Гибкое сегментирование Fluree и развертывание нескольких блокчейнов создает широкий спектр вариантов использования для организаций, которые стремятся подорвать свою отрасль с помощью мощи и полезности блокчейна.

FlureeDB смогла использовать и раскрыть силу неизменности, сделав данные практически невозможными для манипулирования. Это позволяет децентрализованным приложениям гарантировать целостность данных, противостоять цензуре и полностью защищаться от манипуляций.[Источник 3]

Архитектура Fluree

Большинство современных баз данных запускают механизм транзакции («записи») и узла запроса («чтение») на одном сервере. Чтобы обеспечить масштабируемость современных баз данных, а также неизменные и децентрализованные преимущества блокчейна, Fluree разделила традиционную базу данных на две части: FlureeDL и FlureeDB .

FlureeDL - это бухгалтерская книга, которая проверяет, хранит и защищает все транзакции. FlureeDB использует FlureeDL с механизмом запросов семантического графа для поддержки корпоративных приложений.

Обе системы масштабируются и настраиваются независимо друг от друга.[Источник 4]

Функции Fluree

  • Provable History

Дает возможность показать не только целостность каждой части программы, но и источник каждой транзакции.

  • Manipulation Proof

В качестве журнала, предназначенного только для добавления, Fluree выводит проверенный и полный контрольный журнал, устойчивый к подделке.

  • Historic Data Access

Возможность выполнять запросы в любой момент времени, имея доступ к ранее просматриваемым материалам.

  • Semantic Graph Queries

Модель RDF Fluree снабжает данные семантическим контекстом для получения практических сведений и масштабируемой корпоративной аналитики.

  • Decentralization

Позволяет децентрализовать бухгалтерскую книгу, используя методы интеллектуального программирования.

  • Direct Data Sharing over APIs

Разрешение доступа происходит на уровне данных, а не в объединении сети API-интерфейсов.[Источник 4]

Для чего необходим Fluree?

Команда Fluree стремится решить довольно много проблем в спектре управления данными, но с точки зрения блокчейна Fluree стремится принести огромные преимущества блокчейна непосредственно на уровень данных типичного стека приложений.

Блокчейн резко вырос из-за высокого спроса на приложения, которые обеспечивают неизменность, прозрачность и децентрализацию, но универсальный фактор препятствует многим проектам: например, управлению данными и их хранению. Публичные блокчейны оптимизированы и предназначены для очень простой передачи активов, что требует только минимальные требования к управлению данными.

Но что происходит, когда мы пытаемся модернизировать тот же формат цепочки блоков для предприятия - например, приложение ERP цепочки поставок, которое управляет заказами на покупку, заинтересованными сторонами, информацией RFID и т.д.? Создание блокчейн-решения, которое изначально обрабатывает данные и метаданные, становится все более сложной задачей - как в разработке, так и в области информационной безопасности.

Руководители проектов обнаружили, что, поскольку большинство цепочек блоков подключаются через уровень «бизнес-логики» стека приложений, им по-прежнему необходимо передавать данные и метаданные, связанные с транзакциями цепочки блоков, в централизованную статическую систему базы данных. Отсутствие полного хранилища данных в цепочке приводит к ненужному уровню интеграции (или, как некоторые говорят: «попытка принудительно поместить блокчейн в стек, который просто отвергает его»).

Fluree решает проблему интеграции данных как основную технологию баз данных, позволяя разработчикам создавать унифицированный и неизменяемый набор данных для поддержки и масштабирования своих приложений. Никаких липких интеграций или дополнительных уровней - только одно запрашиваемое хранилище данных блокчейна, оптимизированное для корпоративных приложений. [Источник 5]

Отличие Fluree от других блокчейн-решений

Fluree - это частный/корпоративный блокчейн, который фокусируется на управлении данными и целостности транзакций между сторонами с использованием Fluree SmartFunctions™. Fluree работает на более общем уровне, чем большинство блокчейнов, которые обычно специально созданы для облегчения транзакций с активами (например, деньгами, ценными бумагами, цифровыми активами). Работая на более настраиваемом уровне, Fluree не только выполняет функцию лучшего хранилища данных, но и позволяет децентрализовать части (или все) хранилища данных и использовать их в качестве решения для совместной работы.

Когда требуется, чтобы блокчейн облегчил ненадежные и прозрачные транзакции с активами наряду с существующим приложением (где блокчейн действует как услуга) или для приложения, которое полностью ориентировано на деньги и, следовательно, практически не требует дополнительной логики или пользовательского интерфейса, существующие блокчейны, вероятно, предложат более быстрый путь, чем Fluree, поскольку их документация и настраиваемые правила ориентированы на эту конкретную проблему. Fluree может способствовать реализации таких и других решений, но его необходимо настраивать для каждой из этих целей.

Для целей, когда желательно, чтобы блокчейн облегчил обмен информацией, Fluree предлагает единое комплексное решение и предоставляет огромную полезность каждому из участников в отношении данных, которыми управляют и которыми обмениваются. Традиционным блокчейнам не хватает возможности управлять данными в той степени, в которой это требуется корпоративным приложениям. Некоторые из них могут хранить биты информации, но не предлагают широкие возможности запросов к этой информации. Там, где информация является частью решения блокчейна, разработчики вынуждены были встроить все управление данными в традиционную (централизованную) базу данных, которая не обладает такой же целостностью, как блокчейн, а затем создать специальные API-интерфейсы для обмена этими данными с другими сторонами. [Источник 1]

Начало работы с Fluree

Fluree On-Demand

Существуют два варианта запуска Fluree:

  1. Fluree On-Demand
  2. Fluree Anywhere

Использование Fluree On-Demand дает возможность входить в систему и взаимодействовать с бухгалтерскими книгами через веб-интерфейс и конечные точки API. После регистрации и создания учетной записи появится возможность сразу же начать использовать Fluree. Однако, работая с Fluree On-Demand, пользователь будет меньше контролировать свой экземпляр Fluree, а именно:

  1. Fluree будет обновляться самостоятельно, конечный пользователь не будет иметь доступа к управлению обновлениями.
  2. Отсутствие прямого доступа к файлам бухгалтерской книги.
  3. Возможность использования не более пяти регистров.
  4. Возможность использования только централизованных бухгалтерских книг.

Fluree On-Demand рекомендуется использовать тем, кто тестирует или использует Fluree для небольших демонстраций или пробных работ.

Fluree Anywhere

Установка

Для запуска Fluree вам потребуется Java Server 8 (Java 1.8) или выше. Чтобы проверить свою версию Java, введите в терминале:
java -version

Затем вам нужно будет загрузить версию Fluree:

Последняя стабильная версия: https://s3.amazonaws.com/fluree-releases-public/fluree-stable.zip Последняя версия: https://s3.amazonaws.com/fluree-releases-public/fluree-latest.zip

Вы можете загрузить последнюю версию Fluree определенной версии (начиная с версии 13 и выше), используя следующую формулу:
https://fluree-releases-public.s3.amazonaws.com/fluree-[MAJOR VERSION].[MINOR VERISON]-latest.zip.
Или вы можете загрузить определенную версию Fluree, используя следующую формулу:
https://fluree-releases-public.s3.amazonaws.com/fluree-[MAJOR VERSION].[MINOR VERISON].[PATCH].zip.

Загрузите и разархивируйте: последнюю стабильную версию Fluree .

Запуск Fluree

Чтобы запустить Fluree со всеми параметрами по умолчанию, перейдите в каталог, в который вы загрузили Fluree в терминале, затем запустите Fluree с помощью следующей команды:

  • Для систем Mac или Linux:
    ./fluree_start.sh
  • Для систем Windows вам необходимо загрузить эмулятор Bash, например Git For Windows, чтобы правильно запустить Fluree. В эмуляторе Bash вы можете запустить
    ./fluree_start.shFluree.

Когда Fluree запустится, ваш терминал выведет сообщение (сообщение может отличаться в зависимости от версии):

- Starting web server on port: 8080 with an open API. -
-
- http://localhost:8080 -
-

Если указанное выше сообщение не отображается в вашем терминале, терминал должен распечатать соответствующее сообщение об ошибке. Распространенные ошибки включают в себя выбранный вами порт, который уже используется и на нем не установлена ​​Java 8 или более поздняя версия.

После первого запуска Fluree у вас не будет никаких баз данных. Для начала вам нужно будет создать базу данных. Создание реестра и любое другое взаимодействие с Fluree может происходить либо через API, либо через пользовательский интерфейс

Чтобы выйти из Fluree, просто нажмите ctrl + c, чтобы выйти из текущего процесса на вашем терминале. Если вы не запускали [Fluree в памяти] ((/ guides / Infrastructure / file-system)), это не приведет к удалению каких-либо реестров или аннулированию успешных транзакций.

Чтобы перезапустить Fluree, перейдите в папку, содержащую ваш экземпляр Fluree, и запустите ./fluree_start.sh. Это перезапустит ваш экземпляр Fluree со всеми вашими предыдущими сетями и реестрами.

Чтобы полностью сбросить ваш экземпляр Fluree (удалив ВСЕ данные реестра и группы транзакторов), вы можете закрыть свой экземпляр и удалить data/и default_private_key.txt (или место, где хранится ваш закрытый ключ, если вы изменили его).

Параметры конфигурации

Файл fluree_sample.properties содержит все настраиваемые свойства, а также их краткие описания. Чтобы изменить свойства, вы можете изменить файл свойств или указать переменные среды или флаги свойств Java (например, ./fluree_start.sh -Dfdb-api-port=8081). Переменные среды имеют приоритет над обоими параметрами конфигурации, указанными как флаги свойств Java, и параметрами в fluree_sample.properties. Флаги свойств Java, в свою очередь, имеют приоритет над параметрами конфигурации, перечисленными в fluree_sample.properties.[Источник 6]

Работа с Fluree

Начало

После успешной загрузки Fluree рекомендуется начать с этого раздела, используя FlureeQL в качестве языковой настройки.

В этом разделе показано, как создать простую схему и заполнить базу данных образцами данных.

Если вы используете пользовательский интерфейс, вы можете выпустить весь код, показанный ниже, прямо на странице FlureeQL вашего пользовательского интерфейса.

Если вы используете API, вы можете отправить все эти транзакции конечным точкам с расширением /transact.

Новая база данных

Для начала необходимо создать новую базу данных. Это можно сделать через пользовательский интерфейс, через API для Fluree Anywhere или через API для Fluree On-Demand.

Обзор

В Fluree схемы состоят из коллекций и предикатов. Коллекция аналогична таблице реляционной базы данных. Каждый раз, когда пользователю нужен новый тип элемента в базе данных, необходимо создавать новую коллекцию. Например, коллекции в базе данных могут включать человека, компанию и город.

У каждой коллекции есть предикаты . Предикаты аналогичны столбцам реляционной базы данных. Характеристики коллекции - это ее предикаты. Например, коллекция person может иметь следующие предикаты: person / firstName, person / lastName и person / age. Значения этих предикатов называются объектами.

Добавление коллекций

Ниже приведен пример добавления пяти новых коллекций: person, chat, comment, artist, и movie.

[{
 "_id": "_collection",
 "name": "person"
 },
 {
 "_id": "_collection",
 "name": "chat"
 },
 {
 "_id": "_collection",
 "name": "comment"
 },
 {
 "_id": "_collection",
 "name": "artist"
 },
 {
 "_id": "_collection",
 "name": "movie"
 }]

Добавление предикатов

Предикаты схемы аналогичны столбцам реляционной базы данных. Приведенная ниже транзакция создает следующие предикаты:

  • person/handle
  • person/fullName
  • person/follows
  • person/age
  • person/favNums
  • person/favArtists
  • person/favMovies
  • person/user
  • chat/message
  • chat/person
  • chat/instant
  • chat/comments
  • comment/message
  • comment/person
  • artist/name
  • movie/title
[{
  "_id":    "_predicate",
  "name":   "person/handle",
  "doc":    "The person's unique handle",
  "unique": true,
  "type":   "string"
 },
 {
  "_id":   "_predicate",
  "name":  "person/fullName",
  "doc":   "The person's full name.",
  "type":  "string",
  "index": true
 },
 {
  "_id": "_predicate",
  "name": "person/age",
  "doc": "The person's age in years",
  "type": "int",
  "index": true
 },
 {
  "_id":   "_predicate",
  "name":  "person/follows",
  "doc":   "Any persons this subject follows",
  "type": "ref",
  "restrictCollection": "person"
 },
 {
  "_id":    "_predicate",
  "name":   "person/favNums",
  "doc":    "The person's favorite numbers",
  "type":   "int",
  "multi":  true
 },
 {
  "_id":    "_predicate",
  "name":   "person/favArtists",
  "doc":    "The person's favorite artists",
  "type":   "ref",
  "restrictCollection": "artist",
  "multi":  true
 },
 {
  "_id":    "_predicate",
  "name":   "person/favMovies",
  "doc":    "The person's favorite movies",
  "type":   "ref",
  "restrictCollection": "movie",
  "multi":  true
 },
 {
  "_id":  "_predicate",
  "name": "person/user",
  "type": "ref",
  "restrictCollection": "_user"
 },
 {
  "_id":  "_predicate",
  "name": "chat/message",
  "doc":  "A chat message",
  "type": "string",
  "fullText": true
 },
 {
  "_id":  "_predicate",
  "name": "chat/person",
  "doc":  "A reference to the person that created the message",
  "type": "ref",
  "restrictCollection": "person"
 },
 {
  "_id":   "_predicate",
  "name":  "chat/instant",
  "doc":   "The instant in time when this chat happened.",
  "type":  "instant",
  "index": true
 },
 {
  "_id":       "_predicate",
  "name":      "chat/comments",
  "doc":       "A reference to comments about this message",
  "type":      "ref",
  "component": true,
  "multi":     true,
  "restrictCollection": "comment"
 },
 {
  "_id":  "_predicate",
  "name": "comment/message",
  "doc":  "A comment message.",
  "type": "string",
  "fullText": true
 },
 {
  "_id":  "_predicate",
  "name": "comment/person",
  "doc":  "A reference to the person that made the comment",
  "type": "ref",
  "restrictCollection": "person"
 },
 {
  "_id": "_predicate",
  "name": "artist/name",
  "type": "string",
  "unique": true
 },
 {
  "_id": "_predicate",
  "name": "movie/title",
  "type": "string",
  "fullText": true,
  "unique": true
 }]

Добавление образцов данных

Приведем пример добавления образцов:

[{
  "_id":      "person$jdoe",
  "handle":   "jdoe",
  "fullName": "Jane Doe",
  "age": 25,
  "favNums":  [1223, 12, 98, 0, -2],
  "favArtists": ["artist$1", "artist$2", "artist$3"],
  "follows": "person$zsmith",
  "favMovies": ["movie$1", "movie$2", "movie$3"]
 },
 {
  "_id":      "person$zsmith",
  "handle":   "zsmith",
  "fullName": "Zach Smith",
  "age": 63,
  "favNums": [5, 645, 28, -1, 1223],
  "favArtists": ["artist$1"],
  "follows": "person$jdoe",
  "favMovies": ["movie$2", "movie$3"]
 },
 {
  "_id":      "person$anguyen",
  "handle":   "anguyen",
  "fullName": "Amy Nguyen",
  "age": 34,
  "favNums": [7,  98, 0, 2],
  "favArtists": ["artist$2", "artist$3"],
  "follows": "person$jdoe",
  "favMovies": ["movie$3"]
 },
 {
  "_id":      "person$dsanchez",
  "handle":   "dsanchez",
  "fullName": "Diana Sanchez",
  "age": 70,
  "favNums": [9, 1950],
  "favArtists": ["artist$2"],
  "follows": "person$anguyen",
  "favMovies": ["movie$1", "movie$2", "movie$3"]
 },
 {
  "_id":     "chat",
  "message": "Hi! I'm chat from Jane.",
  "person":  "person$jdoe",
  "instant": "#(- (now) 20000)",
  "comments": ["comment$zsmith", "comment$anguyen"]
 },
 {
  "_id":     "chat",
  "message": "Hi! I'm a chat from Diana.",
  "person":  "person$dsanchez",
  "instant": "#(- (now) 5000)",
  "comments": ["comment$zsmithagain", "comment$anguyenagain"]
 },
 {
  "_id":     "chat",
  "message": "Hi! I'm a chat from Zach.",
  "person":  "person$zsmith",
  "instant": "#(now)"
 },
 {
  "_id":     "comment$zsmith",
  "message": "Zsmith is responding!",
  "person": "person$zsmith"
 },
 {
  "_id":     "comment$anguyen",
  "message": "Hi Jane!",
  "person": "person$anguyen"
 },
 {
    "_id": "comment$zsmithagain",
    "message": "Welcome Diana!",
    "person": "person$zsmith"
 },
 {
    "_id": "comment$anguyenagain",
    "message": "Welcome Diana! This is Amy.",
    "person": "person$anguyen"
 },
 {
  "_id": "artist$1",
  "name": "Gustav Klimt"
 },
 {
  "_id": "artist$2",
  "name": "Augusta Savage"
 },
 {
  "_id": "artist$3",
  "name": "Jean-Michel Basquiat"
 },
 {
 "_id": "movie$1",
 "title": "The Shawshank Redemption"
 },
 {
 "_id": "movie$2",
 "title": "Hot Fuzz"
 },
 {
 "_id": "movie$3",
 "title": "Gran Torino"
 }]

В приведенной выше транзакции добавляются четыре пользователя, три чата, четыре комментария, три исполнителя и три фильма.[Источник 6]

Видео-обзор полной версии приложения

Более подробно с этапами установки, использованием встроенных функций и работе с приложением можно ознакомиться при просмотре видео:

Источники

  1. 1,0 1,1 Lichtigstein A.Meet Fluree- A Comprehensive Solution For Enterprise Data Management & Trusted Data Sharing // 101blockchains.[2020 — ].URL: https://101blockchains.com/fluree/ (дата обращения: 14.09.2020).
  2. Fluree - Crunchbase // Crunchbase. [2020 — ]. URL: https://www.crunchbase.com/organization/fluree-pbc (дата обращения: 14.09.2020).
  3. Doubleday K. Blockchain, Meet Database // FlureeDB [2018 — ]. URL: https://medium.com/fluree/blockchain-meet-database-5eecaa38a358 (Дата обращения: 19.09.2020)
  4. 4,0 4,1 Fluree | The Web3 Data Platform Fluree // Fluree.[2018 — ]. URL: https://flur.ee/ (дата обращения: 26.09.2020).
  5. Why Fluree? // Fluree.[2018 — ]. URL: https://flur.ee/why-fluree/ (дата обращения: 19.09.2020).
  6. 6,0 6,1 Fluree. Getting Started // Fluree.[2018 — ]. URL: https://docs.flur.ee/docs/getting-started/start-here (дата обращения: 25.09.2020).