我正在以太坊区块链上试验智能合约。假设我有一个合同,类似于Solidity 文档中的SimpleStorage.sol ,它具有任何人都可以访问的存储状态。如链接所述,
任何人都可以使用不同的值再次调用 set 并覆盖您的号码
这会导致问题,并且将该功能的可访问性限制为特定帐户的解决方案不适合我的用例。在我的合同中,我希望每个帐户设置的数据以后可以由不同的预定帐户访问(考虑这样一种关系,其中人 A->B 所以 B 只使用来自 A 的数据,而 x->y 使用数据完全来自 x。在 y 可以使用 A 的数据的情况下不存在重叠)。据我了解,该问题有两种解决方案:
- 将地址相互映射并跟踪此单个智能合约中的所有数据。
- 拥有一个初始账户可以访问的智能合约“模板”,并为每个新账户生成一个单独的智能合约,以简单地保存与模板交互的数据。
当账户之间的关系变得更加复杂(映射单独的结构?)或大量人试图将他们的信息存储在合约中时,就会出现1的问题。
2的问题是冗余。我真的需要为每个试图访问主模板的人制作一份单独的“合同”吗?
如果我的问题含糊不清,我可以解释更多,但我主要是在寻找一个概念性的答案。我发现的大多数智能合约示例要么非常简单,要么过于复杂,并且没有提供具体的用例。