Когда новый узел присоединяется к сети 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
: отображает полезные команды для запуска пакета. Актуально для разработчиков.