mirror of https://github.com/voidlizard/hbs2
60 lines
1.7 KiB
Plaintext
60 lines
1.7 KiB
Plaintext
TODO: hbs2-merkle-export
|
||
Нужен быстрый импорт/экспорт больших merkle-деревьев.
|
||
Делается таким образом:
|
||
|
||
Экспорт
|
||
~~~~~~~
|
||
|
||
1. Обходим дерево как обычно
|
||
|
||
2. Пишем блоки в бинарный файл в формате обхода:
|
||
|size|data|size|data|...|size|data
|
||
|
||
3. Первым элементом является корень дерева
|
||
(обсуждаемо, возможно, последним)
|
||
|
||
Импорт
|
||
~~~~~~
|
||
|
||
1. Читаем размер
|
||
2. Читаем блок
|
||
3. Считаем хэш
|
||
4. Пишем блок в сторейдж
|
||
5. Возвращаем хэш головы
|
||
|
||
Быстрая заливка через сокет
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
Пир держит специальный локальный сокет
|
||
(возможно, MessagingTCP / возможно UNIX)
|
||
|
||
Клиент заливает этот поток -- пир читает размер,
|
||
читает данные, считает хэш, пишет в сторейдж
|
||
|
||
Всё это даст возможность быстро заливать данные
|
||
в сторейдж / ускорит экспорт-импорт больших
|
||
репозиториев.
|
||
|
||
|
||
Заливка через hbs2 (через пайп)
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
```
|
||
hbs2 export [hash] > ...
|
||
|
||
cat file | hbs2 import
|
||
|
||
```
|
||
|
||
Заливка через hbs2-peer
|
||
~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
1. В настройке разрешаем сокет для импорта
|
||
2. в hbs2-peer poke hbs2-peer говорит нам этот сокет
|
||
3. Пишем файл в данный сокет - хоть неткатом
|
||
|
||
|
||
|
||
|
||
|