我有一份合同,里面储存了一些关于一个人的基本数据。它大约有4-5个变量。这些合同中的每一个都与名称相关联。
假设我想搜索属于Varun的Person
智能契约,那么我可以调用每个契约,并询问它是否存储了该名称。现在,这是非常高效的,所以我希望有一个CentralRegistry
契约,在这个契约中,我可以保持名称与它所属的契约地址之间的基本映射。
每次创建新合同时,与其对应的名称和地址都会附加到CentralRegistry
合同中的映射中。如果我有10,000,000份Person
合同,是否存在存储有1,000万个注册表的映射的问题。注意:映射的每个附加部分都将在一个单独的事务中完成,并且可能要在几个月内完成。
发布于 2017-01-07 03:53:28
将您的CentralRegistry
以mapping
的形式查找数据。mapping
实际上可以在不减慢的情况下存储无限数量的数据。.块链大小的增长不应该仅仅是1000万个条目的问题,当前的节点软件可以轻松地处理它。
另一种方法是使用像Event PersonAdded(string indexed name)
这样的事件来查找数据。索引的事件参数在Ethereum -RPC API中具有本机查找,但是事件查找API并不暴露于智能契约本身。更多关于事件的信息。
https://ethereum.stackexchange.com/questions/11179
复制相似问题