IPFS in Opera Touch on iOS!

(opens new window) . This was an important step in IPFS browser support generally, by building interest and momentum. We didn’t stop there, and we’ve got not just one… BUT TWO releases to share with you today!
First, Opera has now added support for IPFS addressing to Opera Touch, their iOS browser.

Second, support for IPFS addressing in Opera desktop browser for Windows, macOS, and Linux will be coming in their next release, currently planned for March 2021.
As a special surprise for EthDenver, you can download a preview build of Opera for desktop which has IPFS addressing support! Give it a spin at ethdenver2021.opera.com
With these releases, Opera will now support ipfs:// and ipns:// addressing across their browser product line on all major operating systems: Windows, macOS, Linux, iOS, and Android.
# How do I use it?
First, install Opera Touch on your iOS device. If you’re reading this on an iOS device, click to install now

Then you can open content using IPFS protocol addresses, like the blog you’re reading now, Wikipedia, or this Persian room guardian by Anya Boz
(opens new window) . You can easily upload files to IPFS using the IPFS desktop application
# How does it work?
Opera Touch supports navigating to addresses for ipfs:// and ipns:// protocol schemes, which are handled by a remote HTTP gateway. By default the gateway used is dweb.link , which is operated by Protocol Labs. The ability to select a different gateway is coming in the next update of Opera Touch.
Native representation of IPFS addresses in browsers is important, even when the content is loaded from an HTTP gateway as IPFS URIs are resolved out of the box, without the need for any additional extensions or opt-in settings, which familiarizes users and developers with decentralized concepts of content-addressing and creates a path to readiness for when native nodes are available.
# What’s next?
Opera desktop browser support for IPFS addressing will ship soon, and we’re discussing what additional features to add next to build on top of this foundation of universal addressing support across the Opera browser line. Have ideas for what you’d like to see in Opera next? Let us know on the IPFS forums
Что такое IPFS и как использовать?
IPFS (InterPlanetary File System) — это распределенная система для хранения и доступа к файлам, веб-сайтам, приложениям и данным.
Технология IPFS является важным инфраструктурным решением для Web3 и может полностью изменить принцип хранения данных в сети и доступ к ним, решив проблемы доступности контента.
Контент, размещенный в IPFS, хранится не на одном сервере, а на множестве расположенных в любой точке мира одноранговых узлов, которые могут передавать информацию, хранить ее, или делать и то и другое. Ключевое отличие IPFS от существующего интернет-протокола HTTP в том, что доступ к данным осуществляется не по местоположению сайта, а напрямую по адресу его содержимого.
Простыми словами IPFS — это аналог торрент-трекера, в котором некоторое количество узлов (компьютеров) свободно делятся хранящимися на них файлами, таким образом распространяя их по всей сети с возможностью получения свободного доступа.
Преимущества IPFS
IPFS предоставляет несколько преимуществ по сравнению с традиционной моделью клиент-сервер:
- Во-первых, он более безопасен и отказоустойчив, поскольку данные хранятся в распределенной сети компьютеров, а не на одном сервере. Это затрудняет доступ хакеров к данным и затрудняет их потерю.
- Во-вторых, это быстрее, так как данные можно получить с нескольких узлов одновременно.
- Наконец, он более надежен, так как данные хранятся в сети избыточно, а это означает, что даже если один узел выйдет из строя, к данным все еще можно будет получить доступ.
Особенности IPFS
Вместо определения местоположения IPFS обращается к файлу по тому, что в нем находится, или по его содержимому.
Например, так выглядят традиционные URL-адреса и пути к файлам:
- https://sweb.ru
- /Users/Documents/budget.pdf
- C:\Users\Sweb\My Documents\project_sprint_presentation.ppt
А адрес каждого фрагмента контента, который использует протокол IPFS, имеет идентификатор контента или CID, то есть его хэш и может выглядеть например так:
Приведенный выше идентификатор контента представляет собой криптографический хэш. Хэш уникален для контента, из которого он был получен, при этом может относиться к данным только одного фрагмента файла, всего файла, каталога, всего веб-сайта или любого другого контента.
Поскольку адрес файла в IPFS создается из самого контента, ссылки в IPFS изменить нельзя. При каждом обновлении данных будет формироваться новый хэш и, соответственно, новая ссылка на него. Именно поэтому злоумышленники не могут просто передать несоответствующий контент.
Если текст на веб-странице изменяется, новая версия получает новый, другой адрес.
Контент нельзя переместить на другой адрес. В современном интернете компания может реорганизовать контент на своем веб-сайте и переместить страницу https://sweb.ru/hosting на https://sweb.ru/services/hosting. В IPFS старая ссылка, которая у вас есть, по-прежнему будет указывать на тот же старый контент.
Существуют технологии доступа к динамически изменяемому контенту по одной и той же ссылке, такие как IPNS или Unstoppable Domain, которые мы планируем развивать на нашей платформе в будущем.
Шлюзы IPFS
Развитие IPFS направлено, в том числе на включение встроенной поддержки IPFS во все популярные браузеры и инструменты. Шлюзы предоставляют обходные пути для приложений, которые еще не поддерживают IPFS. Например, ошибки возникают, когда браузер, не поддерживающий IPFS, пытается получить доступ к содержимому IPFS в канонической форме ipfs://{CID}/{optional path to resource}
Шлюзы IPFS предоставляют службу на основе HTTP, которая позволяет браузерам и инструментам, не поддерживающим IPFS, получать доступ к содержимому IPFS.
SpaceWeb поддерживает собственный шлюз, с его помощью можно получить доступ к загруженному контенту сразу после загрузки, не дожидаясь, пока информация о хеше “разойдется” по всей IPFS сети.
Как работать с IPFS в SpaceWeb
Для корректной работы с IPFS на аккаунте должны быть включены исходящие соединения в разделе «Инструменты — Антивирус и трафик» панели управления во вкладке «Трафик».
SpaceWeb предлагает клиентам виртуального хостинга загрузить любой свой контент в сеть IPFS, используя знакомый файловый менеджер в панели управления аккаунтом.
Для этого достаточно выполнить несколько действий:
- Авторизоваться в панели управления
- Перейти в раздел IPFS

- Подключить IPFS для аккаунта
- После подключения в Файловом менеджере появится папка IPFS, куда можно скопировать любой контент

- В разделе IPFS вам будет доступен хеш-адрес ко всей вашей личной папке IPFS, а также доступ к просмотру всего контента папки и хеши отдельных файлов и поддиректорий.

SpaceWeb поддерживает Web3 технологии, поэтому мы подняли собственный шлюз IPFS, используя его вы сразу сможете получить доступ к загруженному контенту по протоколу IPFS, но чтобы вся сеть “узнала” о загруженном контенте мы также отправляем информацию на основные публичные шлюзы сети IPFS.
На текущий момент лимиты на количество и объём загружаемых файлов с нашей стороны не установлены. Уже загруженные в систему IPFS файлы сохраняются при смене тарифного плана, в том числе на нехостинговые («Почтовый», «Домен», «Партнёр»). На нехостинговых тарифах загрузка новых файлов будет недоступна.
Как получить доступ к загруженному контенту в сети IPFS
- Через шлюз SpaceWeb или другой публичный IPFS шлюз. С помощью HTTP-шлюза можно получить доступ к контенту через любой браузер. При этом, при загрузке данных через панель управления SpaceWeb доступ к ним через шлюз SpaceWeb будет доступен мгновенно. Путь к контенту в общем случае будет выглядеть так:
- По канонической ссылке ipfs://{CID}/{optional path to resource}. Однако, такой путь будет работать только если ваш браузер или другое ПО поддерживает протокол IPFS. “Из коробки” это умеют делать браузеры Brave и Opera, для других популярных браузеров Chrome, FireFox или Edge существуют расширения, позволяющие использовать канонические ссылки.
Как можно использовать IPFS
- Обмен файлами
- Хранение статичного медиа-контента: изображения, видео, аудио и размещения ссылок на контент на сайте или любых других ресурсах, при этом используются преимущества децентрализации IPFS: скорость загрузки и отказоустойчивость.
SpaceWeb со своей стороны будет и дальше развивать Web3 инфраструктуру. Если вы хотите поддержать эту инициативу – пишите нам и предлагайте идеи.
Размещение сайтов в распределённой файловой системе IPFS
Логотип IPFS
Что такое IPFS?
IPFS – это глобальное хранилище неизменяемой информации. Работает как временный кэш, но также возможно использование специальных сервисов (платных или волонтёрских), гарантирующих сохранность информации.
Какие проблемы решает IPFS?
IPFS должен заменить некоторые функции HTTP (и HTTPS) из-за проблем этого протокола: [3]
- HTTP загружает файл с одного сервера вместо того, чтобы получать его части из множества источников одновременно. Это увеличивает нагрузку на этот сервер и расходует его сетевой трафик. IPFS позволяет сократить эти расходы. [4]
- HTTP требует, чтобы сервер, с которого происходит загрузка файла, присутствовал в этот момент по определённому в ссылке адресу. Это приводит к тому, что среднее время жизни веб-страницы в Интернете составляет 100 дней. [5] IPFS выполняет функцию веб-архива, позволяя сохранять полезную информацию.
- HTTP зависит от лежащих в его основе протоколов TCP, IP и DNS, которые управляются централизованными организациями, поэтому подвержены слежке и цензуре. IPFS не зависит от нижележащих протоколов и наличия прямого подключения к Интернету вообще.
- HTTP позволяет подменить отдаваемое содержимое. Хотя для многих задач жизненно необходимо постоянно его обновлять, некоторые файлы и веб-страницы должны оставаться неизменными. В IPFS идентификатор файла однозначно определяет его содержимое.
Устройство IPFS
В основе IPFS лежат несколько простых принципов: [6]
- Каждым файлу и директории присваивается уникальный идентификатор (CID – Content Identifier) на основе применения к его содержимому криптографической хэш-функции. Одинаковые файлы получают одинаковый идентификатор, разные файлы – разные идентификаторы. [7]
- Сеть устраняет дублирование. Например, если при загрузке новой версии директории часть файлов не изменились, то они будут разделены между новой и предыдущей версиями.
- Адресация содержимого осуществляется по его уникальному идентификатору (content addressing), то есть не зависит от его фактического положения в сети. [7]
- Каждый узел содержит только ту информацию, в которой он заинтересован, а также некоторую дополнительную информацию, необходимую для поиска файлов в сети (DHT – Distributed Hash Table). [8]
За более подробной информацией обратитесь к whitepaper [9] и к документации [10] .
ВНИМАНИЕ! IPFS является полностью публичной сетью. Любой помещённый в неё файл доступен каждому участнику сети. Для ограничения доступа используйте шифрование. Также возможно создание приватной сети на основе IPFS. Более подробно читайте в документации [11] .
Фиксация содержимого
IPFS по умолчанию не даёт никаких гарантий того, что файлы будут храниться в сети. Как уже было сказано, узлы хранят только те файлы, которые используют.
Для сохранения файлов существует механизм закрепления (pinning [12] ). Есть несколько сценариев его использования:
- Вы можете закрепить файл на своём рабочем компьютере или ноутбуке. При этом для вас он будет доступен всегда, даже в отсутствие доступа к Интернету, но другие пользователи сети не смогут получить к нему доступ, когда вы не в сети.
- Вы можете запустить узел IPFS на сервере, который запущен постоянно. При этом файл будет доступен всегда, однако появляются расходы на содержание сервера (оплата услуг VDS, администрирование).
- Вы можете закрепить файл на чужом сервере IPFS, лично обратившись к его администратору, а также воспользовавшись веб-интерфейсом или API сервиса, если таковые имеются.
Для надёжности следует использовать все способы и закреплять файлы на нескольких узлах. Чем больше узлов хранит файл, тем меньше вероятность того, что он пропадёт, если узел будет закрыт.
На данный момент единственным известным нам сервисом по фиксации файлов в IPFS, работающим в автоматическом режиме, является Pinata [13] . Он предоставляет 1 ГБ бесплатно, сверх этого хранение стоит $0.15 в месяц за 1 ГБ.
Шлюзы
Для доступа к файлам, размещённым в IPFS, требуется установка специального программного обеспечения [14] Расширение для веб-браузеров IPFS Companion [15] делает опыт взаимодействия в веб-браузере со страницами из IPFS неотличимым от взаимодействия с обычными веб-страницами. IPFS Desktop [16] позволяет рядовому пользователю легко использовать IPFS. Для администраторов серверов или для продвинутых пользователей возможна установка с помощью ipfs-update [17] , из бинарных репозиториев [18] или путём компиляции из исходного кода [19] .
Необходимость установки программного обеспечения, даже если она не вызывает больших трудностей, сильно ограничивает потенциал IPFS. Для решения этой проблемы были придуманы шлюзы (gateways [20] ) – обычные веб-сайты, которые отдают содержимое из IPFS.
Как это работает? Допустим, в IPFS имеется файл с адресом ipfs://bafybeifoottvirj3crpx66qdsey7lxlp6qwk57wl37xygjqymeobwixy5e/concepts/ipfs-gateway/ . Традиционное программное обеспечение не умеет открывать такие адреса. Поэтому мы можем сформировать обычную ссылку: https://ipfs.io/ipfs/bafybeifoottvirj3crpx66qdsey7lxlp6qwk57wl37xygjqymeobwixy5e/concepts/ipfs-gateway/ . Здесь ipfs.io – это шлюз, который принадлежит разработчикам IPFS. Он использует способ разрешения имён через путь запроса. В общем случае URL выглядит так:
У такого способа разрешения имён есть два недостатка. Во-первых, если файл является веб-страницей, то ссылки на ней должны быть относительными. Во-вторых, если файл является веб-страницей, содержащей интерактивное одностраничное веб-приложение, то это угроза безопасности, поскольку приложение работает на том же домене, что и другие, посторонние приложения.
Поэтому существует ещё способ разрешения имён через поддомен. Ссылка на наш файл в этом случае будет иметь вид https://bafybeifoottvirj3crpx66qdsey7lxlp6qwk57wl37xygjqymeobwixy5e.ipfs.dweb.link/concepts/ipfs-gateway/ , где ipfs.dweb.link – это шлюз, который поддерживает такой способ разрешения имён. В общем случае URL выглядит так:
Список шлюзов имеется по ссылке https://ipfs.github.io/public-gateway-checker [21] . Необходимо понимать, что использование сторонних шлюзов нивелирует преимущества IPFS. Одной из проблем сторонних шлюзов является то, что они без труда могут осуществить атаку MitM (man-in-the-middle), то есть подменить содержимое, однако это решается использованием собственного шлюза, поэтому вы вполне можете использовать IPFS для размещения серьёзных веб-сайтов и веб-приложений, не создавая неудобств для пользователей.
Поскольку IPFS использует адресацию на основе содержимого, малейшее изменение полностью меняет адрес. Для того, чтобы иметь постоянную ссылку на меняющееся содержимое, поверх IPFS построена система IPNS (InterPlanetary Name System) [22] . Эта система очень простая. С использованием приватного ключа узел сообщает сети, что он хочет опубликовать по адресу, связанному с этим ключом, определённый CID. Эта привязка остаётся действительной некоторый промежуток времени, обычно сутки. Чтобы адрес оставался актуальным, требуется периодически повторно осуществлять эту операцию, что можно автоматизировать, например, с помощью cron [23] .
К сожалению, этот процесс нельзя делегировать стороннему сервису, как это возможно в случае простого хранения файлов, не передавая ему свой приватный ключ. Однако, это позволяет раздавать веб-сайт, например, с постоянно включенного домашнего компьютера, даже если он находится за NAT. Система IPNS ещё развивается. Возможно, в будущем это ограничение будет устранено.
DNSLink
IPNS использует в качестве идентификатора CID. Это очень длинная и ничего не значащая для человека строка, её неудобно произносить вслух и вводить вручную. Благодаря DNSLink [25] можно привязать содержимое IPFS к традиционному доменному имени. Например, веб-сайт https://causa-arcana.com [26] работает через DNSLink. При этом пользователи, у которых стоит программное обеспечение IPFS, получают содержимое из этой сети, а остальные пользователи получают содержимое через шлюз.
Для привязки CID к доменному имени необходимо создать две записи в DNS:
Здесь cloudflare-ipfs.com – это адрес шлюза, который поддерживает DNSLink.
Преимуществом DNSLink перед IPNS, помимо более удобного имени веб-сайта и отсутствия необходимости иметь сервер для постоянного повторения процесса публикации, является отсутствие в ссылке доменного имени конкретного шлюза. Если шлюз перестал работать или заблокировал ваш веб-сайт, то достаточно выбрать другой шлюз и вписать его в запись DNS типа CNAME. В то же время, этот способ подразумевает привязку к традиционной системе доменных имён, которая является централизованной, в ней возможны цензура и изъятие домена.
Виды CID
Существует два вида идентификаторов содержимого:
- CIDv0: QmesV3cwCMeweAMePKhPCkoKNh2A3cMgEYQwRPUUf3Cvy7
- CIDv1: bafybeihvuei3zko5ao5v7k2tutds4b2fm7gcbc3mjete7ifkzsqayuq7ai
Хотя CIDv0 всё ещё является стандартным для содержимого, помещаемого в IPFS, он плохо подходит для поддоменов, поскольку использует и заглавные, и строчные буквы, в то время как доменные имена не чувствительны к регистру.
Один и тот же идентификатор CIDv1 может использовать различные кодировки:
- Base32: bafzaajaiaejca2m4edvf5zdbgnbj5nvz2nm7chdtwzfcupmoaaarifdonsl7ibqu
- Base36: k51qzi5uqu5ditckag7gw12c301kwxac5fpobs62i21uysuiry3bobotvbenmc
Именно CIDv1 с кодировкой Base36 используется для поддоменов.
Для преобразования между различными видами CID существует сервис CID Inspector [27] .
Публикуем веб-сайт в IPFS
Вам потребуются операционная система на основе GNU/Linux, навыки работы в командной строке и программное обеспечение IPFS [18] .
Создаём веб-сайт
Для начала создадим простой веб-сайт, состоящий из двух страниц. Создайте пустую директорию в вашем домашнем каталоге и перейдите в неё:
Также создайте директорию для второй страницы сайта. Это нужно для демонстрации работы относительных ссылок:
В директории верхнего уровня создайте файл index.html . Буквы после слова random (здесь это 74eownSL2tdYBsXm ) замените на любые случайные буквы. Можете просто нажимать произвольные буквы на клавиатуре.
В директории subdir также создайте файл index.html . Аналогичным образом замените буквы после слова random (здесь это TKj20YgXq9fsqYTr ) на случайные буквы.
Помещаем веб-сайт в IPFS
Перейдите в корневую директорию вашего проекта и наберите команду ipfs add -r . , после чего вы должны увидеть примерно следующий текст:
Если вы точно следовали инструкциям и использовали случайные символы, то указанные в каждой строке после слова added CID у вас будут отличаться от представленных. Нас интересует последний CID (здесь это Qmd8QkqLB6xu1p6n6C3bWvtspidsPbx1gJ81fvXQiLdu6s ). Наберите его в адресной строке вашего веб-браузера после адреса любого шлюза. Получится похожая ссылка: https://ipfs.io/ipfs/Qmd8QkqLB6xu1p6n6C3bWvtspidsPbx1gJ81fvXQiLdu6s . Если вы перейдёте по ней, вы увидите ваш веб-сайт. Ссылка с одной его страницы должна вести на вторую, и наоборот.
Страницы веб-сайта
Что такое IPFS/IPNS ?
Что делать с новой настройкой в Опере?
Настройки — Дополнительно — IPFS/IPNS
Gateway dweb.link
The host name of the gateway used to resolve IPFS/IPNS addresses
Что это и что с этим делать?
Оставить так как есть или изменить что-то?
@sergik2017 Это хранилище файлов по типу блокчейна, первоначально было создано для криптовалюты, если не использовать, то и включать не нужно.
@keks6067
Я не нашёл способа включить или выключить IPFS/IPNS 