Niveau 19 - Alien codex Flashcards
Etant donné le code ci dessous :
uint256 a; uint256 b; uint256[] array;
Dans quel slot le premier élément de la variable array
sera stocké ?
Le premier élément sera stocké au slot keccak256(2)
Les slots 0 et 1 sont utilisés par les variables a
et b
. Donc au slot 2, il y aura la longueur de la variable array
car c’est un tableau dynamique.
Solidity stocke la valeur d’un tableau dynamique en suivant cette règle : slot = keccak256(k . p)
ou p
est la position de la variable dynamique et k
la clé de la variable. Comme array
est un tableau, il n’y a pas de clé, mais on connaît p
, qui est 2 (car array est dans le slot 2)
Au final le premier élément est au slot keccack256(2)
.
Etant donné le code ci dessous :
uint256[] array;
Dans quel slot le deuxième élément de la variable array
sera stocké ?
Le deuxième élément sera stocké au slot keccak256(0) + 1