Cells и bag of cells: как TON хранит данные

Ячейка — базовая единица данных в TON: до 1023 бит и до 4 ссылок. Как устроены Cell, BoC и зачем это разработчику.

Что такое Cell

Cell (ячейка) — атомарная единица данных в TON. В одной ячейке:

  • до 1023 бит данных
  • до 4 ссылок на другие ячейки

Код контракта, его storage, сообщения, блоки — всё собирается из ячеек. Дерево/DAG ячеек называют bag of cells (BoC).


Зачем такая модель

Вместо «плоского» массива байт TON даёт дерево ссылок. Это позволяет:

  • разделять большие структуры на куски с известным хешем
  • передавать в сообщениях только нужные ветки
  • мержить и сравнивать данные по хешам ячеек
typescript
// @ton/core ^0.59.0
import { beginCell, Cell } from "@ton/core";

// Строим ячейку: 32-битное число + ссылка на другую ячейку
const child: Cell = beginCell().storeUint(42, 32).endCell();

const root: Cell = beginCell()
  .storeUint(1, 8)
  .storeRef(child)
  .endCell();

console.log(root.hash().toString("hex"));
console.log(root.toBoc().toString("base64")); // BoC как base64

beginCell() → пишешь биты/ссылки → endCell(). toBoc() сериализует дерево в бинарный Bag of Cells.


Как это работает

  • storeUint / storeCoins / storeAddress — упаковка типичных полей TL-B
  • storeRef(cell) — одна из максимум четырёх ссылок
  • Хеш ячейки зависит от битов и хешей дочерних ячеек
  • Контрактный data — обычно одна корневая ячейка storage

При разборе чужих данных используй cell.beginParse() (slice) и читай поля в том же порядке, в каком их записали.


Частые ошибки

Превысить 1023 бит или 4 ссылки в одной ячейке → компилятор/endCell упадёт; дроби структуру на дочерние ячейки.

Читать slice не в том порядке → получишь мусор или ошибку парсинга; схема хранения = контракт между писателем и читателем.

Путать Cell и BoC → Cell — узел дерева; BoC — сериализованный пакет одного или нескольких корней для передачи/хранения.


Что дальше

Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация