Демон хранения
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Демон хранения (storage daemon) — это программа, используемая для загрузки и обмена файлами в сети TON. Другая программа storage-daemon-cli
используется для управления уже запущенным демоном хранения из консоли.
Текущую версию демона хранения можно найти в репозитории в ветви Testnet.
Требования к аппаратному обеспечению
- не менее 1 ГГц частоты и 2 ядер у процессора
- не менее 2 ГБ оперативной памяти
- не менее 2 ГБ SSD (без учета места для торрентов)
- пропускная способность сети 10 Мб/с со статическим IP
Бинарные файлы
Вы можете скачать бинарные файлы storage-daemon
и storage-daemon-cli
для Linux/Windows/MacOS из раздела сборок в GitHub-репозитории.
Компиляция исходного кода
Вы можете самостоятельно скомпилировать storage-daemon
и storage-damon-cli
из файлов с исходным кодом, используя инструкцию.
Ключевые понятия
- Пакет файлов («bag of files») или просто Пакет — коллекция файлов, распространяемых через хранилище TON
- Сетевая часть TON Storage основана на технологии, схожей с торрентами, поэтому термины торрент, пакет файлов и пакет будут использоваться как взаимозаменяемые. Однако важно отметить некоторые различия: TON Storage передает данные по протоколу ADNL по протоколу RLDP, каждый пакет распространяется через свой собственный сетевой оверлей, меркловая структура может существовать в двух вариантах — с большими чанками для эффективного скачивания и маленькими для эффективного доказательства права собственности, а для поиска пиров используется сеть TON DHT.
- Пакет файлов состоит из информации о торренте и блока данных.
- Блок данных начинается с заголовка торрента — структуры, содержащей список файлов с их именами и размерами. Далее в блоке данных следуют сами файлы.
- Блок данных делится на так называемые «чанки» (по умолчанию 128 КБ), и на основе SHA256-хэшей этих чанков строится дерево Меркла (из TVM-ячеек). Это позволяет создавать и проверять доказательства Меркла для отдельных фрагментов, а также эффективно воссоздавать пакет, обмениваясь только доказательством измененного чанка.
- Информация о торренте содержит Меркловый корень следующих данных:
- Размер чанка (блок данных)
- список размеров чанков
- Хэш дерева Меркла
- Описание – любой текст, указанный создателем торрента
- Информация о торренте сериализуется в TVM-ячейку. Хэш этой ячейки называется BagID, и он уникально идентифицирует Bag.
- Bag meta — это файл, содержащий информацию о торренте и заголовок торрента.* Это аналог файлов с расширением
.torrent
.
Запуск storage-daemon и storage-daemon-cli
Пример команды для запуска storage-daemon:
storage-daemon -v 3 -C global.config.json -I <ip>:3333 -p 5555 -D storage-db
-v
- уровень многословия (INFO)-C
- глобальная конфигурация сети (скачать глобальную конфигурацию)-I
- IP-адрес и порт для ADNL-p
- TCP-порт для консольного интерфейса-D
- каталог для базы данных демона хранения
Управление storage-daemon-cli
Его начинают так:
storage-daemon-cli -I 127.0.0.1:5555 -k storage-db/cli-keys/client -p storage-db/cli-keys/server.pub
-I
- это IP-адрес и порт демона (порт тот же, что указан в параметре-p
выше)-k
и-p
- это приватный ключ клиента и публичный ключ сервера (аналогичноvalidator-engine-console
). Эти ключи генерируются при первом запуске демона и помещаются в папк у<db>/cli-keys/
.
Список команд
Список команд storage-daemon-cli
можно получить с помощью команды help
.
У команд бывают позиционные параметры и флаги. Параметры с пробелами должны быть заключены в кавычки ('
или "
), также пробелы могут быть экранированы. Возможны и другие варианты экранирования, например:
create filename\ with\ spaces.txt -d "Description\nSecond line of \"description\"\nBackslash: \\"
Все параметры после флага --
являются позиционными. Его можно использовать для указания имен файлов, начинающихся с тире:
create -d "Description" -- -filename.txt
storage-daemon-cli
можно запустить в неинтерактивном режиме, передав ему команды для выполнения:
storage-daemon-cli ... -c "add-by-meta m" -c "list --hashes"
Добавление пакета файлов
Чтобы загрузить пакет файлов, Вам необходимо знать его BagID
или иметь мета-файл. Следующие команды могут быть использованы для добавления пакета для загрузки:
add-by-hash <hash> -d directory
add-by-meta <meta-file> -d directory