mirror of https://github.com/voidlizard/hbs2
devlog
This commit is contained in:
parent
1c8f6b978b
commit
c47c6dee87
|
@ -0,0 +1,59 @@
|
||||||
|
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. Пишем файл в данный сокет - хоть неткатом
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue