Переход на сборку с Boost 1.9x
Бинарные файлы узла из этого релиза собраны с Boost 1.91, а не с Boost 1.83, который входит в Ubuntu 24.04.
Нужен ли реплей?
Да. Файл shared_memory.bin, записанный сборкой с Boost 1.83, сборка с Boost 1.91 использовать не может. Это проверено на практике: сегмент, созданный бинарником 1.83, при открытии идентичным во всём остальном бинарником 1.91 падает на поиске именованного объекта. Индекс сегмента в Boost.Interprocess между этими версиями раскладку не сохраняет, поэтому состояние именно нечитаемо, а не просто вызывает сомнения.
Теперь узел отклоняет такой каталог состояния сразу при запуске и показывает обе версии:
database was created by a different compiler, build, or operating system.
state was built with: 13.3.0 boost-1_83
this binary uses: 13.3.0 boost-1_91
Replay from the block log or import a snapshot to rebuild state.
Если каталог состояния записан до появления этой проверки, вместо сохранённой версии выводится <unreadable -- predates this check, or a Boost too different to parse>. Делать в этом случае нужно то же самое.
Выполните реплей из лога блоков или импортируйте свежий снимок. Лог блоков при этом не затрагивается, перестраивается только shared_memory.bin. Откат на сборку 1.83 работает симметрично: она откажется принять состояние от 1.91 и тоже потребует реплей.
Сборка из исходников
С Docker-образами делать ничего не нужно. Сборка из исходников на обычной Ubuntu 24.04 по-прежнему работает: дерево поддерживает Boost от 1.83 до 1.9x, и CI проверяет оба конца этого диапазона. Чтобы получить то же, что в официальных образах, собирайте Boost 1.91 с link=static и cxxflags=-std=c++14 либо берите в качестве сборочного образ vizblockchain/vizd:boost-base-1.91-noble:
docker build -f share/vizd/docker/Dockerfile-boost -t vizblockchain/vizd:boost-base-1.91-noble .
Если Boost установлен в /usr/local, а не через apt, при конфигурации добавьте -DBOOST_ROOT=/usr/local — так сделано в Dockerfile для основной и тестовой сети.