Храним данные без БД и сервера
Слово «без сервера» звучит громко, но суть в другом. Мы продолжаем придерживаться распределённой парадигмы Web3-технологий, где каждый владеет своими данными.
👥 Крч, мы решили прикреплять картинки к постам. Но где их хранить, если базы данных нет, а блокчейн — слишком дорогое решение?
На помощь приходит подход NFT. Он не хранит изображения в блокчейне напрямую, а использует IPFS-ноды — распределённую сеть, где доступ к файлам осуществляется по уникальному хэшу, который храним в блокчейне.
📊 Например, я загрузил аватарку канала в IPFS с помощью NPM пакета helia, через провайдера Pinata. В ответ получил уникальную ссылку на изображение вида:
bafkreiepl2ilkkah77ehi74pzj3v4zojjyf6uhequ7mrv7bfwclzrpevumЭтот CID (Content Identifier) создаётся с помощью алгоритма хэширования SHA-256. Хэш зависит только от содержимого файла, а не от того, кто и где его загрузил.
Интересный момент: если загрузить тот же файл снова, IPFS не создаст дубликат. Система просто вернёт уже существующий хэш.
🌐 Для доступа к файлам используются HTTPS-шлюзы. Вот несколько популярных вариантов:
— https://ipfs.io/ipfs/{HASH}
— https://ipfs.fleek.co/ipfs/{HASH}
— https://gateway.pinata.cloud/ipfs/{HASH}
— https://dweb.link/ipfs/{HASH}
Важный нюанс!
Блокчейн может хранить данные вечно, так как его отключение экономически невыгодно. Но файлы в IPFS доступны только до тех пор, пока активна нода, на которую они были "запинены".
Пиннинг (Pinning) — это процесс закрепления данных на IPFS-ноде. Он гарантирует, что файлы останутся доступными и не будут удалены.
Как запинить файлы?
1. Pinata.cloud предоставляет бесплатно 1 ГБ для хранения файлов на своих нодах.
2. Можно поднять свою ноду IPFS на сервере.
3. Другие пользователи могут запинить ваши файлы на свои серверы или использовать другие провайдеры.
Этакий распределённый бэкап данных. Таким образом, IPFS позволяет хранить изображения надёжно, распределённо и без необходимости содержать централизованную базу данных.
📊 #статистика День 1118 == 2354 час в IT
