hbs2/docs/notes/bundles.txt

62 lines
1.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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