Ошибка: Tact — Static capacity exceeded
Причина и решение ошибки компиляции Tact «Static capacity exceeded».
Tact: «Static capacity exceeded» при компиляции
Компилятор Tact не смог уместить статически вычисленную структуру (storage / message / константу) в лимиты одной cell: слишком много бит или ссылок в фиксированной раскладке.
Причина
- в
contractstorage слишком много полей подряд без упаковки в вложенные структуры; - большое
map/ много полей с широкимиInt as uint256в одном слое; - message с длинным фиксированным layout, который > 1023 бит;
- попытка хранить «всё в корне» вместо дерева cell.
Воспроизводится на Tact 1.5–1.6+ при разборе storage/message layout на этапе compile.
Решение
Для длинных строк используй String / slice в отдельных cells, не набор Int as uint256 «под байты».
Как избежать в будущем
Проектируй storage как дерево: корень ≤1023 бит / 4 refs. После добавления полей смотри отчёт компилятора и выноси группы полей в struct, которые Tact кладёт в refs.
Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация