TON Storage: децентрализованное хранение
TON Storage — это децентрализованная файловая система, построенная на технологии, похожей на BitTorrent, но с интеграцией в блокчейн TON. Для разработчиков это способ хранить данные (метаданные NFT, медиафайлы, бэкапы) децентрализованно, не завися от AWS S3 или IPFS.
Блокчейн TON хранит состояние контрактов, но не предназначен для хранения файлов. Размещать изображения, видео или метаданные NFT прямо в ячейках (cells) непрактично — это дорого и медленно. TON Storage решает эту задачу: это децентрализованная система хранения файлов, встроенная в экосистему TON.
TON Storage использует торрент-подход — файлы разбиваются на части и хранятся на распределённых узлах. Но в отличие от классического BitTorrent, здесь используется собственный сетевой протокол TON — ADNL (Abstract Datagram Network Layer).
Основные концепции
Bag — контейнер файлов
Bag (пакет) — это базовая единица хранения в TON Storage. Один Bag может содержать один файл или целую директорию файлов. Каждый Bag идентифицируется уникальным Bag ID:
Bag ID = SHA256(torrent description)
= 32 байта (256 бит)
Пример: a7f3b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
Bag ID вычисляется как хеш описания торрента (torrent description) — структуры, содержащей список файлов, их размеры и хеши частей. Зная Bag ID, можно найти и скачать файлы из сети.
Storage Node — узел хранения
Storage Node — это узел в сети TON, который хранит части (pieces) файлов и отдаёт их по запросу. Каждый узел:
- Имеет ADNL-адрес (256-битный абстрактный адрес в сети TON)
- Подключён к DHT (Distributed Hash Table) для обнаружения
- Отдаёт файлы по протоколу RLDP (Reliable Large Datagram Protocol) поверх ADNL
DHT — распределённая таблица
DHT (Distributed Hash Table) — это сервис обнаружения в сети TON. Он связывает Bag ID с адресами узлов, которые хранят этот Bag:
DHT: Bag ID -> список ADNL-адресов Storage Node
Пример:
Bag ID a7f3b2... -> [
ADNL: node1_256bit_address,
ADNL: node2_256bit_address,
ADNL: node3_256bit_address
]
Архитектура
Процесс загрузки файла
- Владелец формирует torrent description — структуру с метаданными: список файлов, размеры, хеши каждой части (piece)
- Вычисляет Bag ID как SHA256 от description
- Разбивает файлы на pieces фиксированного размера
- Загружает pieces на один или несколько Storage Node через ADNL
- Регистрирует Bag ID в DHT, связывая его с адресами узлов
Процесс скачивания файла
- Клиент знает Bag ID (получил из NFT metadata, сообщения, веб-страницы)
- Обращается к DHT с запросом: “какие узлы хранят Bag ID X?”
- DHT возвращает список ADNL-адресов Storage Node
- Клиент подключается к узлам по ADNL и скачивает pieces через RLDP
- Проверяет хеши pieces и собирает исходные файлы
ADNL как транспорт
В отличие от классического BitTorrent, который работает поверх TCP/UDP с IP-адресами, TON Storage использует ADNL (Abstract Datagram Network Layer):
| Аспект | BitTorrent | TON Storage |
|---|---|---|
| Адресация | IP:port | ADNL-адрес (256 бит) |
| Обнаружение | DHT (Kademlia) | TON DHT |
| Транспорт | TCP/uTP | ADNL + RLDP |
| Шифрование | Опционально | Всегда (end-to-end) |
| Идентификатор файла | Infohash (SHA1) | Bag ID (SHA256) |
ADNL скрывает реальные IP-адреса узлов за абстрактными 256-битными адресами. Это обеспечивает end-to-end шифрование и определённую степень анонимности для участников сети.
Сравнение с IPFS/Filecoin
TON Storage и IPFS решают одну задачу — децентрализованное хранение. IPFS использует Content-Addressing (CID), TON Storage — Bag ID. Filecoin добавляет экономические стимулы поверх IPFS. TON Storage интегрирован в экосистему TON и использует ADNL-сеть, тогда как IPFS работает поверх обычного интернета (libp2p). На практике IPFS значительно более распространён, а TON Storage остаётся нишевым решением внутри экосистемы TON.
Связь с NFT
Один из главных сценариев использования TON Storage — хранение контента NFT. Вместо размещения изображений и метаданных на централизованных серверах или IPFS, коллекции NFT могут ссылаться на TON Storage:
Преимущества TON Storage для NFT:
- Децентрализация: файл не зависит от одного сервера
- Интеграция: весь стек (NFT контракт + DNS имя + хранение) внутри экосистемы TON
- Постоянство: пока хотя бы один Storage Node хранит Bag, файл доступен
Кроме того, .ton домены (из предыдущего урока) могут хранить DNS-запись storage_bag_id, связывая имя домена с файлом в TON Storage.
Зрелость технологии
TON Storage менее широко используется, чем IPFS. Большинство NFT-проектов на TON по-прежнему хранят контент на IPFS или централизованных серверах. Мы рассматриваем TON Storage как архитектурную концепцию — понимание его устройства важно для полной картины экосистемы TON.
Итоги
| Компонент | Роль |
|---|---|
| Bag | Контейнер файлов, идентифицируется Bag ID (SHA256) |
| Bag ID | Уникальный идентификатор Bag, 32 байта |
| Storage Node | Узел, хранящий pieces файлов, доступен по ADNL |
| DHT | Распределённая таблица: Bag ID -> список Storage Nodes |
| ADNL | Сетевой транспорт: абстрактная адресация, шифрование |
| RLDP | Протокол передачи больших данных поверх ADNL |
TON Storage создаёт децентрализованный слой хранения файлов внутри экосистемы TON. Торрент-подход обеспечивает распределённость, ADNL — шифрование и абстрактную адресацию, а интеграция с NFT и DNS делает хранение частью единого стека. В следующем уроке мы разберём TON Proxy и TON Sites — как ADNL-сеть используется для создания веб-сайтов, устойчивых к цензуре.
Частые ошибки
- Используют TON Storage для часто изменяемых данных: система оптимизирована для статического контента, а не для баз данных.
- Забывают о стоимости хранения: хранение больших файлов требует депозита TON для оплаты нод хранения.
- Не создают резервные копии критичных данных: децентрализованное хранение не гарантирует доступность, если все ноды с файлом офлайн.
- Путают Bag ID и хеш файла: Bag ID идентифицирует коллекцию файлов (torrent), а не отдельный файл.
Проверка знанийКак клиент находит Storage Nodes, хранящие нужный файл, если он знает только Bag ID?
Проверьте понимание
Закончили урок?
Отметьте его как пройденный, чтобы отслеживать свой прогресс
Войдите чтобы оценить урок