May 1, 2020

IPFS - Распределённая файловая система с контентной адресацией

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

Зачем?

Да, намного проще зайти в Google Drive / Dropbox / Amazon Web Services и другие облачные хранилища, чтобы загрузить свой файлы туда, но, делая это вы должны быть готовы к следующему:
1. Ваши файлы могут быть потерянны из-за отключение сервера;
2. Доступ к сервису может быть заблокирован вашей страной;
3. Компания, предоставляющая вам дисковое пространство, может использовать ваши данные в личных целях.

Для некоторых людей, вышеперечисленные пункты не вызывают беспокойств или тревог, но любая система должна развиваться и двигаться дальше, на сегодняшний день, крупные корпорации зарабатывают на личных данных пользователях намного больше, чем услуги, которые юзеры получают взамен.

В России, понятие "интеллектуальной собственности" и "защиты личных данных" очень слабо развиты, по этой причине, не всем интересна тема Web 3.0 и возможности монетизации / защиты личных данных, но в таких странах, как Германия, пришло осознание того, что Google / Facebook / Twitter уже начинают терять тот фундамент, на котором стоят и что будущее интернета стоит за возможностью управлять своими данными и возможностью создавать ценность независимо от свой национальности / места рождения / возраста.

"Не корми диктатора" - обычная листовка в Берлине, которую можно увидеть во многих местах

Устновка под Windows

Мы будем использовать уже готовый бинарник. Но если вам хочется, самостоятельно его собрать, то есть документация — https://gist.github.com/drwasho/ca224cbd4a21440f7cc1245e594398e4 Вам, будет необходимо установить Go и Git.

Ну а мы просто возьмем готовый бинариник с https://dist.ipfs.io/#go-ipfs

Распакуйте его, куда вам будет удобно. Я в корень диска.

Отлино. Пепеходим в каталог, куда вы распаковали и инициализируем нашу ноду.

ipfs init

Следуем действия, которые сообщили нам

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Отлично, все работает. IPFS можно управлять их командной строки, но все же удобнее использовать веб интерфей. Запустим демон и дадим разрешение фаерволу.

ipfs deamon

Отлично. Как видно, веб-интерфейс расположен на http://127.0.0.1:5001/webui. Переходим.

Установка закончена!

Установка под Linux

  1. Скачиваем с того же сайта архив под свою платформу, распаковываем и запускаем
$ tar xvfz go-ipfs.tar.gz
$ cd go-ipfs
$ ./install.sh

Для пользователей Arch Linux, можно скачать с AUR в одну комнду

yay -S go-ipfs

Далее все так же, как и с Windows.

ipfs init

Запуск демона для веб-интефейса

ipfs deamon

Чтобы IPFS запускалась самостоятельно, можно сформировать службу

[Unit]
Description=IPFS daemon
After=network.target

[Service]
ExecStart=/usr/local/bin/ipfs daemon
ExecStop=/usr/bin/pkill ipfs
Restart=on-failure
User=www-data

[Install]
WantedBy=default.target

Обновим информацию о сервисах:

systemctl daemon-reload

Запустим новый сервис:

service ipfs start

Проверим его состояние:

service ipfs status

Если всё ОК, то включим автозагрузку:

systemctl enable ipfs.service

Веб интерфейс так же доступен по адресу http://127.0.0.1:5001, но для удобства можно установить клиент. Он самостоятельно запускает демона.

Я использую Arch Linux, но думаю, установка на других дистрибутивах тривиальна. В моем случае это:

yay -S ipfs-desktop

Выглядит так же как и веб-интерфейс, но есть удобства в виде иконке в трее, удобное контектное меню.

Как пользоваться

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

Опубликовать один конкретный файл, без дублирования во внутреннюю библиотеку IPFS:
ipfs add --nocopy ./folder/music.mp3

Опубликовать каталог со всем содержимым (рекурсивно), с дублированием (копированием) во внутреннюю библиотеку IPFS:
ipfs add --recursive ./folder/

Узнать мультихэш файла, без публикации его в сеть:
ipfs add --only-hash -q ./folder/pic.jpg

Ссылка для получения объекта (файла, директории) через специальный, распределённый, открытый шлюз:
https://gateway.ipfs.io/ipfs/QmfHTUfG6hexg2D3Dgatx1CxyKVyrKQqeJ2ge7DVuvJHqp

Как скачивать?

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

Расшарить или скачать очень просто!

Потребление рессурсов

Не особо прожорливый. Ну тут уж каждый судит сам, на сколько для него это приемлемо.

Заключение

Вообще лично меня, побудило начать использовать IPFS, после того, как с файлобменика MEGA удалили книгу, по просьбе правообладателя. Этот факт разочавал меня, но благо на все всегда найдетуся альтернативы. Используйте децентралицию товарищи! За ней будущие!