You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Реализован @coopenomics/parser2 v0.1.0 (Epic 2) — ядро индексера для публикации блокчейн-событий в Redis unified stream - by coopops and Claude Sonnet 4.6(76312)
Реализован ParserClient + Subscription Manager (Epic 3) — single-active-consumer с lock/recovery для надёжной доставки событий блокчейна - by coopops and Claude Sonnet 4.6(a98aa)
Реализован Epic 4 AbiStore + AbiBootstrapper — исторический ABI в Redis ZSET без падений при reparse - by coopops and Claude Sonnet 4.6(2b633)
Реализован Epic 5 Subscription Lifecycle CLI — операторское управление подписками и ABI без ручных Redis команд - by coopops and Claude Sonnet 4.6(b698c)
Реализован Epic 6 Native-Deltas End-to-End — эмиссия NativeDeltaEvent для всех нативных таблиц SHiP в единый Redis-стрим - by coopops and Claude Sonnet 4.6(7d38a)
Реализован Epic 7 Dead-Letter Queue CLI — инспекция и replay poison-messages без остановки pipeline - by coopops and Claude Sonnet 4.6(22574)
Добавить Pino-логгер, метрики Prometheus и /health HTTP endpoint — обеспечить операционную наблюдаемость парсера без внешней инструментации - by coopops and Claude Sonnet 4.6(cc341)
Добавить ForkDetector, ReconnectSupervisor и режим irreversibleOnly — автоматически восстанавливаться после форков и обрывов соединения без ручного вмешательства оператора - by coopops and Claude Sonnet 4.6(2f0e1)
V1.0.0 — пример verifier-like, три документа, бенчмарк-отчёт, CI/CD pipeline и Dockerfile — обеспечить готовность пакета к публичному релизу - by coopops and Claude Sonnet 4.6(ac25c)
test: Добавить end-to-end integration тест с реальным блокчейном — убедиться что парсер захватывает eosio.token::transfer от SHiP до ParserClient - by coopops and Claude Sonnet 4.6(748c4)
🐞 Bug Fixes
Убрать @eosrio/node-abieos из optionalDependencies и обновить CI — устранить рассинхрон lockfile и deprecation warning pnpm/action-setup@v3 - by coopops and Claude Sonnet 4.6(fb21b)
XREADGROUP передавал consumer name дважды, тест использовал transfer вместо issue — у coopenomics-fork eosio.token есть проверка членства получателя в wallet program, а синтаксис XREADGROUP GROUP требует ровно 3 аргумента - by coopops(6a37d)
build:
Собирать deserialize.worker.cjs, перевести пакет на ESM-only — Piscina требует отдельный .cjs файл, а top-level await несовместим с CJS форматом - by coopops(57b3b)
ci:
Собирать ship-reader перед typecheck/test — TypeScript не находил .d.ts зависимого workspace пакета без предварительного build - by coopops(bf79f)
Запускать nodeos явно через docker run — образ dicoop/blockchain не имеет CMD, services: не поддерживает передачу команды - by coopops(f5fbe)
Смонтировать node-config как read-write — nodeos создаёт protocol_features/ внутри config-dir при старте - by coopops(06ed9)
docker:
Обновить пути parser2→parser, убрать несуществующий корневой LICENSE/NOTICE, переключить ENTRYPOINT на ESM index.js — Docker build падал с '/LICENSE: not found' после переименования папки и отсутствия корневой лицензии; теперь используем per-package LICENSE+NOTICE что также правильнее для атрибуции - by coopops(a625b)
parser:
Сериализовать BigInt как string в eventToFields — JSON.stringify не умеет BigInt, action.global_sequence уходил в Redis как ошибка - by coopops(d8491)
Использовать abi.toJSON() вместо JSON.stringify(abi) — wharfkit ABI-объект сериализуется во внутренний формат вместо канонической схемы, из-за чего worker.Serializer.decode не находил типы - by coopops(1414a)
ship-reader:
Распаковывать action receipt variant-tuple — SHiP может отдавать receipt как [variantName, data], BigInt(undefined) ломал decodeBlocksResult - by coopops(7579b)
Брать global_sequence из receipt — в action_trace_v1 top-level global_sequence отсутствует, только в action_receipt - by coopops(6166a)
Конвертировать block_id и chain_id в строки — wharfkit ABI decoder возвращает Checksum256 объект, а downstream код ожидает hex-строку (blockId.slice()) - by coopops(6db2e)
Конвертировать wharfkit Name объекты в строки — trace.account/name приходили как Name (не string), worker.Serializer.decode пытался синтезировать ABI из Name-класса и падал на abiName - by coopops(7ab33)
test:
Сериализовать action data локально через @wharfkit/antelope — эндпоинт /v1/chain/abi_json_to_bin удалён в LEAP 5.x - by coopops(5387e)
Общий keyPrefix для Parser и ParserClient — Date.now() в двух местах давал разные префиксы, клиент не находил consumer group - by coopops(aac54)
Убрать keyPrefix и добавить FLUSHDB — ioredis keyPrefix не применялся к XGROUP CREATE что вызывало NOGROUP между Parser (писатель) и ParserClient (читатель) - by coopops(4b6fc)