Peera.

Publication

Partagez vos connaissances.

Questions et Réponses avec des Experts

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
Partager
Commentaires
.

Réponses

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
Commentaires
.

Connaissez-vous la réponse ?

Veuillez vous connecter et la partager.

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.

142Publications198Réponses
Sui.X.Peera.

Gagne ta part de 1000 Sui

Gagne des points de réputation et obtiens des récompenses pour avoir aidé la communauté Sui à se développer.

Campagne de RécompensesJuin
Nous utilisons des cookies pour vous assurer la meilleure expérience sur notre site Web.
Plus d'infos