-
bitcoin $77146.398531 USD
-0.23% -
ethereum $2514.088317 USD
-0.37% -
tether $0.999674 USD
0.00% -
bnb $722.500739 USD
-1.34% -
xrp $1.361192 USD
-0.23% -
usd-coin $0.999776 USD
-0.01% -
solana $101.320251 USD
-0.42% -
tron $0.339801 USD
0.16% -
hyperliquid $78.899137 USD
-0.02% -
zcash $1141.149289 USD
-0.18% -
dogecoin $0.084480 USD
-0.05% -
monero $530.834712 USD
-1.66% -
chainlink $11.453705 USD
-0.73% -
unus-sed-leo $9.056535 USD
-0.61% -
cardano $0.207439 USD
-0.31%
Was ist ein Mapping in Solidity und wie speichert es Schlüssel-Wert-Paare?
Mappings in Solidity enable efficient, gas-optimized key-value storage using keccak256 hashing, ideal for balances, access control, and lookup-heavy smart contract use cases.
Nov 10, 2025 at 12:20 pm
Zuordnungen in Solidität verstehen
1. Eine Zuordnung in Solidity ist ein Referenztyp, der zum Speichern von Daten in Form von Schlüssel-Wert-Paaren verwendet wird, ähnlich wie Hash-Tabellen oder Wörterbücher in anderen Programmiersprachen. Es ermöglicht Entwicklern, einen eindeutigen Schlüssel mit einem bestimmten Wert zu verknüpfen, was effiziente Suchvorgänge und Aktualisierungen ermöglicht.
2. Die Syntax zum Deklarieren einer Zuordnung lautet „mapping(keyType => valueType)“ , wobei „keyType“ fast jeder Elementartyp wie uint, Adresse oder Bytes sein kann, jedoch keine Referenztypen wie Arrays oder andere Zuordnungen. Der valueType kann ein beliebiger Typ sein, einschließlich Strukturen, Arrays oder sogar einer anderen Zuordnung.
3. Zuordnungen werden in Verträgen deklariert und normalerweise zur Verwaltung von Zustandsvariablen verwendet. Da sie im Speicher gespeichert sind, bleiben ihre Werte über Funktionsaufrufe und Transaktionen hinweg bestehen.
4. Ein charakteristisches Merkmal von Zuordnungen ist, dass sie nicht iteriert werden können. Es gibt keinen integrierten Mechanismus zum Abrufen einer Liste von Schlüsseln oder Werten. Diese Einschränkung ergibt sich aus der Funktionsweise des Speichermodells von Ethereum – Zuordnungen sind für den schnellen Zugriff per Schlüssel und nicht für die Aufzählung konzipiert.
5. Wenn eine Zuordnung erstellt wird, werden alle möglichen Schlüssel mit dem Standardwert des valueType initialisiert (z. B. 0 für Ganzzahlen, false für Boolesche Werte). Dies bedeutet, dass der Zugriff auf einen nicht vorhandenen Schlüssel den Standardwert zurückgibt und keinen Fehler auslöst.
Speichermechanismus hinter Zuordnungen
1. Mappings speichern Daten nicht in einem herkömmlichen Tabellenformat. Stattdessen verwendet Solidity die Hash-Funktion keccak256, um Speicherplätze dynamisch zu berechnen. Jeder Schlüssel wird mit keccak256 zusammen mit der Speichersteckplatzposition der Zuordnungsvariablen gehasht.
2. Für eine Zustandsvariablenzuordnung im Speichersteckplatz n wird der mit einem bestimmten Schlüssel verknüpfte Wert in keccak256(key .slot) gespeichert, wobei „.“ bezeichnet Verkettung. Dadurch wird sichergestellt, dass jeder Schlüssel einem eindeutigen, deterministischen Speicherort zugeordnet ist.
3. Da die Hash-Funktion unidirektional ist, ist es rechnerisch nicht möglich, zurückzuentwickeln, welche Schlüssel festgelegt wurden. Dies trägt dazu bei, dass Zuordnungen nicht iteriert werden können.
4. Verschachtelte Zuordnungen folgen demselben Prinzip. In einer Zuordnung wie „mapping(address =>apping(uint => bool)“) wird der Slot der inneren Zuordnung bestimmt, indem der äußere Schlüssel und der Slot der äußeren Zuordnung gehasht werden und dieses Ergebnis dann als Basis für die Suche nach dem inneren Schlüssel verwendet wird.
5. Dieses Hashing-basierte Speicherlayout macht Zuordnungen für Lese- und Schreibvorgänge äußerst effizient, die unabhängig von der Anzahl der Einträge in konstanter Zeit ausgeführt werden.
Praktische Anwendungsfälle in Smart Contracts
1. Eine häufige Verwendung von Mappings ist die Verfolgung von Benutzerguthaben in ERC-20-Tokens. Eine Zuordnung wie „mapping(address => uint256) private _balances“ ermöglicht das schnelle Abrufen und Aktualisieren von Token-Beständen für jede Wallet-Adresse.
2. Zutrittskontrollsysteme verwenden häufig Zuordnungen, um Rollen oder Berechtigungen zu identifizieren. Mit „mapping(address => bool) public isAdmin“ kann beispielsweise effizient überprüft werden, ob eine Adresse über Administratorrechte verfügt.
3. In dezentralen Börsen oder NFT-Marktplätzen verknüpfen Mappings Order-IDs oder Token-IDs mit strukturierten Daten wie Preis, Eigentümer oder Listungsstatus. Dies ermöglicht die sofortige Suche nach Handelsdetails, ohne große Datensätze scannen zu müssen.
4. Zuordnungen werden auch verwendet, um Wiedereintrittsangriffe zu verhindern, indem Adressen während der Funktionsausführung markiert werden. Eine einfache private Eingabe von „mapping(address => bool)“ kann als Sperrmechanismus fungieren.
5. Aufgrund ihrer gaseffizienten Zugriffsmuster werden Mappings gegenüber Arrays bevorzugt, wenn häufige Suchen nach Kennungen erforderlich sind, insbesondere bei Protokollen mit hohem Durchsatz.
Häufig gestellte Fragen
Können Zuordnungen vollständig gelöscht werden? Ja, die Verwendung des Schlüsselworts „delete“ in einer Zuordnung löscht alle Einträge, indem jeder geschriebene Slot auf seinen Standardwert zurückgesetzt wird. Da Zuordnungen jedoch praktisch mit Standardwerten für alle Schlüssel initialisiert werden, betrifft dieser Vorgang nur Schlüssel, die explizit zugewiesen wurden.
Ist es möglich, eine Zuordnung von einer Funktion zurückzugeben? Nein, Zuordnungen können nicht direkt von Funktionen zurückgegeben werden, da sie in Solidity keine gültigen Rückgabetypen sind. Es können nur bestimmte Werte zurückgegeben werden, auf die über einen Schlüssel zugegriffen wird.
Können String- oder dynamische Arrays als Mapping-Schlüssel verwendet werden? String- und dynamische Byte-Arrays können nicht als Zuordnungsschlüssel verwendet werden. Es sind nur Datentypen fester Größe wie Bytes32, Uint und Adresse zulässig. Zeichenfolgen müssen bei Bedarf in ein Format mit fester Größe wie Bytes32 konvertiert werden.
Wie wirken sich Kartierungen auf die Gaskosten aus? Das Lesen aus einer Zuordnung mit einem nicht initialisierten Schlüssel verbraucht weniger Gas, da der Standardwert zurückgegeben wird, ohne den Speicher zu ändern. Das Schreiben oder Aktualisieren eines Werts führt aufgrund der staatlichen Wachstumskostenregeln von Ethereum zu höherem Gas, insbesondere wenn dadurch ein Nullwert in einen Wert ungleich Null geändert wird.
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.
-
JST Jetzt handeln$0.1119
3.27%
-
PUMP Jetzt handeln$0.003665
2.23%
-
PI Jetzt handeln$0.09658
2.09%
-
BSV Jetzt handeln$16.82
1.86%
-
PYTH Jetzt handeln$0.05369
1.68%
-
STX Jetzt handeln$0.2723
1.25%
- Japan, XRP und die XRP-Armee: Eine stille Revolution im globalen Finanzwesen?
- 2026-09-13 20:35:02
- Unbestätigter Buzz: Chainlink Whales, 10M LINK und die 17 %-Korrektur – Was ist wirklich los?
- 2026-09-13 16:55:01
- Cardano-Preisvorhersage, -analyse und -bewegung: Marktvolatilität und Zukunftspotenzial steuern
- 2026-09-13 16:25:01
- Datenverstoß bei Revolut: Gefälschte Regierungsanfragen nutzen Sicherheitslücken aus und legen Kundendaten offen
- 2026-09-13 09:00:02
- Blockstream, Liquid Network, Bitcoin: Streit um „gestohlene“ Gelder
- 2026-09-13 08:35:01
- 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
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 Bitcoin Futures-Finanzierungsgebühr auf Binance überprüfen?
Sep 13,2026 at 06:00pm
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 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 ü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 Bitcoin Futures-Finanzierungsgebühr auf Binance überprüfen?
Sep 13,2026 at 06:00pm
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 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...
Alle Artikel ansehen














