我希望你能帮助我改进或验证我的存储概念。我很高兴每个建议。由于这是我的第一个DApp,我可能不会考虑我的问题的所有可能选项。
了解背景: 我计划实现一个DApp(基于以太坊),它比较价格并搜索特定区域内产品的最便宜价格。产品本身是同质的,只有价格才重要。 为了简单起见:它是一个复杂的产品,供应商需要几天的时间来确认订单并且需要几个月才能交付产品。该产品的价格波动很大,因此供应商可能会有欺骗行为,这意味着他们在开始时提供低价,并在几天后确认订单时要求更高的价格。
我想使用区块链的原因是客户的透明度和可追溯性。因此,客户应该能够轻松验证,DApp建议的价格实际上是他所在地区最便宜的价格。此外,客户需要证明供应商确实在特定时间提供了特定价格,并且在订单确认后期不能要求更高的价格。
因此,与区块链的互动需要提供两件事: 一个。有证据表明结果确实是他所在地区最便宜的价格 湾供应商本身在此时提供建议价格。
到目前为止,我的想法和解决方案如下:
最简单,最透明的方式是一个巨大的聪明 与内部存储的所有数据(价格,区域,供应商)签订合同。 供应商将更新智能合约中的价格 交易。
一个。客户可以简单地检查智能合约 用于验证DApp最低价格建议的属性。
湾客户可以通过证明价格的来源 合同交易历史。
由于区块链上的数据存储非常昂贵,因此与此合同的交互并非真正的选择。价格的更新是非常昂贵的,因为被铲除的数据量(我已经尝试过)。相反,每个供应商的区块链存储应该更小,但仍然具有相同的透明度。我想过使用IPFS作为数据存储并只存储Hash,但IPFS本身并没有真正证明任何东西,因为它是可变的。所以重要的数据需要在区块链上,至少在我理解的情况下,也许你有更好的想法?
所以这是我最后一个想法,请求你的帮助。我试图在用例类模型混合中绘制它,我希望这种方式变得更加清晰。 不幸的是你必须下载它,因为我没有足够的声誉
每个供应商都有自己的合同(供应商)。供应商通过交易更新合同中的价格。每个合同供应商都引用相同的IPFS数据存储。 Datastorage只包含所有供应商智能合约(地址)的列表。
智能合约HashStore只包含此列表的IPFS哈希值。
为了获得最低价格,我将在javascript(Class Price Search)中简单地阅读智能合约HashStore中的Hash。然后我将访问IPFS上的数据存储并获取所有地址。我不使用IPFS上存储的价格。相反,我遍历地址并每次调用每个智能合约供应商的GetData方法。收集完所有价格后,我只选择最便宜的价格。
一个。客户可以检查IPFS上的数据存储以获取所有价格的概述。由于我直接从智能合约中读取价格,因此供应商无法操纵IPFS表。
湾客户可以通过单独的智能合约轻松检查每个供应商及其交易历史记录。因此他可以轻松证明价格变化。
我认为这个解决方案可能有用,但我仍然觉得我错过了一个部分。也许Swarm提供了一些我不知道的选项?或者Solidity有一些很酷的功能我不知道能解决这个问题吗?
感谢您的帮助!!!