ETH Transactions Storage v2.5.0 превращает проект в документированный и распространяемый индексатор транзакций Ethereum и бэкенд REST API для кошельков, обозревателей, инструментов бухгалтерского учета и казначейства, сервисов мониторинга и пользовательских приложений. Он сохраняет существующий контракт PostgREST API, используемый в продуктивной среде клиентами ADAMANT.
Этот релиз добавляет надежную обработку транзакций по блокам и контрольные точки, восстановление при запуске, механизмы отката и повторных попыток для базы данных, а также отслеживание прогресса при прохождении пустых или отфильтрованных блоков. Теперь доступна опциональная индексация по адресам с валидацией, сопоставлением отправителя, получателя нативного актива и получателя токенов, динамической перезагрузкой списков и поведением fail-closed. Рекомендуемый набор индексов базы данных сокращен до пяти; три предыдущих индекса доступны отдельно для специфических запросов. Этот уменьшенный набор позволяет сэкономить примерно 90–110 ГБ на 490 миллионах строк. Добавлены аддитивная схема sync_state, доступ web_anon только для чтения, ограничение ответа PostgREST в 10 000 строк и рекомендации по защите публичных развертываний API. Включена поддержка URI подключения PostgreSQL с маскированием учетных данных, загрузка переменных из .env, ограничение зависимостей Python, обновленная диагностика и переработанный юнит systemd. Добавлены контейнер Python 3.11, конфигурация Compose с опубликованным образом, отдельный оверлей для локальной сборки, метаданные OCI и публикация в GHCR для нескольких архитектур, привязанная к релизам. Сайт документации VitePress доступен по адресу https://eth-indexer.docs.adamant.im, включая воспроизводимые инструменты Node, CI для документации, развертывание через Pages и руководство для контрибьюторов. Проект переориентирован на любого совместимого потребителя при сохранении прав собственности, происхождения и подтверждения совместимости с продуктивной средой ADAMANT.
Требования к обновлению
Остановите существующий индексатор и обновите рабочую копию перед началом процедуры обновления. Примените новую схему от имени администратора PostgreSQL перед запуском v2.5.0:
sudo -u postgres psql -v ON_ERROR_STOP=1 -d index < create_tables.sql
Затем установите заявленные зависимости Python для ручного развертывания или развертывания через systemd:
pip3 install -r requirements.txt
Сохраните все значения и учетные данные производственной среды; шаблон systemd в репозитории теперь требует наличия корректного файла .env. Установите POSTGRES_PASSWORD перед использованием Docker Compose. Правильно мигрируйте существующие данные PostgreSQL 12 перед переходом на образ PostgreSQL 14 в Compose; простое изменение тега образа не является полноценным обновлением. Создайте и проверьте рекомендуемый набор индексов перед удалением устаревших; используйте конкурентные операции с индексами на работающей базе данных. Примените create_tables.sql перед переключением PostgREST на web_anon, иначе анонимные запросы к API будут завершаться ошибкой. Планируйте фильтрацию истории заранее: включение фильтра по адресу или добавление адреса не приводит к заполнению истории предыдущих блоков.
Перед развертыванием этой версии ознакомьтесь с полным руководством по обновлению по адресу https://eth-indexer.docs.adamant.im/guide/upgrading.
Совместимость и текущая область применения
Эндпоинты /ethtxs, /max_block и /aval, столбцы базы данных, регистронезависимая обработка адресов, кодировки значений и установленные форматы запросов клиентов остаются совместимыми. Параметр /max_block.max теперь также учитывает обработанные блоки, в которых не было строк с транзакциями.
Индексатор продолжает сохранять нативные переводы ETH и прямые вызовы верхнего уровня ERC-20 transfer(address,uint256). Он не индексирует внутренние переводы ETH, transferFrom, мультиподписи, маршрутизаторы, пакетные переводы, другие стандарты токенов или автоматические исправления при глубокой реорганизации блокчейна.
Распространение
Публикация этого стабильного релиза инициирует создание образов для linux/amd64 и linux/arm64:
ghcr.io/adamant-im/eth-transactions-storage:2.5.0
ghcr.io/adamant-im/eth-transactions-storage:latest
Теги версий образов неизменяемы. В продуктивной среде используйте тег 2.5.0 вместо latest.
Верификация
Все 12 модульных тестов Python пройдены. Проверка синтаксиса Python, форматирования, линтинг Markdown и сборка VitePress выполнены успешно. Сборка контейнера, исключение состояния оператора, метаданные OCI, обе конфигурации Compose, прогресс API и тесты перезапуска с контрольными точками пройдены на коммите слияния релиза. Развертывание документации успешно завершено, сайт доступен по протоколу HTTPS. Сервис в продуктивной среде развернут и подтвержден оператором как работоспособный.
Включенные работы: #27, #28, #29, #31 и #33. Отслеживаемый тикет: #32. Полный список изменений: https://github.com/Adamant-im/ETH-transactions-storage/compare/v2.4.1…v2.5.0.
Критические изменения
Новая схема sync_state должна быть применена через create_tables.sql до запуска v2.5.0; это необходимо сделать до переключения PostgREST на web_anon, в противном случае анонимные запросы к API будут отклоняться. Шаблон systemd теперь требует наличия корректного файла .env, поэтому существующие развертывания без него не запустятся до его создания. Включение фильтра по адресу или добавление адреса не приводит к заполнению истории предыдущих блоков, что означает, что ранее не проиндексированная история не будет захвачена задним числом без явных действий оператора.