Размещение сайтов в распределённой файловой системе IPFS. Имя хоста шлюза который используется для преобразования адресов ipfs ipns?

Чтобы обойти эту проблему, вы можете добавить параметр ?filename= в строку запроса, чтобы заранее указать имя локально хранимого файла, который вы загружаете:

# IPFS Gateway

Разработка IPFS направлена на то, чтобы встроить встроенную поддержку IPFS во все популярные браузеры и инструменты. Порталы обеспечивают обходные пути для приложений, которые еще не поддерживают IPFS нативно. Например, ошибки возникают, когда браузер, не поддерживающий IPFS, пытается получить доступ к содержимому IPFS в обычном формате ipfs:///. С другими инструментами, использующими только HTTP, аналогичные ошибки возникают при доступе к содержимому IPFS в обычном формате, например, с помощью Curl

(откроется в новом окне) исправляет эти ошибки при доступе к содержимому. Однако не каждый пользователь имеет право изменять — или иметь возможность изменять — конфигурацию своего компьютера. Шлюзы IPFS предоставляют службу на основе HTTP, которая позволяет браузерам и инструментам, не поддерживающим IPFS, получать доступ к содержимому IPFS.

# Gateway providers

Независимо от того, кто и где использует шлюз, каждый шлюз IPFS разрешает доступ к любому запрошенному идентификатору содержимого IPFS. Поэтому, если вы хотите воспользоваться услугами шлюза, для оптимальной работы следует использовать ближайший из них.

# Your local gateway

Ваш компьютер может размещать шлюз как локальную службу, например, на localhost:8080. У вас есть служба локального шлюза, если у вас есть IPFS Desktop

(открывается новое окно) или другой формы узла IPFS.

# Private gateways

(открывается новое окно) или формат другого узла IPFS разрешает попытки соединения с другими IPFS-сверстниками. Администраторы частных сетей могут рассматривать такие попытки подключения как потенциальные уязвимости безопасности. Частные серверы-шлюзы IPFS, расположенные в частной сети и использующие доверенную базу кода, обеспечивают альтернативную архитектуру для доступа на чтение/запись к содержимому IPFS, размещенному за пределами сети.

Шлюз за брандмауэром — это лишь одно из возможных мест расположения частного шлюза. В более общем случае любой шлюз может считаться частным шлюзом, если он настроен на ограничение доступа к запросам из определенных областей или частей публичного Интернета. Эти инструкции по настройке шлюза IPFS на платформе Google Cloud

(открывается в новом окне) содержит описание ограничения доступа.

# Public gateways

К операторам общественных шлюзов относятся:

  • Protocol Labs, which deploys the public gateway https://ipfs.io .
  • Third-party public gateways. E.g., https://cf-ipfs.com .

Protocol Labs ведет список публичных шлюзов.

A list of public gateways and their status, available on IPFS

# Gateway types

Категоризация шлюзов включает в себя несколько аспектов:

Выбор модели использования шлюза влияет на безопасность, производительность и другие эксплуатационные аспекты.

# Read-only and writeable gateways

Примеры, рассмотренные в предыдущих разделах, иллюстрировали использование HTTP-шлюзов только для чтения для получения содержимого из IPFS с помощью метода HTTP GET. HTTP-шлюзы, предназначенные только для чтения, также поддерживают методы POST,

# Authenticated gateways

(открывается в новом окне). Обычный формат доступа https://.ipfs./ заставляет браузер интерпретировать каждый возвращаемый файл как исходящий из другого источника.

Поддержка субдоменного анализа была введена в Kubo

Auth with Reverse proxy

Каждый раз, когда содержимое данных в IPFS изменяется, IPFS создает новый CID на основе содержимого этих данных. Многим приложениям необходим доступ к последней версии файла или веб-сайта, но они не знают точный CID последней версии. Служба имен переводчика (IPNS) позволяет разрешать идентификатор IPNS, который не зависит от версии в CID текущей версии IPFS.

Идентификатор IPNS, не зависящий от версии, содержит хэш. Когда шлюз обрабатывает запрос вида https:///ipns//, он использует IPNS для преобразования идентификатора IPNS в CID текущей версии, а затем извлекает соответствующее содержимое.

  Что с нами будет через сто лет: шесть мыслителей — о будущем наших тел. Что будет через 100 лет.

# Resolution style

Однако IPNS ID может ссылаться на полное доменное имя в обычном формате example.com.

# Path

Разрешение DNSLink происходит, когда шлюз распознает IPNS ID, содержащий example.com. Например, URL https://libp2p.io возвращает текущую версию этого сайта — сайта, хранящегося в IPFS — следующим образом:

Шлюз получает запрос такой формы:https://>URL шлюза/ipns/.>/example.com>

необязательный путь

В настоящее время HTTP-шлюзы могут получать доступ к службам IPFS и IPNS:

# Subdomain

Сервис

Стиль

Обычный формат доступа

IPFS

Путь

https:///ipfs//

IPFS

    Поддомен

Шлюз получает запрос такой формы:https://>DNSLinkhttps:/// предпочтительно, или https:///ipns//>/IPNS>

# Gateway services

Путь

https:///ipns// IPNS Поддомен
https://.ipns./ IPNS DNSLink
https://.ipns./ IPFS — это глобальное хранилище неизменяемой информации. Он действует как кэш, но также возможно использование специальных служб (платных или добровольных) для обеспечения целостности информации. IPFS призван заменить некоторые функции HTTP (и HTTPS) из-за проблем этого протокола: 3
https://.ipns./ Для получения дополнительной информации см. технический документ 9 и документацию 10. ВНИМАНИЕ: IPFS является полностью публичной сетью. Любой файл, хранящийся на нем, может быть просмотрен любым пользователем сети. Используйте шифрование для ограничения доступа. Также можно создать частную сеть на основе IPFS. Для получения более подробной информации см. документацию 11 .
По умолчанию IPFS не гарантирует, что файлы будут храниться в сети. Как упоминалось ранее, узлы хранят только те файлы, которые они используют. IPNS $ ipfs ad d-r. добавлен QmfGCviBGivYgbRGd1JfCgxhiXAUgszjwESBtVa9AoxFoW hello_ipfs/index.html добавлен QmdkXcfsSkpgaeh6GvQLBKVHsCoPEgBso7LW2rQdBoMgUo hello_ipfs/subdir/index. html добавлен QmPYofiX37wLX7ZDgxvsqNmqSDjDAzz3aurbgdZiSbyMGj hello_ipfs/subdir добавлен Qmd8QkqLB6xu1p6n6C3bWvtspidsPbx1gJ81fvXQiLdu6s hello_ipfs 490 B / 490 B ======================================================== 100.00%
По умолчанию IPFS не гарантирует, что файлы будут храниться в сети. Как упоминалось ранее, узлы хранят только те файлы, которые они используют. IPFS — это глобальное хранилище неизменяемой информации. Он действует как кэш, но также возможно использование специальных служб (платных или добровольных) для обеспечения целостности информации. Проще всего представить IPFS как дополнение (оверлейную сеть) к Интернету, которая использует другой метод доступа к ресурсам. Обычное «этот файл на этом веб-сервере» заменяется на «хэш-сумма хэша этого файла, который должен находиться где-то в сети». Клиенту нужно знать только хэш файла; все остальное делает сеть: она находит хост, у которого есть копия файла, запрашивает у него файл и отдает его нам. Более того, горизонтальный рост не ограничен, и по мере увеличения размера сети время, необходимое для поиска файла в хэш-таблице, увеличивается минимально (20 хопов для сети из 10 миллионов узлов, причем время увеличивается на один хоп при удвоении размера сети).
По умолчанию IPFS не гарантирует, что файлы будут храниться в сети. Как упоминалось ранее, узлы хранят только те файлы, которые они используют. Для получения дополнительной информации см. технический документ 9 и документацию 10. $ cp ipfs/ipfs

Что такое IPFS?

/bin $ chmod +x

Какие проблемы решает IPFS?

/bin/ipfs

  • HTTP загружает файл с одного сервера вместо того, чтобы получать его части из множества источников одновременно. Это увеличивает нагрузку на этот сервер и расходует его сетевой трафик. IPFS позволяет сократить эти расходы. 4
  • HTTP требует, чтобы сервер, с которого происходит загрузка файла, присутствовал в этот момент по определённому в ссылке адресу. Это приводит к тому, что среднее время жизни веб-страницы в Интернете составляет 100 дней. 5 IPFS выполняет функцию веб-архива, позволяя сохранять полезную информацию.
  • HTTP зависит от лежащих в его основе протоколов TCP, IP и DNS, которые управляются централизованными организациями, поэтому подвержены слежке и цензуре. IPFS не зависит от нижележащих протоколов и наличия прямого подключения к Интернету вообще.
  • HTTP позволяет подменить отдаваемое содержимое. Хотя для многих задач жизненно необходимо постоянно его обновлять, некоторые файлы и веб-страницы должны оставаться неизменными. В IPFS идентификатор файла однозначно определяет его содержимое.

Устройство IPFS

Последний шаг — инициализация локального хранилища файлов:

  • Каждым файлу и директории присваивается уникальный идентификатор (CID – Content Identifier) на основе применения к его содержимому криптографической хэш-функции. Одинаковые файлы получают одинаковый идентификатор, разные файлы – разные идентификаторы. 7
  • Сеть устраняет дублирование. Например, если при загрузке новой версии директории часть файлов не изменились, то они будут разделены между новой и предыдущей версиями.
  • Адресация содержимого осуществляется по его уникальному идентификатору (content addressing), то есть не зависит от его фактического положения в сети. 7
  • Каждый узел содержит только ту информацию, в которой он заинтересован, а также некоторую дополнительную информацию, необходимую для поиска файлов в сети (DHT – Distributed Hash Table). 8

Другие статьи в анонсе:

Если все прошло успешно, демон может запускаться:

Фиксация содержимого

С этого момента мы находимся в режиме онлайн, то есть можем искать файлы с помощью команд ipfs cat /ipfs/, ipfs get /ipfs/ и добавлять файлы с помощью команды ipfs add. Можно искать не только отдельные файлы, но и целые каталоги. Например, чтобы получить страницу index.html сайта dragonquest.neocities.org, мы можем использовать следующую команду:

index.html

  • Вы можете закрепить файл на своём рабочем компьютере или ноутбуке. При этом для вас он будет доступен всегда, даже в отсутствие доступа к Интернету, но другие пользователи сети не смогут получить к нему доступ, когда вы не в сети.
  • Вы можете запустить узел IPFS на сервере, который запущен постоянно. При этом файл будет доступен всегда, однако появляются расходы на содержание сервера (оплата услуг VDS, администрирование).
  • Вы можете закрепить файл на чужом сервере IPFS, лично обратившись к его администратору, а также воспользовавшись веб-интерфейсом или API сервиса, если таковые имеются.

Публикуем веб-сайт в IPFS

Второе свойство нашего веб-состояния заключается в том, что другие хосты могут использовать наш хост для поиска нужных им файлов (т.е. мы становимся членом распределенной хэш-таблицы). Вы можете узнать IP-адреса и уникальные идентификаторы ближайших узлов (в IPFS ближайший не означает географически ближайший):

Создаём веб-сайт

$ ipfs swarm peers

Третья особенность заключается в том, что каждый файл, который мы запрашиваем или загружаем, хранится локально, что означает, что мы участвуем в его распространении (тот же принцип, что и в файлообменных сетях). Само собой разумеется, что кэш можно и нужно время от времени очищать:

С другой стороны, мы можем захотеть сохранить некоторые из этих файлов и каталогов у себя — как для того, чтобы иметь возможность использовать их в будущем (автономный доступ), так и для помощи в распространении. Это можно сделать, «заблокировав» нужные нам файлы (чтобы сборщик мусора не мог их трогать):

$ ipfs pin add index.html

Hello, IPFS!

Hello, IPFS!

Subdir

Четвертая онлайн функция заключается в том, что теперь у нас есть собственный шлюз IPFS (я говорил вам, что его легко установить и запустить). Он доступен по адресу localhost:8080/ipfs/ и при необходимости может быть перенаправлен на порт 80.

Hello from subdir, IPFS!

Hello from subdir, IPFS!

Root

Помещаем веб-сайт в IPFS

Теперь у нас также есть веб-консоль по адресу localhost:5001/webui/, с помощью которой можно узнать адреса подключенных компьютеров, добавить файлы или просто получить определенные файлы через специальный портал. Все файлы HTML, CSS и JS, необходимые для создания веб-консоли, также загружаются (и, конечно, кэшируются) непосредственно из IPFS.

Как видите, очень просто подключиться к сети IPFS и начать сбрасывать файлы. Все делается с помощью одной-двух команд, без лишних вопросов. Но как насчет примера из реальной жизни? Так ли просто добавить целый сайт в IPFS и сделать его децентрализованным? Давайте посмотрим. В качестве примера давайте создадим простой сайт с заголовком и изображением.

Давайте сначала создадим каталог:

Страницы веб-сайта

Связанные статьи

Ссылки (∗)

  1. Pinata — The leading media management company for the creators and developers building the future of web3
  2. IPFS Companion — Browser extension that simplifies access to IPFS resources on the web
  3. IPFS Desktop — An unobtrusive and user-friendly desktop application for IPFS on Windows, Mac and Linux
  4. ipfs-update — An updater tool for IPFS
  5. kubo — IPFS implementation in Go
  6. Public Gateway Checker
  7. Causa Arcana в IPFS — Проект про информационные технологии, безопасность и децентрализацию
  8. Causa Arcana — Проект про информационные технологии, безопасность и децентрализацию
  9. CID Inspector
  1. IPFS powers the Distributed Web (web.archive.org, archive.is)
  2. The web of tomorrow needs IPFS today (web.archive.org, archive.is)
  3. A P2P VIDEO DELIVERY NETWORK (P2P-VDN) (web.archive.org)
  4. The Average Lifespan of a Webpage (web.archive.org)
  5. How IPFS works (web.archive.org, archive.is)
  6. Content addressing (web.archive.org)
  7. Distributed Hash Tables (DHTs) (web.archive.org)
  8. IPFS — Content Addressed, Versioned, P2P File System (DRAFT 3) (web.archive.org)
  9. IPFS Documentation (web.archive.org, archive.is)
  10. Privacy and encryption (web.archive.org)
  11. Persistence, permanence, and pinning (web.archive.org)
  12. Install IPFS (web.archive.org, archive.is)
  13. Command-line (web.archive.org)
  14. IPFS Gateway (web.archive.org)
  15. InterPlanetary Name System (IPNS) (web.archive.org)
  16. cron (web.archive.org, archive.is)
  17. DNSLink (web.archive.org)

Веб 3.0

$ mkdir /tmp/ipfs-site $ cd /tmp/ipfs-site.

Затем мы копируем в него изображение (мы называем его cat.jpg) и добавляем его в IPFS:

$ ipfs add cat.jpg добавлено QmP3MnEmYv7m7mxvqrduBFBhLUKSSjZxPBXwkfVko2yWdqnx cat.jpg

  • Высокая доступность. Веб-сайт, размещенный с помощью IPFS, не имеет точек отказа. При достаточно большом количестве узлов, реплицирующих веб-сайт или его части (или даже части файлов) у себя, выход одного, нескольких или даже большинства из них никак не повлияет на доступность веб-сайта. Более того, нагрузка на узлы, распространяющие контент веб-сайта, будет равномерно распределена между ними, что защитит от резких наплывов посетителей и DDoS-атак.
  • Параллельная загрузка. Клиент может загрузить части веб-сайта и отдельных файлов с разных узлов одновременно, равномерно распределяя нагрузку на них и увеличивая общую скорость загрузки.
  • Решение проблемы мертвых ссылок. Все файлы в IPFS адресуются с помощью хеш-сумм, так что, если один или несколько узлов перестанут хранить у себя файл, он все равно будет найден.
  • История версий. IPFS — версионная файловая система. При модификации файла старая версия остается неизменной и может быть адресована и найдена. Это позволяет из коробки получить wayback machine, которая будет работать до тех пор, пока хоть один узел будет хранить старую копию файла.
  • Обход цензуры. В IPFS нет единой точки входа и единого сервера, отвечающего за обслуживание веб-сайта или сервиса. Чтобы «выключить» сайт в IPFS, придется выключать все узлы, ответственные за хранение его частей. При достаточно больших размерах сети это нереализуемая задача.
  • Экономия на трафике. Благодаря равномерному распределению нагрузки на узлы можно существенно сократить расходы на трафик, размазав их по всем раздающим.

Сохраните хэш IPFS и попробуйте открыть файл через локальный шлюз IPFS, чтобы проверить его:

Выходим в IPFS

http://localhost:8080/ipfs/QmP3MnEmYv7mxvqrduBFBhLUKSSjZxPBXwkfVko2yWdqnx

Изображение должно загрузиться безопасно. Теперь настала очередь HTML-файла, и здесь сразу возникает вопрос: как адресовать изображение? Самый очевидный вариант — использовать приведенную выше ссылку, но в этом случае изображение увидим только мы, поскольку наш портал локальный. Поэтому мы будем использовать официальный портал IPFS. Мы напишем следующий код:

Здравствуйте, IPFS!

И снова мы добавляем файл в IPFS:~$ ipfs add index.html добавлен QmZzffWhi8DTofwkFPvHyN9pABtrRYSubjGYvpbw2HharHp index.html.

Теперь наша HTML-страница и изображение находятся в сети IPFS, что означает, что они должны быть доступны не только через локальный шлюз, на котором изначально находятся эти файлы, но и через любой другой шлюз. Так что давайте попробуем:~https://ipfs.io/ipfs/QmZzfWhi8DTofwkFPvHyN9pABtrRYSubjGYvpbw2HharHp~И подожди. Первая загрузка может занять довольно много времени, поскольку портал сильно загружен и ни у кого, кроме нас, нет копий наших файлов. Но в конце концов, страница загружается. Теперь мы можем убить локального демона IPFS командой killall ipfs и попытаться открыть страницу снова. Страница открывается как положено.

Инициализация IPFS

Хакер #202. Скажи нет большому брату!

$ ipfs cat /ipfs/QmTwEt89e6y3bRNMuZwhZHk7JjoeiYbqcASYHh6gkgnCoQ/index.html>

Список пиров IPFS

Размещаем веб-сайт

Hello IPFS!

Неубиваемая веб-страница

Оцените статью
Бизнес блог