ADAMANT blockchain node v0.10.2 — это релиз, направленный на повышение надёжности, восстановления и возможностей API для операторов нод, делегатов, обозревателей, мессенджеров и разработчиков сервисов. Он помогает нодам восстанавливаться после зависшей синхронизации и прерванных остановок, добавляет более богатый доступ к данным через REST и Socket.IO, исправляет регрессии API делегатов, улучшает запросы к большим базам данных, а также обновляет зависимости и руководства для операторов. Обновление рекомендуется для повышения надёжности, скорости восстановления, поддержки безопасности и возможностей API, но не является обязательным для совместимости с сетью. Этот релиз не вносит форк консенсуса и не изменяет сериализацию блоков или транзакций, подписи, порядок делегатов, награды, комиссии, высоты активации, тайминг слотов или детерминированное воспроизведение.
Обновления API включают новый API топ-аккаунтов с детерминированным порядком, пагинацией, фильтрацией isDelegate, метаданными ответа и запросами только с подсчётом. Корректность ранга делегатов восстановлена, а API голосующих за делегатов исправлен для предотвращения проваливания на все аккаунты с добавлением фильтрации по списку адресов. Видимость консенсуса улучшена за счёт предоставления эффективного расписания активации консенсуса и полного расписания этапов награды за блоки через API статуса. Суммы, сфорженные делегатами, добавлены в ответы, проекция следующего форжера стабилизирована на границах раундов, а фильтрация блоков корректно поддерживает запросы с нулевым количеством транзакций.
Клиентский WebSocket API добавляет опциональные компактные события newBlock и события balances/change для balance, unconfirmedBalance или обоих. Подписки на блоки, транзакции и балансы теперь индексируются для предотвращения сканирования несвязанных клиентов. Чтение затронутых аккаунтов группируется вокруг применения/отката блоков, а сбои публикации изолируются от мутации состояния консенсуса. Доставка остаётся наилучшего усилия и недолговечной, поэтому клиентам следует восстанавливать подписки после переподключения и согласовывать критическое состояние через REST.
Правила протокола и консенсуса остаются неизменными, хотя эффективное расписание активации и активный кодовое имя консенсуса теперь наблюдаемы через публичные API статуса. Исправление следующего форжера только корректирует ранее некорректную проекцию публичного API на границах раундов. Никакие правила консенсуса, высоты активации, байты транзакций или блоков, ID, подписи, награды, комиссии, завершение раундов или поведение воспроизведения не изменяются в этом релизе.
Улучшения надёжности и восстановления включают сторожевой таймер синхронизации, который обнаруживает запуски синхронизации без прогресса по высоте блоков в течение пяти минут, безопасно прерывая зависший запуск и позволяя автоматическое восстановление. Отказы PostgreSQL теперь распространяются через верификацию и загрузку блоков вместо тихого паркования цепочек обратных вызовов. Добавлены сохранённые контрольные точки mem-таблицы с тремя ротируемыми слотами, верифицируемыми SHA-256, для производного состояния. Восстановление работает по принципу fail-closed, восстанавливая только контрольные точки, прошедшие все проверки, и откатываясь к полной детерминированной перестройке при сбое верификации. Канонические блоки и детерминированное воспроизведение остаются источником истины.
Обновления безопасности включают обновление зависимостей в рамках текущих мажорных версий и удаление неиспользуемой прямой зависимости npm для runtime. Добавлено узкое совместимое переопределение grunt на js-yaml, сокращая аудированный граф зависимостей до нуля умеренных, высоких или критических находок. Никакие изменения в поведении подписей, мнемонических фраз, валидации транзакций, рукопожатии пиров или криптографическом протоколе не вносятся.
Улучшения сети, базы данных и производительности включают частичный индекс балансов для детерминированных запросов топ-аккаунтов. Хеш-индекс генератора блоков заменён составным B-деревом для предотвращения полных сканирований таблицы для неизвестных генераторов. Индексированные подписки Socket.IO и группированные чтения конечного состояния сокращают ненужные сканирования клиентов и запросы аккаунтов, а ротируемое хранилище контрольных точек обеспечивает более быстрое восстановление из неконсистентного производного состояния.
Для операций с нодами и инструментария сохранённые контрольные точки состояния памяти включены по умолчанию, при этом сохраняется резервный вариант полной перестройки для невалидных или устаревших контрольных точек. Корректное завершение работы уточнено: требуется ожидание завершения активной обработки и сообщения «Cleaned up successfully» перед перезапуском. Задокументирован путь перестройки нативного Node ABI для pg-native и libpq, а требование Node.js остаётся версии 22.13.0 или новее.
Улучшения опыта разработчика расширяют покрытие тестов для восстановления синхронизации, контрольных точек, аккаунтов, делегатов, блоков, API статуса и потоков Socket.IO. README реорганизован, а сопутствующая документация и изменения OpenAPI согласованы для обновлённых API.
Операторам, обновляющимся до этого релиза, следует использовать Node.js 22.13.0 или новее и сделать резервную копию базы данных. Остановите ноду корректно и дождитесь сообщения «Cleaned up successfully» перед развёртыванием v0.10.2. Первый запуск потребует дополнительного времени и дискового пространства для завершения всех миграций, создания хранилища контрольных точек и построения новых индексов. После запуска проверьте статус ноды, прогресс синхронизации, обработку блоков в реальном времени и любые возможности REST или Socket.IO, используемые вашими сервисами.
Критические изменения
В v0.10.2 нет критических изменений протокола, консенсуса, wire-формата или контрактов API. Новые поля REST и подписки Socket.IO являются аддитивными и обратно совместимыми. Устаревший переключатель конфигурации topAccounts удалён, а эндпоинт GET /api/accounts/top теперь регистрируется консистентно на каждой ноде. Релиз добавляет миграции базы данных только в прямом направлении, что означает, что первый запуск после обновления может потребовать дополнительного времени и дискового пространства для создания хранилища контрольных точек и индексов аккаунтов/блоков.