-
bitcoin $77323.969542 USD
0.01% -
ethereum $2523.414850 USD
2.23% -
tether $0.999674 USD
0.01% -
bnb $732.334794 USD
2.37% -
xrp $1.364311 USD
0.51% -
usd-coin $0.999831 USD
0.00% -
solana $101.751035 USD
1.88% -
tron $0.339246 USD
0.15% -
hyperliquid $78.911101 USD
-1.42% -
zcash $1143.169120 USD
2.95% -
dogecoin $0.084522 USD
0.58% -
monero $539.820025 USD
5.75% -
chainlink $11.538258 USD
0.03% -
unus-sed-leo $9.111763 USD
0.28% -
cardano $0.208079 USD
-0.46%
Wie lese ich Speichervariablen aus einem Smart Contract?
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
Verständnis des Speicherlayouts in Ethereum Smart Contracts
1. Jeder auf Ethereum bereitgestellte Smart Contract behält seinen Zustand in persistenten Speicherslots bei, die jeweils 32 Byte breit sind und ab Slot 0 sequentiell indiziert werden.
2. Der Compiler weist Speicherorte basierend auf der Deklarationsreihenfolge der Zustandsvariablen zu und berücksichtigt dabei die Typgröße und Packregeln für Effizienz.
3. Strukturen, Arrays und Zuordnungen führen zu Komplexität: Dynamische Arrays speichern die Länge in ihrem Slot und die Daten an einem durch keccak256 berechneten Offset; Zuordnungen verwenden keccak256(Schlüssel, Steckplatz), um Speicherpositionen abzuleiten.
4. Solidity-Versionen vor 0.8.0 ermöglichten eine engere Packung über Variablengrenzen hinweg, während neuere Versionen eine strengere Ausrichtung erzwingen, was sich auf die Genauigkeit der manuellen Slot-Berechnung auswirkt.
5. Die Vertragsvererbung beeinflusst das Layout – Variablen aus Basisverträgen belegen die unteren Plätze, gefolgt von Variablen aus abgeleiteten Verträgen in linearer Reihenfolge.
Direktes On-Chain-Lesen über eth_getStorageAt
1. Die JSON-RPC-Methode eth_getStorageAt ruft rohe 32-Byte-Werte aus einem bestimmten Speichersteckplatz unter Verwendung der Vertragsadresse, des Steckplatzindex und der Blockkennung ab.
2. Slot-Indizes müssen manuell berechnet oder aus Kompilierungsartefakten wie dem von Solidity generierten Speicherlayout-JSON extrahiert werden, das in den Metadaten- oder Build-Info-Dateien des Vertrags zu finden ist.
3. Tools wie Hardhat-Storage-Layout oder Slither-Print-Storage automatisieren die Slot-Zuordnung durch Parsen von AST und Bytecode und reduzieren so menschliche Fehler.
4. Bei Abfragen mit Infura- oder Alchemy-Endpunkten gelten Ratenbegrenzungen und Archivierungsknotenanforderungen – insbesondere für historische Slot-Werte vor Vertrags-Upgrades oder Selbstzerstörung.
5. Hex-codierte Antworten erfordern eine Dekodierung: uint256-Werte werden links aufgefüllt angezeigt, Adressen werden in den letzten 20 Bytes rechtsbündig ausgerichtet und boolesche Werte werden 0x01 oder 0x00 zugeordnet.
Komplexe Typen manuell dekodieren
1. Bei statischen Arrays belegt jedes Element einen Slot, wenn es passt; andernfalls laufen die Elemente gemäß den Standardausrichtungsregeln in aufeinanderfolgende Slots über.
2. Dynamische Array-Daten beginnen bei keccak256(slot), wobei die ersten 32 Bytes die Array-Länge enthalten und nachfolgende Slots Elemente fortlaufend speichern, beginnend bei keccak256(slot)+1.
3. Zuordnungen erfordern eine Neuberechnung von keccak256 für jeden Schlüssel: Für die Zuordnung (Adresse => uint256) öffentlicher Guthaben lautet der Steckplatz für die Adresse 0xAbc… keccak256(abi.encodePacked(0xAbc..., Slot_index)).
4. Verschachtelte Strukturen erhöhen die Komplexität – zum Beispiel erfordert eine Zuordnung zu einer Struktur zunächst die Berechnung des Zuordnungsslots und dann die Anwendung von Strukturfeldoffsets relativ zu dieser Basis.
5. Offsets innerhalb von Strukturen folgen den gleichen Regeln wie Variablen der obersten Ebene: uint128 + uint128 werden in einen Slot gepackt, aber das Hinzufügen von uint256 erzwingt aufgrund von Ausrichtungsbeschränkungen einen neuen Slot.
Verwendung von Gießerei und Guss für die praktische Inspektion
1. Der Cast- Speicherbefehl akzeptiert eine Vertragsadresse und eine Steckplatznummer und ruft automatisch Werte ab und dekodiert sie optional, wenn ABI oder Layout bereitgestellt wird.
2. Mit --watch überwacht cast Speicheränderungen über Blöcke hinweg, was nützlich ist, um Wiedereintritts- oder Flash-Loan-Nebenwirkungen in Echtzeit zu beobachten.
3. Die Forge-Inspektion von Foundry gibt das vollständige Speicherlayout aus, einschließlich Variablennamen, Typen, Steckplatznummern und Byte-Offsets – eine manuelle ABI-Analyse ist nicht erforderlich.
4. Wenn der Quellcode nicht verfügbar ist, ist ein Reverse Engineering erforderlich: Die Analyse von SSTORE-Opcodes in Transaktionsspuren zeigt, welche Slots wann geschrieben wurden.
5. Benutzerdefinierte Skripte, die web3.py oder ethers.js nutzen, können mehrere Slots stapelweise abfragen, Ausgaben als Tabellen formatieren und Querverweise mit bekannten Proxy-Mustern wie Transparent oder UUPS erstellen.
Häufig gestellte Fragen
F: Kann ich Speicher aus einem Vertrag lesen, ohne dessen Quellcode zu kennen? A: Ja – mithilfe von Bytecode-Analyse, Opcode-Tracing oder Heuristiken wie gängigen Slot-Mustern für OpenZeppelin-Proxys oder ERC-20-Balancen. Allerdings bleibt die Interpretation ohne Kontext mehrdeutig.
F: Warum gibt eth_getStorageAt Null für einen Wert ungleich Null zurück, von dem ich weiß, dass er existiert? A: Zu den möglichen Ursachen gehören die Abfrage des falschen Slots, die Verwendung einer veralteten Blocknummer, die Ausrichtung auf einen Proxy ohne Weiterleitung an die Implementierung oder das Lesen von nicht initialisiertem Speicher (der standardmäßig Null ist).
F: Kosten Speicherablesungen Gas, wenn sie außerhalb der Kette durchgeführt werden? A: Nein – eth_getStorageAt ist ein kostenloser RPC-Aufruf. Gaskosten fallen nur für On-Chain-Lesevorgänge an, die innerhalb von Transaktionen oder Ansichtsfunktionen ausgeführt werden.
F: Ist es sicher, sich auf Speichersteckplatznummern in allen Compilerversionen zu verlassen? A: Nicht garantiert – Soliditätsaktualisierungen können die Layoutalgorithmen verändern. Überprüfen Sie immer anhand der genauen Compilerversion und Optimierungseinstellungen, die während der Bereitstellung verwendet wurden.
Haftungsausschluss:info@kdj.com
Die bereitgestellten Informationen stellen keine Handelsberatung dar. kdj.com übernimmt keine Verantwortung für Investitionen, die auf der Grundlage der in diesem Artikel bereitgestellten Informationen getätigt werden. Kryptowährungen sind sehr volatil und es wird dringend empfohlen, nach gründlicher Recherche mit Vorsicht zu investieren!
Wenn Sie glauben, dass der auf dieser Website verwendete Inhalt Ihr Urheberrecht verletzt, kontaktieren Sie uns bitte umgehend (info@kdj.com) und wir werden ihn umgehend löschen.
-
PENDLE Jetzt handeln$2.19
8.19%
-
WLFI Jetzt handeln$0.05746
8.10%
-
PUMP Jetzt handeln$0.003931
7.03%
-
ETHFI Jetzt handeln$0.7427
6.87%
-
PYTH Jetzt handeln$0.05479
5.89%
-
JST Jetzt handeln$0.1098
4.46%
- Der Umlauf von Ripple RLUSD erreicht 2,4 Milliarden US-Dollar: Ein genauerer Blick auf die Entwicklung des Stablecoins
- 2026-09-13 04:50:01
- XRP-Millionärstraum: Können 10.000 XRP Sie in 20 Jahren reich machen?
- 2026-09-13 04:50:01
- Reform der Krypto-Finanzierung in Großbritannien: Ein tiefer Einblick in die 72-Millionen-Pfund-Spende und ihre Auswirkungen
- 2026-09-13 04:45:01
- Teucrium Inverse XRP ETF legt Datum des Inkrafttretens auf den 11. Oktober fest: Was Anleger über das Startdatum des ETF wissen müssen
- 2026-09-13 04:45:01
- CPEN Network Ink Token: Ein tiefer Einblick in Mobile Mining, Tokenomics und sein sich entwickelndes Erbe
- 2026-09-12 16:35:02
- XRP-Investoren stehen angesichts der Marktunsicherheit und wichtiger wirtschaftlicher Ereignisse vor einer kritischen Entscheidung
- 2026-09-12 16:40:01
Verwandtes Wissen
Wie überprüft man das Futures-Volumen und das Open Interest von DOGE?
Sep 12,2026 at 08:39am
Verständnis des DOGE Futures-Volumens 1. Das Futures-Volumen bezieht sich auf die Gesamtzahl der DOGE Futures-Kontrakte, die innerhalb eines bestimmte...
Wie kann man das BTC-Futures-Volumen und das Open Interest überprüfen?
Sep 12,2026 at 03:19pm
Datenquellen für BTC-Futures-Metriken 1. CoinGlass API v4 liefert Echtzeit-Finanzierungsraten, Liquidations-Heatmaps und detaillierte Aufschlüsselunge...
Wie liest man das DOGEUSDT Perpetual Contract Chart?
Sep 11,2026 at 07:19pm
Preisbewegungen auf DOGEUSDT Perpetual Charts verstehen 1. Die Candlestick-Formation verrät die unmittelbare Marktstimmung – grüne Kerzen zeigen eine ...
Wie liest man das ETHUSDT-Futures-Chart auf Binance?
Sep 13,2026 at 05:20am
Bitcoin Halbierungsmechanik 1. Alle 210.000 Blöcke wird die Blockbelohnung für Bitcoin Miner halbiert. 2. Dieses Ereignis tritt etwa alle vier Jahre a...
Wie kann ich die Finanzierungsgebühr für BTC-Futures auf Binance überprüfen?
Sep 10,2026 at 08:00am
Auffinden der Anzeige der Förderrate 1. Navigieren Sie zur Handelsoberfläche von Binance Futures und wählen Sie den unbefristeten BTCUSDT-Kontrakt aus...
Wie berechnet man den Gewinn und Verlust von SOLUSDT-Futures?
Sep 10,2026 at 07:19pm
Verstehen der SOLUSDT-Futures-Kontraktspezifikationen 1. Jeder SOLUSDT-Futures-Kontrakt wird in USDT notiert und in USDT abgerechnet, was ihn zu einem...
Wie überprüft man das Futures-Volumen und das Open Interest von DOGE?
Sep 12,2026 at 08:39am
Verständnis des DOGE Futures-Volumens 1. Das Futures-Volumen bezieht sich auf die Gesamtzahl der DOGE Futures-Kontrakte, die innerhalb eines bestimmte...
Wie kann man das BTC-Futures-Volumen und das Open Interest überprüfen?
Sep 12,2026 at 03:19pm
Datenquellen für BTC-Futures-Metriken 1. CoinGlass API v4 liefert Echtzeit-Finanzierungsraten, Liquidations-Heatmaps und detaillierte Aufschlüsselunge...
Wie liest man das DOGEUSDT Perpetual Contract Chart?
Sep 11,2026 at 07:19pm
Preisbewegungen auf DOGEUSDT Perpetual Charts verstehen 1. Die Candlestick-Formation verrät die unmittelbare Marktstimmung – grüne Kerzen zeigen eine ...
Wie liest man das ETHUSDT-Futures-Chart auf Binance?
Sep 13,2026 at 05:20am
Bitcoin Halbierungsmechanik 1. Alle 210.000 Blöcke wird die Blockbelohnung für Bitcoin Miner halbiert. 2. Dieses Ereignis tritt etwa alle vier Jahre a...
Wie kann ich die Finanzierungsgebühr für BTC-Futures auf Binance überprüfen?
Sep 10,2026 at 08:00am
Auffinden der Anzeige der Förderrate 1. Navigieren Sie zur Handelsoberfläche von Binance Futures und wählen Sie den unbefristeten BTCUSDT-Kontrakt aus...
Wie berechnet man den Gewinn und Verlust von SOLUSDT-Futures?
Sep 10,2026 at 07:19pm
Verstehen der SOLUSDT-Futures-Kontraktspezifikationen 1. Jeder SOLUSDT-Futures-Kontrakt wird in USDT notiert und in USDT abgerechnet, was ihn zu einem...
Alle Artikel ansehen














