-
bitcoin $77998.274043 USD
0.31% -
ethereum $2280.309164 USD
0.69% -
tether $0.998587 USD
-0.02% -
bnb $707.120565 USD
0.48% -
xrp $1.248884 USD
-0.12% -
usd-coin $0.999584 USD
-0.01% -
solana $94.193636 USD
-1.17% -
tron $0.315161 USD
1.67% -
hyperliquid $85.602522 USD
-2.32% -
zcash $1264.350481 USD
1.86% -
dogecoin $0.075266 USD
-0.42% -
monero $607.413409 USD
0.84% -
unus-sed-leo $9.406815 USD
0.22% -
chainlink $11.310033 USD
-3.64% -
cardano $0.190499 USD
-1.30%
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.
-
PIEVERSE Jetzt handeln$1.18
11.06%
-
TRX Jetzt handeln$0.3207
2.17%
-
JST Jetzt handeln$0.1407
1.47%
-
WLFI Jetzt handeln$0.05029
0.82%
-
XMR Jetzt handeln$606.02
0.56%
-
XAUt Jetzt handeln$3913.20
0.45%
- Avalanche AVAX-Preis sinkt aufgrund allgemeiner Marktprobleme; Das institutionelle Interesse bleibt groß
- 2026-11-03 12:35:02
- Warum ist der Mengenpreis gesunken? Ein tiefer Einblick in den jüngsten Rückgang von QNT inmitten der Marktunruhe
- 2026-11-03 12:55:01
- XRP-Preisdiagrammanalyse von Eggag Crypto: Sind Sie bereit für die „größte Welle 3“?
- 2026-11-03 01:15:01
- Die Muttergesellschaft von Bed Bath & Beyond unterstützt den 350-Millionen-Dollar-SPAC-Deal von tZERO: Was New Yorker wissen müssen
- 2026-11-03 01:15:01
- Arbitrum verzeichnet einen Anstieg des Stablecoin-Transfervolumens, unterstützt durch ein neues Wachstumsprogramm
- 2026-11-03 00:55:01
- Trump, Nordkorea und der Binance-Raub: Ein Netz aus Geopolitik und digitaler Kriminalität
- 2026-11-03 00:55:01
Verwandtes Wissen
So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position
Oct 26,2026 at 04:06am
Gesamtkostenkomponenten für BTCUSDT-Futures-Positionen 1. Die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position umfassen sowohl explizite als...
So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam
Oct 20,2026 at 06:39pm
Mechanik der Finanzierungsrate bei unbefristeten XRPUSDT-Verträgen 1. Die Finanzierungsraten für XRPUSDT Perpetual Swaps werden alle acht Stunden anha...
So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest
Oct 23,2026 at 09:34am
Verständnis der Break-Even-Stop-Loss-Mechanik 1. Ein Break-Even-Stop-Loss ist eine dynamische Order, die sich nach oben anpasst, wenn sich die Positio...
So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades
Oct 21,2026 at 02:00am
Verstehen der Schnittstelle des Binance-Futures-Rechners 1. Der Rechner ist direkt in die Binance-Futures-Handelsschnittstelle eingebettet und über di...
So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation
Oct 26,2026 at 12:20pm
Markpreis in BTCUSDT-Futures verstehen 1. Der Markpreis ist ein berechneter Wert, der von Börsen verwendet wird, um unfaire Liquidationen bei volatile...
So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an
Oct 30,2026 at 10:19pm
Grundlegendes zur Mechanik des unbefristeten Vertrags von TRUMPUSDT 1. TRUMPUSDT ist ein thematischer, unbefristeter Terminkontrakt, der an mehreren T...
So berechnen Sie die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position
Oct 26,2026 at 04:06am
Gesamtkostenkomponenten für BTCUSDT-Futures-Positionen 1. Die Gesamtkosten für das Halten einer BTCUSDT-Futures-Position umfassen sowohl explizite als...
So überwachen Sie die XRPUSDT-Finanzierungsraten und das offene Interesse gemeinsam
Oct 20,2026 at 06:39pm
Mechanik der Finanzierungsrate bei unbefristeten XRPUSDT-Verträgen 1. Die Finanzierungsraten für XRPUSDT Perpetual Swaps werden alle acht Stunden anha...
So legen Sie einen Break-Even-Stop-Loss für SOLUSDT Perpetual Futures fest
Oct 23,2026 at 09:34am
Verständnis der Break-Even-Stop-Loss-Mechanik 1. Ein Break-Even-Stop-Loss ist eine dynamische Order, die sich nach oben anpasst, wenn sich die Positio...
So verwenden Sie den Binance-Futures-Rechner für ETHUSDT-Trades
Oct 21,2026 at 02:00am
Verstehen der Schnittstelle des Binance-Futures-Rechners 1. Der Rechner ist direkt in die Binance-Futures-Handelsschnittstelle eingebettet und über di...
So überprüfen Sie den BTCUSDT-Markpreis vor einer Futures-Liquidation
Oct 26,2026 at 12:20pm
Markpreis in BTCUSDT-Futures verstehen 1. Der Markpreis ist ein berechneter Wert, der von Börsen verwendet wird, um unfaire Liquidationen bei volatile...
So passen Sie die Hebelwirkung eines unbefristeten TRUMPUSDT-Vertrags an
Oct 30,2026 at 10:19pm
Grundlegendes zur Mechanik des unbefristeten Vertrags von TRUMPUSDT 1. TRUMPUSDT ist ein thematischer, unbefristeter Terminkontrakt, der an mehreren T...
Alle Artikel ansehen














