Хранение структурированных данных в приватном блокчейне

Задание.

Разработать распределенный реестр в сети блокчейн, который может хранить общедоступные данные определенных объектов.

Например:

{
  "id": 123456789012345,
  "title": "Big black box (not more than 100 characters)",
  "description": "not more than 255 characters",
  "serial_number": "SN4567RT12",
  "type": 4,
  "size": 50,
  "date_of_manufacture": 1531230018,
  "owner_local_id": 99856
}

Информация может быть дополнена в будущем такими данными:

{
  "id": 123456789012345,
  "arrived_to": "not more than 255 characters",
  "date": 1531230018
}

Исходные данные и последующие дополнения должны формировать общий профиль объекта с историей всех действий.

Добавление нового объекта или дополнение существующего объекта должно быть платным.

У меня есть частная сеть с Clique PoA на нескольких VPS. Я записываю данные в поле транзакции inputData в формате JSON. Для поиска я написал индексатор, который собирает данные из транзакции в локальную базу данных mysql.

Это нормально или есть лучшие способы хранения данных и управления ими?

Как я могу установить комиссию за добавление нового объекта, по смарт-контракту или интегрировать в алгоритм транзакции?

Оценка количества объектов в производстве около 10-50м в год

Ответы (1)

Я чувствую, что использование блокчейна для хранения таких огромных объемов данных на самом деле не имеет смысла. Стоимость будет непомерно высокой! Кроме того, блокчейн на самом деле не предназначен для использования в качестве базы данных.

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

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

Просто к вашему сведению, максимальная полезная нагрузка, которую может иметь транзакция, составляет 32 КБ.
Спасибо за Ваш ответ! Я думал об использовании IPFS для хранения, но если использовать один файл для каждого объекта, в конечном итоге у нас будет огромное количество мелких файлов, которые нужно индексировать для поиска по параметрам. Я думаю, что это может быть проблемой в будущем, не так ли? Может есть смысл использовать OrbitDB, который построен на IPFS или что-то похожее? Что вы думаете? Очень важно не только хранить данные, но и иметь возможность использовать эти данные.
Да, OrbitDB выглядит многообещающе. Но я еще не использовал его. :)