Marktkapitalisierung: $2.1233T 1.14%
Volumen (24h): $72.5048B -56.86%
Angst- und Gier-Index:

15 - Extreme Angst

  • Marktkapitalisierung: $2.1233T 1.14%
  • Volumen (24h): $72.5048B -56.86%
  • Angst- und Gier-Index:
  • Marktkapitalisierung: $2.1233T 1.14%
Kryptos
Themen
Cryptospedia
Nachricht
Cryptostopics
Videos
Top Cryptospedia

Sprache auswählen

Sprache auswählen

Währung wählen

Kryptos
Themen
Cryptospedia
Nachricht
Cryptostopics
Videos

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.

Verwandtes Wissen

Wie kann man bei Bybit für den BTC-Handel zwischen linearen und inversen unbefristeten Verträgen wählen?

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 kann man Terminmarktmanipulationen wie Stoppjagden und Spoofing erkennen und vermeiden?

Wie kann man Terminmarktmanipulationen wie Stoppjagden und Spoofing erkennen und vermeiden?

Jun 07,2026 at 02:20pm

Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...

Wie richte ich Risikomanagementregeln auf Bybit ein, um meinen maximalen täglichen Verlust zu begrenzen?

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?

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?

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?

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 kann man bei Bybit für den BTC-Handel zwischen linearen und inversen unbefristeten Verträgen wählen?

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 kann man Terminmarktmanipulationen wie Stoppjagden und Spoofing erkennen und vermeiden?

Wie kann man Terminmarktmanipulationen wie Stoppjagden und Spoofing erkennen und vermeiden?

Jun 07,2026 at 02:20pm

Bitcoin Halbierungsmechanik 1. Das Protokoll von Bitcoin erzwingt einen festen Ausgabeplan, bei dem die Blockbelohnungen etwa alle 210.000 Blöcke halb...

Wie richte ich Risikomanagementregeln auf Bybit ein, um meinen maximalen täglichen Verlust zu begrenzen?

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?

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?

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?

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...

Alle Artikel ansehen

User not found or password invalid

Your input is correct