Peera.

Post

Share your knowledge.

Expert Q&A

Are there any sid3-effects of using mappings in structs?

I have a question for any solidity expert out there. Is there any downside/security risk to storing mappings inside structs? I'm aware that deleting the struct won't delete the mapping as it's stored as a keccak256 of the mapping name and key rather than inside the struct itself.

I also aware that with ethers the mapping won't be returned as the evm doesnt store the mapping in the struct so it doesnt know where to find it except a separate getter function is created for it

  • blockchain
  • solidity
  • smart contract
  • learning
2
1
Share
Comments
.

Answers

1
Sergey Ilin.
Oct 16 2022, 18:41

In addition to your points:

1 - A struct containing mapping can't be stored in a memory variable and will cause Type struct XXX is only valid in storage because it contains a (nested) mapping.;

2 - All keys in a mapping are always initialized with value 0x0. For that reason, 0x0 in the logic should be reserved for uninitialized values. Otherwise, there is no way to differentiate a value that was set to 0x0 and uninitialized value;

3 - There is now way to list all set key values in a mapping nor their count. If there is a need for that, then they need to be stored separately. OpenZepplin provides few class for extending the mapping, for example EnumerableMap.

0
Comments
.

Do you know the answer?

Please log in and share it.

Web3 (also known as Web 3.0) is an idea for a new iteration of the World Wide Web which incorporates concepts such as decentralization, blockchain technologies, and token-based economics.

142Posts198Answers
Sui.X.Peera.

Earn Your Share of 1000 Sui

Gain Reputation Points & Get Rewards for Helping the Sui Community Grow.

Reward CampaignMay
We use cookies to ensure you get the best experience on our website.
More info