diff --git a/docs/todo/hbs2-merkle-export.txt b/docs/todo/hbs2-merkle-export.txt new file mode 100644 index 00000000..7a780550 --- /dev/null +++ b/docs/todo/hbs2-merkle-export.txt @@ -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. Пишем файл в данный сокет - хоть неткатом + + + + +