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

Блокчейн не может хранить и не должен использоваться для хранения всех данных пользователей. На это есть 2 причины -

1) Для хранения данных в блокчейне требуется цена газа (транзакционная стоимость)

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

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

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

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

Ответы (2)

Недавно я создал инструмент для хранения, индексации и поиска контента в IPFS под названием IPFS-Store , и я использую свой инструмент для хранения и индексации документа JSON (стиль MongoDB), но вы можете использовать его для индексации любого типа контента.

Служба предоставляет REST API, который принимает любой тип контента, поэтому вы можете в основном отправлять и извлекать документ JSON.

Например

curl -X POST \
  http://localhost:8040/ipfs-store/store \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F 'file={"attribute1": "my json file to store on IPFS", "attribute2": "val2", "attribute3": 10}'

Я планирую оказывать поддержку SWARM в будущем.

Используя описанный выше подход, каждая запись пользователя будет храниться в виде отдельного файла json. Я смогу хранить и извлекать пользовательские данные, но не могу запрашивать пользовательские данные. Знаете ли вы, как извлекать и загружать существующие данные (из любой базы данных SQL или NoSQL) для роя и как их запрашивать?
Нужно ли мне использовать язык запросов json (JSONiq) для запроса данных, хранящихся в файлах JSON.
В основном вы можете написать один файл для каждого пользователя в IPFS, проиндексировать некоторые атрибуты в elasticsearch, а затем использовать поиск (и его собственный язык запросов, см. документацию) для поиска пользователей и извлечения пользователей.

Если вы решили пойти по пути MongoDB, вы потеряете часть децентрализации вашего dApp , потому что MongoDB должен быть кем-то размещен .

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

Существуют ли какие-либо учебные пособия/блоги, которые помогут мне хранить пользовательские данные в swarm?
их официальная документация - действительно хорошее начало для этого.
Swarm Proof-of-Concept версии 3 уже не за горами. В настоящее время документация подвергается серьезному пересмотру. Так что, возможно, отложите на неделю или две, если вы только начинаете. По теме: для вдохновения я написал заглушку, чтобы продемонстрировать, как использовать функциональные возможности виртуальной файловой системы sqlite с swarm в качестве бэкэнда (размер блока swarm равен 4096, такой же, как у sqlite по умолчанию) github.com/nolash/swarm-sqlite-vfs Также есть инициация swarmdb; для создания базы данных непосредственно поверх роя. wolk.com работает над этим.