Как использовать IPFS для хранения состояния приложения (в качестве бэкэнда для dApp)?
Я только начинаю с IPFS и Ethereum. Мы создаем приложение dApp (mobile) и планируем заменить стандартный уровень API и базы данных на IPFS и Ethereum. Итак, после долгих чтений у меня есть следующие вопросы,
Заставить dApp напрямую общаться с IPFS (через API-интерфейсы IPFS) для хранения данных (данные приложения или файлы) и извлечения данных. т.е. полная замена уровня API на IPFS кажется возможной, но есть ли проблема с этим подходом? мы можем жить без API вообще?
Если точка 1 возможна, доступ к данным файла прост, но как получить доступ к приложению. данные в IPFS (например: какова рекомендуемая структура для хранения и извлечения, как хранить различные пользовательские данные и т. д.)?
Я понимаю, что данные, добавленные в IPFS, доступны для общественности, как мы можем защитить эти данные и сделать их доступными только для конкретного клиента? Как я понимаю, что в IPFS нет механизма открытого / закрытого ключа?
Когда мы храним видео в IPFS, для потоковой передачи видео на клиенте нам нужно использовать CDN, и я не уверен, как это сделать в децентрализованном решении.
Есть ли какая-либо опция, доступная в IPFS, для автоматического выполнения задачи (например, запуска сценария), когда некоторые события запускаются или по команде клиентских приложений?
Есть ли известные проблемы с производительностью IPFS при поиске и получении данных с узла?
Любое предложение об инструментах и структурах, доступных для достижения вышеуказанного подхода?
Заранее спасибо.
1 ответ
Заставить dApp напрямую общаться с IPFS (через API-интерфейсы IPFS) для хранения данных (данные приложения или файлы) и извлечения данных. т.е. полная замена уровня API на IPFS кажется возможной, но есть ли проблема с этим подходом? мы можем жить без API вообще?
Зависит от того, что вы хотите сделать. Но с хранилищем с адресным содержимым, IPNS и ipfs pubsub у вас есть все компоненты для написания некоторых очень сложных приложений, которые не используют какой-либо централизованный сервис.
Тем более пабсаб все еще экспериментален. Но последняя версия IPFS, 0.4.18, содержит новую реализацию pubsub, которая должна быть гораздо более масштабируемой.
Если точка 1 возможна, доступ к данным файла прост, но как получить доступ к приложению. данные в IPFS (например: какова рекомендуемая структура для хранения и извлечения, как хранить различные пользовательские данные и т. д.)?
Вы просто публикуете свое приложение под ключом IPNS, который вы контролируете. Предполагая, что мы говорим о приложениях javascript / typcript, вы можете упаковать их, как обычно, с помощью таких инструментов, как webpack, и поместить последний артефакт в IPFS и опубликовать с использованием IPNS.
Я понимаю, что данные, добавленные в IPFS, доступны для общественности, как мы можем защитить эти данные и сделать их доступными только для конкретного клиента? Как я понимаю, что в IPFS нет механизма открытого / закрытого ключа?
Каждый узел IPFS имеет пару открытый / закрытый ключ. Вы можете использовать это для шифрования сообщений для узла или для подписи сообщений от узла. Это используется в IPNS. Вы можете иметь более одной пары ключей на узел.
Когда мы храним видео в IPFS, для потоковой передачи видео на клиенте нам нужно использовать CDN, и я не уверен, как это сделать в децентрализованном решении.
IPFS в основном это CDN. Таким образом, вам не придется использовать дополнительный CDN. Вы также можете использовать шлюз Cloudflare IPFS.
Работа над тем, чтобы сделать IPFS очень эффективной для распространения очень больших файлов, таких как видео, в настоящее время продолжается. Есть приложения, уже использующие это, такие как D.Tube
Есть ли какая-либо опция, доступная в IPFS, для автоматического выполнения задачи (например, запуска сценария), когда некоторые события запускаются или по команде клиентских приложений?
Нет. IPFS / libp2p - это, по сути, сетевой стек для распределенной сети. Если вам нужна такая функциональность, как автоматическое выполнение сценариев, запускаемых событиями, вам придется либо написать ее самостоятельно в пабе IPFS, либо использовать промежуточное программное обеспечение более высокого уровня, например Orbit DB.
Есть ли известные проблемы с производительностью IPFS при поиске и получении данных с узла?
Да. IPFS все еще довольно молода. Например, существует проблема с распространением больших файлов от многих пиров, над которой сейчас ведется работа. Многие компании используют IPFS в производстве, но вы будете жить на переднем крае и будете время от времени сталкиваться с проблемами.
Любое предложение об инструментах и структурах, доступных для достижения вышеуказанного подхода?
Сложно ответить без знания общей цели и уровня квалификации разработчиков. Если вы хотите максимальной производительности, вам придется использовать IPFS или libp2p напрямую. Для начала, возможно, имеет смысл использовать что-то вроде OrbitDB.
Есть также много примеров того, как начать работу с JS-IPFS.