Оценка концепции хранения DApp (Smart Contract) с IPFS - PullRequest
0 голосов
/ 03 июня 2018

Надеюсь, вы поможете мне улучшить или проверить мою концепцию хранения.Я рад за каждое предложение.Так как это мой первый 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 предлагает несколько вариантов, которые я не знаю?Или в Солидности есть классные функции, которые я не знаю, чтобы справиться с этой проблемой?

Спасибо за вашу помощь !!!

...