cryptofoundry

Связаться с cryptofoundry

Расскажите, что вы хотите создать или автоматизировать.

Электронная почта
[email protected]
ADAMANT Messenger
Открыть в ADAMANT
Developers & API

Полный типизированный доступ только для чтения к API ноды ADAMANT

SDK adamant-api теперь предоставляет полную типизированную поверхность для API ноды ADAMANT с интенсивным чтением, используемых обозревателями, сервисами мониторинга, кошельками, ботами и другими интеграциями. Потребителям больше не нужны универсальные вызовы api.get() или локальное приведение типов ответов для основных запросов по аккаунтам, блокам, делегатам, пирам, пулу и статусу сети, представленных или расширенных в ADAMANT Node v0.10.2.

Покрытие

SDK предоставляет getTopAccounts() с типизированной пагинацией и фильтрацией по делегатам. Ответ включает детерминированный порядок балансов ноды и метаданные пагинации; запросы с limit: 0 возвращают только метаданные с количеством записей, без строк аккаунтов.

const topDelegates = await api.getTopAccounts({
  limit: 50,
  offset: 0,
  isDelegate: 1,
});

const countOnly = await api.getTopAccounts({limit: 0});

Типы публичных опций теперь охватывают списки блоков и поиск по блокам, списки делегатов с поиском отдельного делегата, поиск по имени пользователя, статистику форжинга, голосующих и прогнозы следующего форжера, списки подключённых пиров и точный поиск пира, списки транзакций в пуле и поиск по транзакциям, а также инклюзивные диапазоны времени транзакций. Это делает SDK пригодным в качестве типизированной границы для сервисов только для чтения, а не только помощником для подписи и трансляции.

Сгенерированные контракты теперь предоставляют consensusCodeName, действующий consensusSchedule, полный milestoneSchedule вознаграждений за блоки и пожизненные значения forged делегата в виде строк с целыми числами в десятичном представлении. Свойство producedblocks времени выполнения заменяет ранее сгенерированную опечатку producedlocks. Сервис может получить публичную проекцию цепочки без локального переопределения ответа:

const [network, node] = await Promise.all([
  api.getStatus(),
  api.getNodeStatus(),
]);

console.log(network.consensusCodeName);
console.log(node.consensusSchedule, node.milestoneSchedule);

Семантика запросов с учётом эндпоинтов

Язык запросов транзакций ADAMANT Node плоский, а не вложенное дерево булевых выражений. Он сериализует условия в одно SQL-выражение в порядке параметров строки запроса, с обычным приоритетом SQL и без добавления скобок для объектов and: {} или or: {}. Поэтому SDK по умолчанию объединяет обычные фильтры верхнего уровня через and, сохраняет порядок вставки свойств JavaScript-объектов при сериализации и предупреждает, когда смешанные условия and / or делают порядок передачи по сети семантически значимым. Он ограничивает элементы управления, такие как includeDirectTransfers, returnAsset и userId, совместимыми эндпоинтами, удаляет известные неподдерживаемые элементы управления перед отправкой запроса и допускает фильтры по сумме только на /api/transactions, где нода их действительно применяет. Это намеренно строже, чем пересылка каждой общей опции на каждый эндпоинт — типизированный вызов должен представлять поведение, которое фактически реализовано в выбранном маршруте ноды.

Происхождение схемы и совместимость

src/api/generated.ts воспроизводимо сгенерирован из Adamant-im/adamant-schema@f35b8ddb5597a8f1a80a3a670bedb003af65ef90. Репозиторий проверяет сгенерированный файл командой npm run api-types:check, а тесты потребителей пакета компилируют экспортируемые объявления и проверяют собранные точки входа ESM и CommonJS. Исправление producedlocks на producedblocks — это изменение совместимости на этапе компиляции; потребителям, которые вручную создают фикстуры делегатов или статусов, может потребоваться добавить новые обязательные поля. Обработка ответов во время выполнения остаётся сквозной — старые ответы ноды не преобразуются и не отклоняются SDK.

Актуальное состояние наряду с чтением снимков

То же согласование с Node v0.10.2 добавляет опциональные обработчики WebSocket для компактных событий newBlock и подтверждённых или неподтверждённых событий balances/change. Подписки восстанавливаются после переподключения, а значения балансов являются абсолютными заменами, а не дельтами. Эти события дополняют типизированное чтение по REST, но не заменяют его: нет ни воспроизведения, ни начального снимка балансов, полезная нагрузка баланса может содержать только изменившиеся поля, а события, доставленные во время отключения, не заполняются задним числом. Критичным клиентам следует согласовывать блоки и балансы через REST после переподключения.

Границы совместимости

Новые возможности для топ-аккаунтов, статуса сети, делегатов, блоков и событий балансов требуют ADAMANT Node v0.10.2. Существующее построение транзакций, байтовая компоновка, хеширование, идентификаторы, подписи, шифрование, повторы, отказоустойчивость и выбор активной ноды не изменились. Корень пакета остаётся ориентированным на ADM; вспомогательные функции для внешних монет по-прежнему используют явные экспорты по подпутям. SDK требует Node.js 22.12.0 или новее, а операторам ADAMANT Node v0.10.2 следует соблюдать требование ноды — версию 22.13.0 или новее.