-
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%
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.
-
RAIN Jetzt handeln$0.007852
113.00%
-
PIPPIN Jetzt handeln$0.06097
51.96%
-
PARTI Jetzt handeln$0.1396
42.04%
-
WAVES Jetzt handeln$0.9141
41.69%
-
ARC Jetzt handeln$0.04302
35.73%
-
HONEY Jetzt handeln$0.01029
21.80%
- Bitcoin, eCash Fork und Airdrop Dynamics: Ein tiefer Einblick in die neuesten Kontroversen im Kryptobereich
- 2026-05-03 12:55:01
- Konsens 2026 Miami: Web3, Blockchain, Kryptowährung, NFTs, Metaverse, Konferenz, 5. Mai – Wo die Wall Street auf die digitale Grenze trifft
- 2026-05-02 12:45:01
- Die Fed hält die Zinsen stabil, was inmitten geopolitischer Spannungen einen Bitcoin-Preisverfall auslöst
- 2026-05-01 06:45:01
- Bitcoin-Miner elektrifizieren das Netz: Der Erwerb eines Gaskraftwerks in Ohio läutet eine neue Ära für digitales Gold ein
- 2026-05-01 00:45:01
- Der MEGA-Token von MegaETH erreicht den Big Apple: Er setzt neue Leistungsmaßstäbe für Echtzeit-Blockchain
- 2026-05-01 00:55:01
- Solanas rutschiger Abhang: Die Preisprognose deutet auf einen Widerstandsverlust und mögliche weitere Rückgänge hin
- 2026-05-01 06:45:01
Verwandtes Wissen
Wie kann man bei Bybit für den BTC-Handel zwischen linearen und inversen unbefristeten Verträgen wählen?
Jun 06,2026 at 02:54am
Vertragsabwicklungsmechanismen 1. Lineare unbefristete Verträge auf Bybit werden in USDT abgewickelt, was bedeutet, dass alle Gewinn- und Verlustberec...
Wie richte ich Risikomanagementregeln auf Bybit ein, um meinen maximalen täglichen Verlust zu begrenzen?
Jun 04,2026 at 04:40pm
Konfiguration des Verlustlimits auf Kontoebene 1. Melden Sie sich per Web- oder Mobilanwendung mit Zwei-Faktor-Authentifizierung bei Ihrem Bybit-Konto...
Wie aktiviere ich den Portfolio-Margin-Modus auf Binance, um meine Margin-Anforderungen zu reduzieren?
Jun 05,2026 at 04:59am
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Wie kann ich meine offenen Futures-Positionen von Binance zu Bybit migrieren, ohne sie zu schließen?
Jun 04,2026 at 03:59am
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Wie geht man mit den steuerlichen Auswirkungen von Gewinnen aus dem Krypto-Futures-Handel in den USA um?
May 29,2026 at 06:19pm
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt eine feste Angebotsobergrenze von 21 Millionen Münzen, wobei neue Einheiten durch Bl...
Wie nutzt man den Bybit-Handelsbot-Marktplatz, um profitable Futures-Strategien zu finden?
Jun 02,2026 at 04:39am
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Wie kann man bei Bybit für den BTC-Handel zwischen linearen und inversen unbefristeten Verträgen wählen?
Jun 06,2026 at 02:54am
Vertragsabwicklungsmechanismen 1. Lineare unbefristete Verträge auf Bybit werden in USDT abgewickelt, was bedeutet, dass alle Gewinn- und Verlustberec...
Wie richte ich Risikomanagementregeln auf Bybit ein, um meinen maximalen täglichen Verlust zu begrenzen?
Jun 04,2026 at 04:40pm
Konfiguration des Verlustlimits auf Kontoebene 1. Melden Sie sich per Web- oder Mobilanwendung mit Zwei-Faktor-Authentifizierung bei Ihrem Bybit-Konto...
Wie aktiviere ich den Portfolio-Margin-Modus auf Binance, um meine Margin-Anforderungen zu reduzieren?
Jun 05,2026 at 04:59am
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Wie kann ich meine offenen Futures-Positionen von Binance zu Bybit migrieren, ohne sie zu schließen?
Jun 04,2026 at 03:59am
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Wie geht man mit den steuerlichen Auswirkungen von Gewinnen aus dem Krypto-Futures-Handel in den USA um?
May 29,2026 at 06:19pm
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt eine feste Angebotsobergrenze von 21 Millionen Münzen, wobei neue Einheiten durch Bl...
Wie nutzt man den Bybit-Handelsbot-Marktplatz, um profitable Futures-Strategien zu finden?
Jun 02,2026 at 04:39am
Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...
Alle Artikel ansehen














