-
bitcoin $105910.003544 USD
4.01% -
ethereum $3631.676279 USD
7.34% -
tether $1.000020 USD
0.02% -
xrp $2.408704 USD
6.12% -
bnb $1012.387875 USD
2.24% -
solana $167.708145 USD
6.89% -
usd-coin $1.000152 USD
0.04% -
tron $0.291729 USD
0.51% -
dogecoin $0.181306 USD
4.47% -
cardano $0.584538 USD
4.64% -
hyperliquid $42.308721 USD
5.18% -
chainlink $16.177832 USD
5.86% -
zcash $641.874765 USD
12.02% -
bitcoin-cash $505.583696 USD
1.96% -
stellar $0.290115 USD
4.09%
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.
-
COTI Jetzt handeln$0.05278
56.23%
-
ARRR Jetzt handeln$0.7792
39.66%
-
DCR Jetzt handeln$31.67
37.13%
-
TRUTH Jetzt handeln$0.04514
35.56%
-
ORE Jetzt handeln$579.43
31.85%
-
KAVA Jetzt handeln$0.1860
29.59%
- Die dezentrale Zukunft des Pi-Netzwerks: Mainnet-Meilensteine und eine Community mit Herz
- 2025-11-10 14:55:01
- PUMP Token: Ein detaillierter Blick auf Marktbewegungen und institutionelles Interesse
- 2025-11-10 15:00:01
- Frauen, POSH-Schutz und politische Parteien: Eine verpasste Chance?
- 2025-11-10 14:40:02
- Blockchain, finanzielle Inklusion und Hauptakteure: Eine New Yorker Perspektive
- 2025-11-10 15:00:02
- Die Value-Ära von BlockDAG: Institutionelle Unterstützung läutet einen neuen Krypto-Aufbruch ein
- 2025-11-10 13:25:26
- Trump, Challenge Coins und NFL-Fans: Eine kurze Zusammenfassung aus New York
- 2025-11-10 13:25:26
Verwandtes Wissen
Was ist ein Denial-of-Service-Angriff (DoS) in einem Smart Contract und was sind seine häufigsten Formen?
Nov 10,2025 at 05:20am
Denial of Service in Smart Contracts verstehen 1. Ein Denial-of-Service-Angriff (DoS) im Zusammenhang mit Smart Contracts bezieht sich auf ein Szenari...
Wie sendet man Ether sicher an einen anderen Vertrag?
Nov 09,2025 at 06:40pm
Senden von Ether an Smart Contracts: Wichtige Überlegungen 1. Stellen Sie sicher, dass der empfangende Vertrag über eine kostenpflichtige Fallback-Fun...
Was ist eine Zustandsmaschine und wie kann ein Vertrag als solche gestaltet werden?
Nov 08,2025 at 02:19pm
Zustandsmaschinen im Blockchain-Kontext verstehen 1. Eine Zustandsmaschine ist ein Rechenmodell, das zum Entwerfen von Systemen verwendet wird, die au...
Wie funktioniert eine Bindungskurve und wie wird sie für Token-Verkäufe verwendet?
Nov 09,2025 at 04:00pm
Die Mechanik von Bindungskurven verstehen 1. Eine Bindungskurve ist eine mathematische Funktion, die den Preis eines Tokens mit seinem Angebot verknüp...
Was ist ein Mapping in Solidity und wie speichert es Schlüssel-Wert-Paare?
Nov 10,2025 at 12:20pm
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 ve...
Wie aktualisieren Sie einen Smart Contract mithilfe des UUPS-Proxy-Musters?
Nov 09,2025 at 01:19am
Verständnis des UUPS-Proxy-Musters in der Smart Contract-Entwicklung Das UUPS-Muster (Universal Upgradeable Proxy Standard) ist zu einem Eckpfeiler de...
Was ist ein Denial-of-Service-Angriff (DoS) in einem Smart Contract und was sind seine häufigsten Formen?
Nov 10,2025 at 05:20am
Denial of Service in Smart Contracts verstehen 1. Ein Denial-of-Service-Angriff (DoS) im Zusammenhang mit Smart Contracts bezieht sich auf ein Szenari...
Wie sendet man Ether sicher an einen anderen Vertrag?
Nov 09,2025 at 06:40pm
Senden von Ether an Smart Contracts: Wichtige Überlegungen 1. Stellen Sie sicher, dass der empfangende Vertrag über eine kostenpflichtige Fallback-Fun...
Was ist eine Zustandsmaschine und wie kann ein Vertrag als solche gestaltet werden?
Nov 08,2025 at 02:19pm
Zustandsmaschinen im Blockchain-Kontext verstehen 1. Eine Zustandsmaschine ist ein Rechenmodell, das zum Entwerfen von Systemen verwendet wird, die au...
Wie funktioniert eine Bindungskurve und wie wird sie für Token-Verkäufe verwendet?
Nov 09,2025 at 04:00pm
Die Mechanik von Bindungskurven verstehen 1. Eine Bindungskurve ist eine mathematische Funktion, die den Preis eines Tokens mit seinem Angebot verknüp...
Was ist ein Mapping in Solidity und wie speichert es Schlüssel-Wert-Paare?
Nov 10,2025 at 12:20pm
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 ve...
Wie aktualisieren Sie einen Smart Contract mithilfe des UUPS-Proxy-Musters?
Nov 09,2025 at 01:19am
Verständnis des UUPS-Proxy-Musters in der Smart Contract-Entwicklung Das UUPS-Muster (Universal Upgradeable Proxy Standard) ist zu einem Eckpfeiler de...
Alle Artikel ansehen














