Децентрализованное хранилище LF переведено на открытую лицензию

Доступен выпуск LF 1.1.0, децентрализованного реплицируемого хранилища данных в формате ключ/значение. Проект развивается компанией ZeroTier, разрабатывающей виртуальный Ethernet-коммутатор, позволяющий объединить размещённые у разных провайдеров хосты и виртуальные машины в одной виртуальной локальной сети, участники которой обмениваются данными в режиме P2P. Код проекта написан на языке Си. Новый выпуск примечателен переходом на свободную лицензию MPL 2.0 (Mozilla Public License).

Ранее код LF был доступен под лицензией BSL (Business Source License), не являющуюся свободной из-за дискриминации отдельных категорий пользователей. Лицензия BSL была предложена сооснователями MySQL в качестве альтернативы модели Open Core. Суть BSL в том, что код расширенной функциональности изначально доступен для внесения изменений, но в течение какого-то времени может применяться бесплатно только при соблюдении дополнительных условий, для обхода которых требуется приобретение коммерческой лицензии.

LF является полностью децентрализованной системой и позволяет развернуть поверх произвольного числа узлов единое хранилище данных в формате ключ-значение. На всех узлах данные хранятся в синхронизированном состоянии, а все изменения полностью реплицируются между всеми узлами. Все узлы в LF равны между собой. Отсутствие отдельных узлов, координирующих работу хранилища, позволяет избавиться от единой точки отказа, а наличие полной копии данных на каждом узле исключает потерю информации при выходе из строя или отключении отдельных узлов.

Для подключения к сети нового узла не требуется получение отдельных полномочий – любой желающий может запустить свой узел. Модель данных в LF построена на основе ориентированного ациклического графа (DAG), упрощающего синхронизацию и позволяющего применять различные стратегии разрешения конфликтов и обеспечения безопасности. В отличие от систем на основе распределённых хэш-таблиц (DHT), архитектура IF изначально рассчитана на использование в ненадёжных сетях, постоянная доступность узлов в которых не гарантируется. В качестве областей применения LF упоминается создание максимально живучих систем хранения, в которых хранится относительно небольшие объёмы критически важных данных, которые редко меняются. Например, LF подходит для хранилищ ключей, сертификатов, параметров идентификации, файлов конфигурации, хэшей и доменных имён.

Для защиты от перегрузки и злоупотреблений применяется ограничение интенсивности операций записи в общее хранилище, реализованное на основе доказательства выполнения работы (proof of work) – чтобы получить возможность сохранения данных участник сети хранения должен выполнить определённую задачу, которая легко проверяется, но требует больших ресурсов при вычислении (аналогично организации расширения систем на основе блокчена и CRDT). Вычисленные значения также применяются в качестве признака при разрешении конфликтов.

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

Основные особенности LF:

  • Простота развёртывания своего хранилища и подключения к существующим публичным сетям хранения.
  • Отсутствие единой точки отказа и возможность вовлечения в поддержание хранилища всех желающих.
  • Высокая скорость доступа ко всем данным и возможность обращения к данным, остающимся на своём узле, даже после нарушения сетевой связности.
  • Универсальная модель безопасности, позволяющая комбинировать различные механизмы разрешения конфликтов (локальная эвристика, вес на основе совершённой работы, учёт уровня доверия других узлов, сертификаты).
  • Гибкий API для запроса данных, допускающий указание нескольких вложенных ключей или диапазонов значений. Возможность привязки нескольких значений к одному ключу.
  • Все данные хранятся в зашифрованном виде, включая ключи, и верифицируются. Система может использоваться для организации хранения конфиденциальных данных на не заслуживающих доверия узлах. Записи, ключи к которым не известны, не могут быть определены методом перебора (не зная ключ невозможно получить связанные с ним данные).

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

Release. Ссылка here.