-
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%
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.
-
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%
- Tokenisierung, Stablecoins, Überweisungen: Die New Yorker Minute für globale Finanzen
- 2026-02-01 19:20:01
- Da der Vorverkauf in die letzten Stunden geht, steht BlockDAG vor einer 100-fachen Krypto-Chance und verspricht enorme Gewinne
- 2026-02-01 19:20:01
- Circle Charts Mutiger Kurs: Stablecoins werden das globale Finanzwesen bis 2026 neu gestalten
- 2026-02-01 19:25:01
- Big Apple beißt in Blockchain: Ethereum DApps, Börsen und Spiele navigieren durch eine sich verändernde Krypto-Flut
- 2026-02-01 19:15:01
- Vorverkauf und Pumpfun für Kryptowährungen: Die mutige Wette des Big Apple auf den digitalen Goldrausch
- 2026-02-01 19:15:01
- Pi-Netzwerk stärkt Mainnet-Migration und KYC-Verbesserungen inmitten des Ökosystemwachstums
- 2026-02-01 19:10:02
Verwandtes Wissen
Wie kann man die Auswirkungen von Bitcoin ETFs auf Kryptoverträge verstehen?
Feb 01,2026 at 04:19pm
Bitcoin ETFs und Marktliquidität 1. Bitcoin ETFs führen institutionelles Kapital direkt in den Spotmarkt ein, wodurch die Orderbuchtiefe erhöht und di...
Wie kann man DeFi-Kontrakte während des aktuellen Liquiditätsanstiegs handeln?
Feb 01,2026 at 07:00am
Verständnis der Liquiditätsdynamik in DeFi-Protokollen 1. Liquiditätsschübe bei DeFi werden oft durch koordinierte Kapitalzuflüsse aus Yield-Farming-A...
Wie handelt man Micro-Cap-Kryptokontrakte mit hohem Wachstumspotenzial?
Feb 01,2026 at 02:20pm
Micro-Cap-Krypto-Verträge verstehen 1. Micro-Cap-Kryptokontrakte beziehen sich auf derivative Instrumente, die an Token mit einer Marktkapitalisierung...
Wie kann man sicher vom Spot-Handel zum Krypto-Kontrakthandel wechseln?
Feb 01,2026 at 03:59pm
Die Hauptunterschiede zwischen Spot- und Kontrakthandel verstehen 1. Beim Spot-Handel handelt es sich um den sofortigen Tausch von Kryptowährungen geg...
Wie nutzt man das Volumenprofil für die Preisermittlung von Krypto-Verträgen?
Feb 01,2026 at 09:39am
Grundlagen des Volumenprofils verstehen 1. Das Volumenprofil ist eine visuelle Darstellung der Handelsaktivität auf bestimmten Preisniveaus über einen...
Wie kann man Gaming-Token-Kontrakte im aktuellen Bullenmarkt handeln?
Feb 01,2026 at 06:39pm
Verstehen der Spiel-Token-Vertragsmechanismen 1. Gaming-Token-Verträge laufen auf EVM-kompatiblen Blockchains wie Ethereum, BSC und Arbitrum, wo die i...
Wie kann man die Auswirkungen von Bitcoin ETFs auf Kryptoverträge verstehen?
Feb 01,2026 at 04:19pm
Bitcoin ETFs und Marktliquidität 1. Bitcoin ETFs führen institutionelles Kapital direkt in den Spotmarkt ein, wodurch die Orderbuchtiefe erhöht und di...
Wie kann man DeFi-Kontrakte während des aktuellen Liquiditätsanstiegs handeln?
Feb 01,2026 at 07:00am
Verständnis der Liquiditätsdynamik in DeFi-Protokollen 1. Liquiditätsschübe bei DeFi werden oft durch koordinierte Kapitalzuflüsse aus Yield-Farming-A...
Wie handelt man Micro-Cap-Kryptokontrakte mit hohem Wachstumspotenzial?
Feb 01,2026 at 02:20pm
Micro-Cap-Krypto-Verträge verstehen 1. Micro-Cap-Kryptokontrakte beziehen sich auf derivative Instrumente, die an Token mit einer Marktkapitalisierung...
Wie kann man sicher vom Spot-Handel zum Krypto-Kontrakthandel wechseln?
Feb 01,2026 at 03:59pm
Die Hauptunterschiede zwischen Spot- und Kontrakthandel verstehen 1. Beim Spot-Handel handelt es sich um den sofortigen Tausch von Kryptowährungen geg...
Wie nutzt man das Volumenprofil für die Preisermittlung von Krypto-Verträgen?
Feb 01,2026 at 09:39am
Grundlagen des Volumenprofils verstehen 1. Das Volumenprofil ist eine visuelle Darstellung der Handelsaktivität auf bestimmten Preisniveaus über einen...
Wie kann man Gaming-Token-Kontrakte im aktuellen Bullenmarkt handeln?
Feb 01,2026 at 06:39pm
Verstehen der Spiel-Token-Vertragsmechanismen 1. Gaming-Token-Verträge laufen auf EVM-kompatiblen Blockchains wie Ethereum, BSC und Arbitrum, wo die i...
Alle Artikel ansehen














