Когда новый узел присоединяется к сети Spacemesh, он должен сначала освоиться с остальными узлами. Этот процесс называется «синхронизацией» и является необходимым условием для запуска полного или смешанного узла. Исторически сложилось так, что смесерам было трудно успешно синхронизировать свои узлы из-за того, насколько трудоемким был процесс синхронизации. В первую очередь синхронизация включает в себя загрузку и независимую проверку всех блоков, транзакций, ATX, а также некоторых других данных и восстановление текущего состояния с нуля. Естественно, это отнимало у среднестатистического смесера немало времени. Таким образом, в ответ на растущую сложность синхронизации нового узла мы подготовили способ ускорить процесс синхронизации. Представляем Quicksync.
При использовании Quicksync вместо выполнения всех действий по синхронизации, как указано выше, и расчета состояния сети на основе генезиса, нужно просто загрузить текущее состояние от доверенного узла, такого как команда разработчиков Spacemesh или какой-либо другой узел. Хотя это противоречит философии Web3 «Не доверяй, проверяй», мы считаем, что это может быть выбором, который может заинтересовать некоторых смэшеров, учитывая высокий уровень проблем с синхронизацией. Более того, ничто не мешает смэшеру проверить это состояние в фоновом режиме после загрузки.
Загружаемое состояние (также называемое архивом) имеет форму файла state.sql и может быть загружено автоматически с помощью Smapp или вручную с помощью утилиты quicksync-rs .
Инструкции по использованию quicksync-rs для загрузки последнего состояния приведены ниже. Обратите внимание: если вы используете последнюю версию Smapp, он автоматически предложит использовать быструю синхронизацию для получения последнего состояния.
quicksync-windows-vX.XXzip из раздела выпусков GitHub.quicksync.exe из ZIP-файла, загруженного на шаге 1.quicksync.exe в папку spacemesh . По умолчанию эта папка находится по адресу: C:Users{USERNAME}spacemesh .state.sql в папке данных вашего узла (находится внутри каталога spacemesh и по умолчанию называется node-data ), удалите его. В противном случае перейдите к шагу 5.spacemesh , где находится файл quicksync.exe . Вы можете сделать это, удерживая клавишу «Shift», щелкнув правой кнопкой мыши и выбрав опцию «Открыть Powershell здесь»..quicksync.exe --help и нажмите Enter. Это покажет вам доступные варианты..quicksync.exe download --node-data .node-data . Здесь .node-data — это путь к папке данных узла.quicksync-rs загрузит, разархивирует и проверит загруженное состояние.state.sql . quicksync-linux-vX.XXzip из раздела выпусков GitHub.quicksync из zip-файла, загруженного на шаге 1.quicksync исполняемым с помощью этой команды CLI: chmod +x quicksync . Теперь у вас есть исполняемый файл quicksync .quicksync в каталог spacemesh (по умолчанию он находится в ~/spacemesh ).state.sql в папке данных вашего узла (находится внутри каталога spacemesh и по умолчанию называется node-data ), удалите его. В противном случае перейдите к шагу 6.spacemesh , где находится исполняемый файл quicksync , и запустите следующую команду: ./quicksync download --node-data ./node-data . Здесь ./node-data — это путь к папке данных узла.quicksync-rs загрузит, разархивирует и проверит загруженное состояние.state.sql . quicksync-macos-vX.XXzip (или quicksync-macos-arm64-vX.XXzip если у вас Mac серии M) из раздела выпусков GitHub.quicksync из zip-файла, загруженного на шаге 1.quicksync исполняемым с помощью этой команды CLI: chmod +x quicksync . Теперь у вас есть исполняемый файл quicksync .quicksync в каталог spacemesh . (по умолчанию находится в ~/spacemesh ).state.sql в папке данных вашего узла (находится внутри каталога spacemesh и по умолчанию называется node-data ), удалите его. В противном случае перейдите к шагу 6.spacemesh , где находится исполняемый файл quicksync , и запустите следующую команду: ./quicksync download --node-data ./node-data . Здесь ./node-data — это путь к папке данных узла.quicksync-rs загрузит, разархивирует и проверит загруженное состояние.state.sql . Ниже перечислены коды выхода и их значение:
0 – Все хорошо.1 - Не удалось загрузить архив за максимальное количество попыток (по любой причине).2 - Невозможно распаковать архив: недостаточно места на диске.3 - Невозможно распаковать архив: другая причина.4 — Неверная контрольная сумма загруженного файла state.sql .5 - По какой-то причине невозможно проверить контрольную сумму.6 - Невозможно создать файл резервной копии.7 - Неверная контрольная сумма архива.8 – Невозможно проверить контрольную сумму архива. Также можно загрузить и применить быструю синхронизацию на основе дельты. Предполагая, что файл state.sql уже присутствует, стоит рассмотреть возможность применения только дельт поверх него. Обратите внимание, что синхронизация больших частей будет быстрее с полной быстрой синхронизацией, но если вы уже синхронизированы и вам просто нужно получить последнее состояние, вам подойдет инкрементальная быстрая синхронизация.
Инкрементная быстрая синхронизация работает путем проверки последнего проверенного слоя в базе данных, а затем загрузки небольших файлов (обычно около 50 МБ, но до 200 МБ) и применения их поверх существующего файла state.sql . Каждая партия может быть прервана.
Двукратное восстановление одного и того же пакета считается неактивным и не повлияет на базу данных.
Список доступных команд утилиты quicksync представлен ниже. Обратите внимание, что эти команды предназначены для Linux. Просто замените ./quicksync на .quicksync.exe для команд Windows.
./quicksync download : загружает последнюю версию файла state.sql ../quicksync check : проверяет актуальность текущего файла state.sql ../quicksync help : отображает все операции, которые может выполнять quicksync ../quicksync incremental : позволяет работать с быстрой синхронизацией на основе дельты../quicksync --version : отображает версию быстрой синхронизации.cargo run -- help : отображает полезные команды для запуска пакета. Актуально для разработчиков.