Надеюсь, вы поможете мне улучшить или проверить мою концепцию хранения.Я рад за каждое предложение.Так как это мой первый DApp, я не мог бы рассмотреть все возможные варианты для моей проблемы.
Чтобы понять предысторию: я планирую реализовать DApp (основанный на Ethereum), который сравнивает цены и ищет самую дешевую цену для продукта в определенной области.Сам продукт однороден, важна только цена.Для простоты: это сложный продукт, поставщику требуется несколько дней для подтверждения заказа и несколько месяцев для доставки продукта.Цены на продукт нестабильны, поэтому у поставщиков может быть стимул к мошенничеству, что означает, что они предлагают низкую цену в начале и требуют более высокой цены, когда подтверждают заказ через пару дней.
Причиной, по которой я хочу использовать блокчейн, является прозрачность и прослеживаемость для клиента.Таким образом, клиент должен иметь возможность легко проверить, что цена, предлагаемая DApp, действительно является самой дешевой в своем регионе.Кроме того, Клиент должен доказать, что поставщик действительно предложил определенную цену в определенное время и не может потребовать более высокую цену позже в подтверждении заказа.
Таким образом, взаимодействие с блокчейном должно обеспечивать две вещи: a.Доказательство того, что результат действительно самая низкая цена в своем районе б.Что поставщик сам предложил предложенную цену в это время.
Вот мои мысли и решения на данный момент:
Самый простой и прозрачный способ - это один огромный умный контракт со всеми данными (цены, площади, поставщики) хранятся внутри.Поставщики будут обновлять цены в смарт-контракте с транзакциями.
a.Клиент может просто проверить атрибуты смарт-контракта, чтобы подтвердить предложение самой низкой цены DApp.
b.Клиент может подтвердить происхождение цены через историю транзакций контракта.
Поскольку хранение данных на блокчейне чрезвычайно дорого, взаимодействие с этим контрактом на самом деле не вариант.Обновление цен очень дорогое из-за большого количества данных, которые перелопачиваются (я уже пробовал).Вместо этого хранилище в блокчейне для каждого поставщика должно быть меньше, но при этом иметь такую же прозрачность.Я думал об использовании IPFS в качестве хранилища данных и просто сохранял хэш, но сам IPFS ничего не доказывает, потому что он изменчив.Итак, важные данные должны быть в блокчейне, по крайней мере, для моего понимания, может быть, у вас есть идея получше?
Так что это моя последняя идея, о которой я прошу вашей помощи.Я попытался нарисовать это в модели моделей классов вариантов использования, надеюсь, это станет более понятным.К сожалению, вам нужно скачать его, потому что у меня недостаточно репутации
https://imgur.com/oE4cQtv
У каждого поставщика есть свой контракт (Поставщик).Поставщики обновляют цены в рамках своего контракта посредством транзакций.Каждый контрактный поставщик ссылается на одно и то же хранилище данных IPFS.Datastorage просто содержит список всех смарт-контрактов с поставщиками (адреса).
Хэш-магазин Smart Contract просто содержит хэш IPFS для этого списка.
Чтобы получить самую низкую цену, я буду в javascript (Поиск цен класса) просто прочитать Хэш из HashStore Smart Contract.Затем я получу доступ к хранилищу данных в IPFS и получу все адреса.Я не использую цены, хранящиеся в IPFS.Вместо этого я перебираю адреса и каждый раз вызываю метод GetData каждого поставщика смарт-контракта.После того, как я собрал все цены, я просто выбираю самую дешевую.
a.Клиент может проверить хранилище данных в IPFS для обзора всех цен.Поскольку я считал цену непосредственно из смарт-контракта, поставщику нечего выиграть для манипулирования таблицей IPFS.
Б.Заказчик может легко проверить каждого поставщика и его историю транзакций с помощью индивидуального смарт-контракта.Таким образом, он может легко доказать изменения цен.
Я думаю, что это решение могло бы работать, но я все еще чувствую, что пропускаю часть.Может быть, Swarm предлагает несколько вариантов, которые я не знаю?Или в Солидности есть классные функции, которые я не знаю, чтобы справиться с этой проблемой?
Спасибо за вашу помощь !!!