【发布时间】:2018-01-24 16:11:37
【问题描述】:
作为一个项目,我正在尝试制作一个允许使用以太坊区块链存储食品供应链的应用程序。在这样做时,我会将资产从农场存储到消费者。最终消费者最终将能够从区块链中检索有关其特定产品的信息,例如它来自哪个农场。我无法弄清楚是否每个资产都需要单独的智能合约,或者是否可以使用一个智能合约来存储有关几种不同资产的信息。
非常感谢任何帮助,谢谢。
【问题讨论】:
标签: blockchain ethereum smartcontracts
作为一个项目,我正在尝试制作一个允许使用以太坊区块链存储食品供应链的应用程序。在这样做时,我会将资产从农场存储到消费者。最终消费者最终将能够从区块链中检索有关其特定产品的信息,例如它来自哪个农场。我无法弄清楚是否每个资产都需要单独的智能合约,或者是否可以使用一个智能合约来存储有关几种不同资产的信息。
非常感谢任何帮助,谢谢。
【问题讨论】:
标签: blockchain ethereum smartcontracts
无论哪种方式都可以。我个人会使用多个智能合约的方式。如果您使用的是单个智能合约,您可以拥有一个数据结构来将项目的 ID 映射到其在供应链中的当前位置。对于 this ,您可以有一个从整数到结构的简单映射。如果您想跟踪特定项目的所有先前位置,这种方法会变得复杂。
最好的方法是为每个项目维护单独的智能合约。在每个合约中,您可以有一个从时间戳/字符串到结构的映射来存储项目的详细信息。
【讨论】:
这实际上取决于您如何编写智能合约。如果您希望一个合同能够处理多个项目,您可以为每个项目分配某种 ID,也许是一个纯整数,然后您可以创建一个数据结构,对于每个 ID,该数据结构都附有有关供应链的信息.
然后您可以添加功能以添加更多跟踪的 ID,以便稍后扩展项目数量
【讨论】:
想想你将要编写的公开 Solidity 函数,然后问自己:我会为不同类型的资产使用不同的函数吗?如果你的答案是“是” - 你会可能需要单独的智能合约。否则,请坚持使用一个,并确保它在内部处理不同的资产类型。
但请记住,一旦部署和挖掘智能合约,就不可能更改。您只能部署一个新的,然后将您的客户端迁移到新的 Eth 地址。
【讨论】: