Pruned Cell
Cell в TON, у которого вместо реальных дочерних cell-ов хранятся только их хеши. Используется в Merkle-доказательствах и lite-server proofs.
Синонимы: pruned branch, обрезанная cell, exotic cell
Pruned Cell — это особый («exotic») тип cell в TON, у которого вместо реальных дочерних cell-ов хранится только их хеш. Это компактный способ сослаться на дерево cell-ов, не передавая всё дерево целиком. Pruned-cell-ы — основа Merkle-доказательств в TON.
Зачем нужны
Lite-серверы и lite-клиенты не могут передавать полное дерево cell-ов состояния каждый раз — это огромный объём. Вместо этого они шлют частичное дерево: те cell-ы, которые реально нужны для ответа, и pruned-cell-ы для всех остальных веток. Клиент проверяет хеш корня и убеждается, что присланные данные действительно из настоящего стейта.
Это та же идея, что Merkle-proofs в Bitcoin/Ethereum, но на уровне cell-дерева.
Структура
Pruned-cell — это cell с особым «exotic»-типом и фиксированным телом:
- Уровень pruning (несколько байтов).
- Хеш дочернего cell, который был «обрезан» (32 байта).
- Высота в исходном дереве.
При вычислении хеша дерева TVM подставляет хеш из pruned-cell вместо «настоящего» хеша поддерева — и итоговый корневой хеш совпадает с настоящим.
Где встречаются
- Lite-server proofs. Когда лайт-клиент запрашивает баланс jetton-кошелька, сервер шлёт только нужный cell-путь плюс pruned-cell-ы для соседних веток.
- Block proofs. Доказательства принадлежности транзакции конкретному блоку.
- Cross-chain bridges. Pruned-cell-ы используются для компактного доказательства состояния одной цепи в другой.
Обычному dApp работать с pruned-cell-ами напрямую не приходится — это уровень инфраструктуры (лайт-клиенты, индексеры, бриджи). Но понимать механизм полезно: именно благодаря pruned-cell-ам клиент TON может верифицировать данные, не скачивая весь стейт.