Перейти к основному содержимому

Что такое hlf-core

Hyperledger Fabric даёт мощную, но намеренно низкоуровневую модель: контракт (chaincode) видит состояние как плоское key-value хранилище, аутентифицирует не пользователя, а организацию, и не навязывает ни способа хранить сущности, ни способа вызывать операции. Всё это приходится достраивать самому — как правило, заново на каждом проекте. hlf-core — это слой, который мы достроили один раз и вынесли в набор пакетов @hlf-core/*, чтобы не писать его снова.

Иными словами, это фреймворк на TypeScript для разработки chaincode и клиентских приложений Fabric. Он вырос из реальных продакшн-систем — финансового учёта, депозитария, custody, и собирает то, что в этих системах оказалось общим: работу с состоянием, протокол вызова команд, идентификацию пользователя и систему токенов.

Что он берёт на себя​

Прежде всего — состояние. Вместо ручных getState/putState hlf-core даёт ORM-подобный слой: сущности, связи parent-child, пагинацию и автоматическую валидацию. Ключи при этом строятся так, чтобы вторичный поиск по левой части составного ключа оставался предсказуемым, а не превращался в случайный обход диапазона.

Дальше — вызов операций. В обычном контракте каждая операция это отдельная функция, и добавление новой меняет его интерфейс. Мы пошли иначе: у контракта одна точка входа, а любая операция упаковывается в конверт команды, где поле name и определяет, что именно вызвано. К этому добавлена идентификация конечного пользователя поверх организационной идентичности Fabric — подпись на уровне приложения и защита от повторного воспроизведения транзакции через nonce.

Наконец, токены. Эмиссия, переводы, удержание (hold), сжигание, полный аудит и строковая арифметика без потери точности — всё это уже написано и проверено, а не изобретается под каждый проект заново. Сюда же относится разбор блоков и событий: превращение сырых данных Fabric в типизированный вид, с которым можно работать.

Из чего он состоит​

hlf-core — монорепозиторий из публикуемых npm-пакетов @hlf-core/*, выстроенных слоями: от платформо-нейтрального фундамента до предметной пары пакетов для токенов.

СлойПакетыНазначение
Фундамент@hlf-core/commonПлатформо-нейтральные классы — ключи состояния, идентичность, команды
Сеть / ORM@hlf-core/api, @hlf-core/chaincodeПодключение к Fabric и ORM поверх key-value
Транспорт@hlf-core/transport, @hlf-core/transport-common, @hlf-core/transport-chaincodeПротокол «клиент ↔ chaincode»
Токены@hlf-core/coin, @hlf-core/coin-chaincodeУправление валютами и токенами

Почему слоёв именно столько и как по ним проходит типичная команда — в разделе «Философия»; там же схема и разбор пути от клиента до блока и обратно.

С чего начать​

Если вы раньше не работали с hlf-core, удобнее всего начать с быстрого старта и собрать минимальный chaincode. Если хочется сперва понять идею целиком, прежде чем писать код, стоит прочитать «Философию». А если вы ищете конкретный пакет, переходите сразу в раздел «Пакеты».