Документация и схема ADAMANT: топ-аккаунты, клиентские WebSocket-события и видимость консенсуса
Репозитории документации и схемы ADAMANT приведены в соответствие с текущим API-интерфейсом ноды. Все изменения аддитивны и обратно совместимы — без форка консенсуса или изменения формата передачи данных. Актуальная документация доступна по адресу https://docs.adamant.im, а OpenAPI-бандл — по адресу https://schema.adamant.im.
API топ-аккаунтов
GET /api/accounts/top теперь является частью публичного контракта. Сортировка детерминирована: balance DESC, затем address ASC. Эндпоинт поддерживает пагинацию через limit и offset, опциональный фильтр isDelegate, метаданные ответа (count) и limit=0 для запросов только с подсчётом. Устаревший переключатель конфигурации topAccounts удалён — эндпоинт зарегистрирован на каждой ноде.
Клиентский WebSocket: newBlock и balances/change
Клиентский интерфейс Socket.IO получил опциональные компактные события newBlock и полезные нагрузки balances/change на уровне отдельных полей, которые могут включать balance, unconfirmedBalance или оба значения. Подписки индексируются по address, types, assetChatTypes, balances и blocks. Доставка остаётся по принципу «наилучших усилий» и без гарантии сохранности: потребители должны переподключаться, повторно подписываться и согласовывать критическое состояние через REST. OpenAPI-пакет документирует это в разделе x-client-websocket с выделенными схемами в specification/websocket/.
Расписания статусов и forged делегатов
Публичные API статусов теперь предоставляют действующее расписание активации консенсуса и полное расписание этапов вознаграждения за блоки, включая consensusCodeName, consensusSchedule.activationHeights и milestoneSchedule (состоящий из offset, distance и milestones). Ответы списка и получения делегатов теперь включают пожизненный показатель forged в виде строки с десятичным целым числом в базовых единицах. Проекция следующего генератора блока использует высоту следующего блока на границах раундов. В схеме также исправлено producedlocks на producedblocks и завершено покрытие параметров запросов для пиров, транзакций в очереди и неподтверждённых транзакций, а также поиска делегатов и orderBy.
Приведение в соответствие API блоков
Семантика запросов GET /api/blocks теперь приведена в соответствие с реальным поведением ноды. numberOfTransactions=0 работает корректно, а orderBy, фильтры по суммам и offset после сортировки документированы точно. Схема добавляет полное покрытие параметров и generatorPublicKey в BlockInfoDto. Некорректные примеры timestampMs удалены из документации.
Восстановление оператора: контрольные точки mem-таблицы
Сохраняемые ротирующиеся контрольные точки mem_* документированы для восстановления после сбоев. Функция управляется параметром loading.memCheckpoints.enabled и включена по умолчанию. Документация охватывает верификацию SHA-256, восстановление с отказом при ошибке, откат к полной детерминированной пересборке, влияние на хранилище и поведение при штатном завершении (SIGINT/SIGTERM → ожидание Cleaned up successfully). Контрольные точки служат локальным кэшем восстановления; канонические блоки остаются источником истины.
Контекст релиза
Эти обновления предназначены для ноды ADAMANT v0.10.2. Зависимым потребителям — особенно adamant-api-jsclient — следует перегенерировать типы из обновлённого OpenAPI-бандла. Соответствующие пул-реквесты охватывают репозитории docs, schema и node.