Storage

Solidity

Définition

Zone de stockage persistante du contrat, conservée entre les transactions. Très coûteuse en gas (SSTORE = 20k gas pour une nouvelle valeur, 5k pour une mise à jour). Organisée en slots de 32 bytes. Les variables d'état (state variables) sont stockées dans le storage. À minimiser pour optimiser le gas.

Version anglaise

Persistent storage area of contract, preserved between transactions. Very expensive in gas (SSTORE = 20k gas for new value, 5k for update). Organized in 32-byte slots. State variables stored in storage. Should be minimized for gas optimization.

Exemple de Code

contract StorageExample {
  // Variables d'état = stockées dans le storage
  uint256 public value;           // Slot 0
  address public owner;           // Slot 1
  mapping(address => uint256) public balances; // Slot 2+

  function updateValue(uint256 newValue) public {
    value = newValue; // SSTORE : coûteux
  }

  // Optimisation : limiter les écritures
  function optimizedUpdate(uint256[] memory values) public {
    uint256 sum = 0;
    for (uint i = 0; i < values.length; i++) {
      sum += values[i]; // En memory : pas cher
    }
    value = sum; // 1 seul SSTORE au lieu de N
  }
}

Termes Liés

Pratique ce concept sur Solingo

Maîtrise Storage avec des exercices interactifs et un IDE intégré.

Commencer gratuitement