Nur zu Bildungszwecken; keine Anlage- oder Sicherheitsberatung. Dezimalstellen beweisen weder Identität, Wert, Deckung noch Sicherheit eines Tokens.
Direkte Antwort
Bei einem ERC-20-Token ist decimals() ein optionales Metadatum, das Oberflächen die Anzeige ganzzahliger Token-Einheiten vorgibt. Liefert es d, ist der übliche Anzeigebetrag raw / 10^d. Es ändert die Vertragsarithmetik nicht und authentifiziert den Token nicht. Prüfen Sie vor Vertrauen in das Ergebnis Chain, exakte Vertragsadresse, Code oder Proxy-Implementierung und Block.
Lesen Sie decimals() über einen unabhängigen RPC an einem bestimmten Block, dekodieren Sie die ABI-Rückgabe als uint8 und vergleichen Sie sie mit dem offiziellen Vertragsregister des Emittenten und einem verlässlichen Explorer. Testen Sie die Skalierung danach gegen rohe balanceOf-, Transfer-, Freigabe-, Receipt- und Eventwerte. Nehmen Sie nicht stillschweigend 18 an, wenn der Aufruf fehlt, revertiert, fehlerhafte Daten liefert oder anderen Belegen widerspricht.
Funktionsweise
ERC-20 speichert und überträgt vorzeichenlose Ganzzahlen. Die Anzeige fügt das Dezimaltrennzeichen ein; der Vertrag erhält weiterhin Ganzzahlen. Wandeln Sie Eingaben mit Dezimalstrings oder Ganzzahlen beliebiger Genauigkeit um, niemals mit binärem Gleitkomma. Eine Menge ist nur darstellbar, wenn die Multiplikation mit 10^d eine Ganzzahl ergibt.
Da decimals() optional ist, kann ein konformer Token es auslassen. Eine eigene oder aktualisierbare Implementierung kann unerwartete Werte liefern oder nach einem Upgrade anders reagieren. Prüfen Sie bei einem ERC-1967-Proxy die Proxy-Adresse, Implementierung oder Beacon, Administrator und Upgrade-Events; lesen Sie Token-Zustand an der Proxy-Adresse und vergleichen Sie alles am selben Block.
Freigaben und ERC-2612-permit-Werte sind ebenfalls rohe Ganzzahlen. Ein korrekt angezeigter Transfer beweist nicht, dass Freigabe, Router-Minimum, Bridge-Betrag oder Buchhaltung dieselbe Skalierung nutzten. Quell- und Zielverträge einer Bridge können verschiedene Dezimalstellen haben; vergleichen Sie Anzeigewert und Roheinheiten beider Seiten nach den dokumentierten Umrechnungs- und Rundungsregeln.
Gehen Sie so vor:
- Fixieren Sie Chain-ID oder Domain, Token-Vertrag, Blocknummer, RPC-Endpunkt und Beobachtungszeit.
- Bestätigen Sie die Adresse im offiziellen Register des Emittenten; Name, Symbol, Icon und Suchtreffer sind keine maßgeblichen Belege.
- Prüfen Sie deployten Code und Proxy-Status; notieren Sie Implementierung oder Beacon, Administrator und jüngste Upgrades.
- Rufen Sie
decimals()auf, dekodieren Sieuint8per ABI und erfassen Sie Erfolg, Revert, leere oder fehlerhafte Ausgabe, ohne einen Standardwert einzusetzen. - Lesen Sie rohe
balanceOf-,totalSupply-, Freigabe-, Calldata-, Receipt- und Eventwerte an kompatiblen Blöcken und formatieren Sie sie mit der beobachteten Skalierung. - Berechnen Sie Transfer, Freigabe, Quote und Bridge-Betrag mit Ganzzahlen neu, einschließlich Gebühren, Rundung, Resten, Rebases oder Transfersteuern.
- Simulieren und senden Sie eine kleine Transaktion und gleichen Sie Rohsalden vorher und nachher ab; stoppen Sie bei jeder Abweichung zwischen Oberfläche, RPC, Event oder Saldo.
Beispiele
- Ein Rohwert, zwei Skalierungen. Bei
raw = 123456789zeigtd = 6den Wert123.456789; beid = 18ist es0.000000000123456789. Der Unterschied beträgt den Faktor10^12. - Darstellbarkeit zählt. Bei
d = 6werden1.25Token zu1250000Roheinheiten.0.0000001Token liegt unter einer Roheinheit und muss abgelehnt oder nach einer ausdrücklichen Regel gerundet werden. - Falsch skalierte Freigabe. Eine Freigabe von
100Token beid = 6ist100000000. Mitd = 18kodiert ergibt sie100000000000000000000, also eine um10^12größere Freigabe. - Bridge-Neuskalierung. Konvertiert eine dokumentierte
1:1-Route einen Quelltoken mitd = 6in eine Zieldarstellung mitd = 18, stehen rohe2500000für2.5Token und am Ziel2500000000000000000für2.5. Gebühren, Grenzen, Reste und tatsächlicher Empfang sind weiter zu prüfen.
Risiken
- Die richtige Adresse wird auf der falschen Chain abgefragt.
- Ein kopierter Name, ein Symbol oder Icon verbirgt einen anderen Vertrag.
- Proxy-Implementierung oder Beacon ändern sich nach der Prüfung.
- RPC oder Explorer liefern alten, nicht finalen oder widersprüchlichen Zustand.
- Fehlende oder fehlerhafte Metadaten werden still durch
18ersetzt. - Binäre Gleitkommaumrechnung rundet einen großen oder präzisen Betrag.
- Eine Wallet formatiert Transfer korrekt, Freigabe oder permit aber falsch.
- Eine Datenbank mischt Roheinheiten und menschenlesbare Beträge.
- Eine Bridge unterstellt gleiche Dezimalstellen oder verschweigt Restrundung.
- Transfergebühr, Rebase, Mint, Burn, Pause oder Sperre verhindern einfachen Abgleich.
- Transaktions-Calldata, Events, Receipts und tatsächliche Saldoänderungen weichen ab.
- Die Dezimalprüfung gilt fälschlich als Beweis für Emittent, Reserven, Liquidität oder Sicherheit.
Häufige Missverständnisse
- Alle ERC-20-Token haben
18Dezimalstellen. Das Metadatum ist optional; Implementierungen können andere Werte liefern. - Dezimalstellen sind Präzisionsbits der EVM. Sie sind eine dezimale Anzeigekonvention; Token-Arithmetik bleibt ganzzahlig.
- Der formatierte Explorer-Saldo ist eine unabhängige Bestätigung. Er kann denselben Metadatenaufruf und damit denselben Fehler nutzen.
- Gleiches Symbol und gleiche Dezimalstellen bedeuten denselben Vermögenswert. Nötig sind auch richtige Chain, exakter Vertrag und Emittentenbeleg.
- Ein erfolgreicher Kleintransfer validiert jede Integration. Freigaben, Router, Bridges, Börsen und Buchhaltung können separat skalieren.
Verwandte Themen
- Token-Vertrag verifizieren
- Wallet-Calldata dekodieren
- Bridge-Token verifizieren
- Risiko bei Token mit Transfergebühr
- Proxy-Vertrag
Quellen
- ERC-20: Token Standard - Ethereum Improvement Proposals (abgerufen: 2026-08-21)
- ERC-20 - OpenZeppelin Docs (abgerufen: 2026-08-21)
- JSON-RPC API - ethereum.org (abgerufen: 2026-08-21)
- ERC-1967: Proxy Storage Slots - Ethereum Improvement Proposals (abgerufen: 2026-08-21)
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (abgerufen: 2026-08-21)