我想推动大量的项目进行映射。原型看起来像这样
mapping (uint => string) ipfs_hashes;
constructor() ERC721("GameItem", "ITM") public {
ipfs_hashes[0] = "455434544345777";
ipfs_hashes[1] = "43454d354353445";
ipfs_hashes[2] = "687678768768786";
......
}但这只是一个例子。我想把其中的2000条,所以首先我不确定合同是否可以那么长,它会不会在某个时候(以及在什么时候),以及是否有一个限制,如何实现这一点。我可以做一个setter函数,但我需要2000事务,这将是非常昂贵的,所以这是我想要避免的。他还在想,也许使用一些侧索引来设置像xDai这样的状态是可行的。寻找建议和解决方案。
发布于 2021-01-28 23:51:27
以太储存仍然很大。它由插槽和2^256-1可用插槽组成.这意味着2000件物品甚至还没有接近储存结束.
2^256-1意味着它可以存储(2^256-1)*32字节,因为1槽= 32字节。
使用setter不会改变任何事情,因为您仍然需要存储与现在存储的项目一样多的项目。
https://ethereum.stackexchange.com/questions/92877
复制相似问题