А если серьезно, то IPFS — инфраструктурная основа web3, вобравшая технологии BitTorrent и блокчейн-протоколов. Объясняем простыми словами как она работает и в чем ее преимущества и недостатки.
Коротко про IPFS и ее роль в Tezos
IPFS (InterPlanetary File System) — это протокол для децентрализованного хранения и доступа к данным. Сеть распределяет записанные файлы между нодами, и при запросе доступ к файлу строит маршрут к ближайшей ноде, чтобы обеспечить максимальную скорость загрузки. Если файл большой и состоит из частей, IPFS работает как BitTorrent и позволяет загружать разные фрагменты от разных нод.
IPFS бесплатна, поэтому NFT-маркетплейсы используют ее для хранения NFT. На любом маркетплейсе Tezos вы можете найти ссылки на контент в IPFS-зеркале, а в метаданных NFT — прямые IPFS-ссылки на контент. Например, Objkt.com предоставляет сразу все: прямую ссылку, объект на сервере Objkt.com и IPFS-ссылку на метаданные.
А еще Tezos поддерживает IPFS ссылки на метаданные контрактов — посмотрите TZIP-16.
Главное визуальное отличие HTTP и IPFS
Интернет — это сеть для обмена данными между участниками. Однако мало просто соединить два компьютера кабелем — нужен еще протокол: правила для маршрутизации запросов, шифрования трафика, передачи данных и других операций.
Для разных типов данных и задач используются разные протоколы. Например, IP нужен для доступа к хосту по его физическому адресу в сети, TCP и UDP — для передачи данных между хостами, DNS — для поиска IP-адресов по имени хостов.
Самый известный интернет-протокол — это HTTP, HyperText Transfer Protocol. Он нужен для доставки запросов и получения ответов между клиентом и сервером. Грубо говоря, когда вы набираете в браузере адрес сайта, браузер сначала ищет физический адрес сервера-хоста, на котором хранится сайт, и затем передает ему HTTP-запрос на получение данных по указанному адресу.
IPFS вместо поиска данных по адресу хоста ищет их по адресах самих файлов. То есть, вместо «ipfs://WEBSITE.COM/image.jpg» будет просто «ipfs://image». IPFS сама найдет хосты, у которых есть искомые файлы.
Разный формат ссылок — главное визуальное отличие HTTP от IPFS. При этом открывать IPFS-ссылки умеют только некоторые браузеры вроде Brave и Opera. В Chrome и других нужно устанавливать специальные расширения.
Как IPFS хранит и ищет данные
Сеть IPFS состоит из тысяч нод, которые хранят и реплицируют данные подобно тому, как это делают блокчейн-протоколы. Точное количество нод и объем хранимых на них данных посчитать нельзя, но команда Protocol.ai предполагает цифры в 200 000 нод и 125 ТБ трафика в неделю.
IPFS-протокол присваивает каждому загруженному файлу уникальный хеш-идентификатор — CID. Именно он находится в конце ссылки, вроде этой:
ipfs://QmXR7gHjhYnRBY2kyvSPE1skHr28GXpe6xfVWBst5NrLVv
Если дважды загрузить в IPFS один и тот же файл, то копия получит такой же CID, но, скорее всего, попадет на другую ноду. Если же файл изменить, то новый вариант получит новый CID и будет существовать в IPFS одновременно со старым.
При загрузке файлов больше 256 КБ ноды разбивают их на фрагменты, каждый из которых получает свой CID. При этом ноды на базе CID создают ориентированный ациклический граф Меркла (Merkle DAG), с помощью которого описывают связи между фрагментами и финальным файлом. Грубо говоря, это выглядит как инструкция «Чтобы получить оригинальную картинку А, нужно объединить фрагменты А1, А2 и А3».
С помощью графов Меркла IPFS может:
- хранить и хостить большие проекты вроде вебсайтов и веб-приложений без риска потерять фрагменты;
- обновлять отдельные фрагменты файлов и сохранять историю изменений вместо того, чтобы перезаписывать весь файл или фрагменты;
- хранить разные фрагменты на разных нодах и без проблем собирать их в оригинальный файл.
Чтобы находить файлы по их CID, IPFS использует аналог DNS — распределенную таблицу хешей или DHT. Ноды записывают в нее информацию о том, какие файлы или фрагменты они хранят. Если пользователь ищет картинку с CID А, то таблице хешей он найдет список нод, у которых можно запросить этот файл. Поиск и загрузка файлов из фрагментов работает аналогично: по CID крупного файла находится соответствующий граф Меркла, а из графа Меркла — список CID фрагментов и адресов нужных нод.
Как пользоваться IPFS
Чтобы открывать IPFS-ссылки и получать контент нужно установить подходящий браузер или расширение.
Чтобы самостоятельно что-то загрузить в IPFS, нужно установить клиент IPFS Desktop и запустить свою ноду.
Подробные инструкции и программное обеспечение есть на сайте IPFS Tech.
Три преимущества и один недостаток IPFS
Первое преимущество — неизменность данных. Записанные файлы нельзя изменить, а удалить их можно только с согласия нод, которые хранят все копии.
Второе преимущество — IPFS бесплатна для записи файлов. Однако если файл долго не запрашивать, ноды могут его удалить за ненадобностью. Некоторые сервисы предлагают гарантированное хранение данных в IPFS по тарифу $0,1-0,2 за 1 ГБ.
Третье преимущество — децентрализация и отсутствие цензуры. Как и в случае с блокчейн-протоколами, отключение нескольких нод не повлияет на работу протокола в целом.
Однако, есть и недостаток. Если в блокчейн-протоколах все ноды хранят одинаковые копии блокчейна, то в IPFS у каждой ноды свой набор файлов. Допустим, если вашу картинку хранят четыре ноды, и все они решают почистить неиспользуемые файлы, то вы больше не сможете получить к ней доступ.
Подписывайтесь на социальные сети Tezos Ukraine, чтобы ничего не пропустить:
- Telegram-канал
- Facebook.
- Twitter на русском и украинском языках
- Twitter на английском языке
- YouTube-канал
Изначально мы опубликовали этот материал в блоге Tezos Ukraine.