-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
Comment lire les variables de stockage d’un contrat intelligent ?
Ethereum smart contracts store state in 32-byte slots; layout depends on variable order, types, inheritance, and compiler version—critical for accurate off-chain reads via `eth_getStorageAt`.
Jan 21, 2026 at 11:00 am
Comprendre la disposition du stockage dans les contrats intelligents Ethereum
1. Chaque contrat intelligent déployé sur Ethereum conserve son état dans des emplacements de stockage persistants, chacun d'une largeur de 32 octets et indexés séquentiellement à partir de l'emplacement 0.
2. Le compilateur attribue des emplacements de stockage en fonction de l'ordre de déclaration des variables d'état, en respectant la taille du type et les règles de conditionnement pour plus d'efficacité.
3. Les structures, les tableaux et les mappages introduisent de la complexité : les tableaux dynamiques stockent la longueur dans leur emplacement et les données selon un décalage calculé par keccak256 ; les mappages utilisent keccak256(key, slot) pour dériver les positions de stockage.
4. Les versions Solidity antérieures à la 0.8.0 permettaient un regroupement plus serré au-delà des limites variables, tandis que les versions plus récentes imposent un alignement plus strict, affectant la précision du calcul manuel des emplacements.
5. L'héritage des contrats influence la disposition : les variables des contrats de base occupent des emplacements inférieurs, suivies par celles des contrats dérivés dans un ordre linéaire.
Lecture directe en chaîne via eth_getStorageAt
1. La méthode JSON-RPC eth_getStorageAt récupère les valeurs brutes de 32 octets d'un emplacement de stockage spécifique à l'aide de l'adresse du contrat, de l'index de l'emplacement et de l'identifiant de bloc.
2. Les indices d'emplacement doivent être calculés manuellement ou extraits d'artefacts de compilation tels que la disposition de stockage générée par Solidity JSON trouvée dans les métadonnées du contrat ou les fichiers d'informations de construction.
3. Des outils tels que hardhat-storage-layout ou slither-print-storage automatisent le mappage des emplacements en analysant l'AST et le bytecode, réduisant ainsi les erreurs humaines.
4. Lors d'une requête avec des points de terminaison Infura ou Alchemy, des limites de débit et des exigences en matière de nœuds d'archivage s'appliquent, en particulier pour les valeurs d'emplacement historiques avant les mises à niveau du contrat ou l'autodestruction.
5. Les réponses codées en hexadécimal nécessitent un décodage : les valeurs uint256 apparaissent remplies à gauche, les adresses sont alignées à droite dans les 20 derniers octets et les booléens correspondent à 0x01 ou 0x00.
Décoder manuellement les types complexes
1. Pour les tableaux statiques, chaque élément occupe un emplacement s'il convient ; sinon, les éléments se répandent dans des emplacements consécutifs en suivant les règles d'alignement standard.
2. Les données du tableau dynamique commencent à keccak256(slot), où les 32 premiers octets contiennent la longueur du tableau et les emplacements suivants stockent les éléments de manière contiguë en commençant à keccak256(slot)+1.
3. Les mappages nécessitent de recalculer keccak256 pour chaque clé : pour le mappage (adresse => uint256) des soldes publics , l'emplacement pour l'adresse 0xAbc… est keccak256 (abi.encodePacked (0xAbc..., slot_index)).
4. Les structures imbriquées aggravent la complexité : par exemple, un mappage vers une structure nécessite d'abord de calculer l'emplacement de mappage, puis d'appliquer des décalages de champ de structure par rapport à cette base.
5. Les décalages à l'intérieur des structures suivent les mêmes règles que les variables de niveau supérieur : uint128 + uint128 sont regroupés dans un seul emplacement, mais l'ajout d'un uint256 force un nouvel emplacement en raison de contraintes d'alignement.
Utiliser la fonderie et la fonte pour une inspection pratique
1. La commande cast storage accepte une adresse de contrat et un numéro d'emplacement, récupérant automatiquement et éventuellement décodant les valeurs si l'ABI ou la mise en page est fournie.
2. Avec --watch , cast surveille les changements de stockage à travers les blocs, ce qui est utile pour observer les effets secondaires de la réentrance ou du prêt flash en temps réel.
3. La forge de Foundry inspecte la disposition complète du stockage, y compris les noms de variables, les types, les numéros d'emplacement et les décalages d'octets - aucune analyse ABI manuelle n'est nécessaire.
4. Lorsque le code source n'est pas disponible, la rétro-ingénierie devient nécessaire : l'analyse des opcodes SSTORE dans les traces de transaction révèle quels emplacements ont été écrits et quand.
5. Les scripts personnalisés exploitant web3.py ou ethers.js peuvent interroger par lots plusieurs emplacements, formater les sorties sous forme de tableaux et effectuer des références croisées avec des modèles de proxy connus tels que Transparent ou UUPS.
Foire aux questions
Q : Puis-je lire le stockage d'un contrat sans connaître son code source ? R : Oui, en utilisant l'analyse du bytecode, le traçage des opcodes ou des heuristiques telles que les modèles d'emplacement courants pour les proxys OpenZeppelin ou les balances ERC-20. Cependant, l'interprétation reste ambiguë sans contexte.
Q : Pourquoi eth_getStorageAt renvoie-t-il zéro pour une valeur non nulle dont je sais qu'elle existe ? R : Les causes possibles incluent l'interrogation du mauvais emplacement, l'utilisation d'un numéro de bloc obsolète, le ciblage d'un proxy sans transfert vers l'implémentation ou la lecture de la mémoire non initialisée (qui est par défaut à zéro).
Q : Les lectures de stockage coûtent-elles de l’argent lorsqu’elles sont effectuées hors chaîne ? R : Non : eth_getStorageAt est un appel RPC gratuit. Les coûts de gaz s'appliquent uniquement aux lectures en chaîne exécutées dans le cadre de transactions ou de fonctions d'affichage.
Q : Est-il sûr de s'appuyer sur les numéros d'emplacement de stockage dans les versions du compilateur ? R : Non garanti : les mises à jour de solidité peuvent modifier les algorithmes de mise en page. Vérifiez toujours la version exacte du compilateur et les paramètres d’optimisation utilisés lors du déploiement.
Clause de non-responsabilité:info@kdj.com
Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!
Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.
-
RAIN Échangez maintenant$0.007852
113.00%
-
PIPPIN Échangez maintenant$0.06097
51.96%
-
PARTI Échangez maintenant$0.1396
42.04%
-
WAVES Échangez maintenant$0.9141
41.69%
-
ARC Échangez maintenant$0.04302
35.73%
-
HONEY Échangez maintenant$0.01029
21.80%
- Bitcoin, eCash Fork et Airdrop Dynamics : une plongée approfondie dans les dernières controverses de la cryptographie
- 2026-05-03 12:55:01
- Consensus 2026 Miami : Web3, Blockchain, Crypto-monnaie, NFT, Metaverse, conférence, 5 mai — Là où Wall Street rencontre la frontière numérique
- 2026-05-02 12:45:01
- La Fed maintient ses taux stables, déclenchant une baisse du prix du Bitcoin dans un contexte de tensions géopolitiques
- 2026-05-01 06:45:01
- Les mineurs de Bitcoin électrifient le réseau : l'acquisition d'une usine à gaz dans l'Ohio ouvre une nouvelle ère pour l'or numérique
- 2026-05-01 00:45:01
- Le jeton MEGA de MegaETH arrive dans la Big Apple : définition de nouveaux critères de performance pour la blockchain en temps réel
- 2026-05-01 00:55:01
- La pente glissante de Solana : les prévisions de prix indiquent une perte de résistance et de nouvelles baisses potentielles
- 2026-05-01 06:45:01
Connaissances connexes
Pourquoi les traders à terme Solana utilisent-ils un effet de levier élevé ? Le risque du contrat SOL expliqué
Aug 04,2026 at 07:19pm
Pourquoi les traders à terme de Solana privilégient un effet de levier élevé 1. Le jeton natif SOL de Solana présente une volatilité intrajournalière ...
Pourquoi le taux de financement des contrats à terme sur Bitcoincoin est-il négatif ? Bitcoin Analyse du marché des contrats
Aug 07,2026 at 05:00am
DogeMécanismes du taux de financement des contrats à terme sur pièces 1. Le taux de financement des contrats à terme perpétuels Dogecoin reflète le co...
Comment lire les graphiques linéaires K des contrats à terme Bitcoin ? Guide d'analyse technique du contrat BTC
Aug 06,2026 at 09:27pm
Modèles de volatilité du marché 1. Les fluctuations de prix Bitcoin dépassent souvent 5 % au cours d'une seule séance de négociation pendant les p...
Comment fonctionne l'appel de marge Solana Futures ? Niveaux d'avertissement du contrat SOL expliqués
Aug 05,2026 at 02:20am
Modèles de volatilité du marché 1. Les fluctuations de prix Bitcoin dépassent souvent 10 % sur des fenêtres de 24 heures lors d'annonces macroécon...
Quel est le coût de financement du contrat à terme Ethereum ? Répartition des frais de négociation ETH
Aug 05,2026 at 01:39am
Modèles de volatilité du marché 1. Les mouvements de prix de Bitcoin reflètent souvent des signaux macroéconomiques tels que les décisions de taux d...
Comment calculer le taux de rendement des contrats à terme Bitcoin ? Analyse des investissements sous contrat BTC
Aug 05,2026 at 11:00pm
Comprendre Bitcoin les mécanismes des contrats à terme 1. Bitcoin les contrats à terme sont des accords standardisés pour acheter ou vendre du BTC à u...
Pourquoi les traders à terme Solana utilisent-ils un effet de levier élevé ? Le risque du contrat SOL expliqué
Aug 04,2026 at 07:19pm
Pourquoi les traders à terme de Solana privilégient un effet de levier élevé 1. Le jeton natif SOL de Solana présente une volatilité intrajournalière ...
Pourquoi le taux de financement des contrats à terme sur Bitcoincoin est-il négatif ? Bitcoin Analyse du marché des contrats
Aug 07,2026 at 05:00am
DogeMécanismes du taux de financement des contrats à terme sur pièces 1. Le taux de financement des contrats à terme perpétuels Dogecoin reflète le co...
Comment lire les graphiques linéaires K des contrats à terme Bitcoin ? Guide d'analyse technique du contrat BTC
Aug 06,2026 at 09:27pm
Modèles de volatilité du marché 1. Les fluctuations de prix Bitcoin dépassent souvent 5 % au cours d'une seule séance de négociation pendant les p...
Comment fonctionne l'appel de marge Solana Futures ? Niveaux d'avertissement du contrat SOL expliqués
Aug 05,2026 at 02:20am
Modèles de volatilité du marché 1. Les fluctuations de prix Bitcoin dépassent souvent 10 % sur des fenêtres de 24 heures lors d'annonces macroécon...
Quel est le coût de financement du contrat à terme Ethereum ? Répartition des frais de négociation ETH
Aug 05,2026 at 01:39am
Modèles de volatilité du marché 1. Les mouvements de prix de Bitcoin reflètent souvent des signaux macroéconomiques tels que les décisions de taux d...
Comment calculer le taux de rendement des contrats à terme Bitcoin ? Analyse des investissements sous contrat BTC
Aug 05,2026 at 11:00pm
Comprendre Bitcoin les mécanismes des contrats à terme 1. Bitcoin les contrats à terme sont des accords standardisés pour acheter ou vendre du BTC à u...
Voir tous les articles














