Базовая реализация бандлов Основная идея: Берём список HashRef, каждый HashRef может ссылаться на какие-то объекты и создаем журнал (замыкание), куда складываем все нужные объекты. Это может быть нужно для ускорения передачи большого числа маленьких объектов там, где это нужно. Минусы: создаются объекты-обёртки, дублируются данные в бандлах и БД. Решение: TODO: introduce-bundle-ttl удалять бандлы и BundleRefValue, которые никто не трогал дольше, чем ttl. Делаем bundle: ``` hbs2 bundle create < bundle-refs ``` В bundle-refs список хэшей (HashRef) в текстовом виде Делаем ссылку на bundle: ``` hbs2 bundle create-ref -k some.key ``` Создаем объект типа BundleRefValue и подписывает его неким ключом. Идея в том, что даже если мы не создатели Bundle и BundleRefValue, мы можем его сохранять и распространять, сохраняя оригинальную подпись. Клиенты уже сами решают, доверяют они ключу подписанта или нет. Распространение bundle: ``` hbs2-peer announce ``` Теперь те, кто вообще слушают анонсы от пира --- получат блок BundleRefValue, проверят подпись, поставят Bundle на скачивание, и когда он скачается - импортируют объекты из него.