Основано на реальных событиях.

IPFS было новым модным словом в городе несколько лет назад, в 2015 году, когда над ним только начали работать. Если вы через семь лет до сих пор не использовали IPFS ни в одном из своих проектов, значит, вы, мой друг, отстали от времени.

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

1. Приложение с проблемой

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

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

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

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

Эта проблема была серьезной ошибкой, и ее нужно было немедленно устранить.

2. Идея исправить разрыв

Все, что мне нужно было сделать, это подтвердить личность, верно?

Почему бы не использовать Aadhaar ?!

Для неиндийцев Aadhaar - это поддающийся проверке 12-значный идентификационный номер, выдаваемый Центром уникальной идентификации Индии (UIDAI) жителю Индии бесплатно. Это сложный процесс, включающий биометрическое сканирование, и его нелегко подделать.

Тогда я попал в очередную кочку.

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

3. IPFS спасает положение

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

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

По своей сути IPFS - это распределенная система для хранения и доступа к файлам, веб-сайтам, приложениям и данным.

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

Идея состоит в том, что если вы хотите получить доступ к определенной странице из своего браузера, IPFS спросит всю сеть:« Есть ли у кого-нибудь данные, соответствующие этому хешу? Узел в IPFS, содержащий соответствующий хэш, вернет данные, что позволит вам получить к ним доступ из любого места (и, возможно, даже в автономном режиме) ».

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

Я планировал попросить пользователя загрузить свой номер Aadhar, проверить его истинность (ссылка на GitHub на код проверки) и загрузить его в сеть IPFS через Infura API. Возвращенный хеш будет храниться в базе данных.

Хорошо, время для реализации.

4. Реализация

(Приведенные здесь фрагменты кода предоставляют только детали, относящиеся к IPFS. Это НЕ части полного кода проекта.)

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

Затем мне пришлось создать форму для приема информации Aadhaar.

Эта форма отправляет данные на адрес "aadhaar". Итак, я создал его в urls.py.

NB. В этом проекте имя моего приложения было «members», отсюда и импорт.

Теперь мне нужно было создать представление с именем «handle_aadhaar» в файле views.py в моем приложении.

Код в значительной степени не требует пояснений.

Если метод запроса - POST, он проверяет отправленные учетные данные Aadhaar. Если это правда, он загружает их, и сгенерированный хэш отправляется в мою модель «Aadhaar». Если значение false, выполняется перенаправление на ту же страницу с предупреждением.

Заключение

Я надеюсь, что этот пост помог вам понять IPFS и реализовать его как серверную часть хранилища в вашем проекте Django. Существуют и другие пакеты для использования IPFS, но мой вариант использования не требовал таких подробных библиотек, и проблема была решена несколькими строками кода.

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

Ресурсы -



Начало работы с сервисом IPFS от Infura | Блог Инфура | Учебники, примеры использования, новости, анонсы функций

Django-ipfs-storage · PyPI

Больше контента на plainenglish.io