Skip to content

Methodology

Methodik für Krypto

Durchgängig BigInt — jedes Wei wird unabhängig von der Größenordnung exakt hin- und zurückgerechnet.

By Published Updated

Das Krypto-Cluster rechnet zwischen drei Ethereum-Denominationen um — Wei (atomar), Gwei (Gaspreis-Einheit) und ETH (nutzerseitig). Die Mathematik ist konzeptionell trivial (Zehnerpotenzen) und in der Implementierung knifflig (die Zahlen übersteigen die native Präzision von JavaScript). Diese Seite erläutert die Implementierungs- entscheidungen.

Die Einheitenbeziehungen

1 ETH = 10⁹ Gwei = 10¹⁸ Wei

Die EVM speichert alle Guthaben und Arithmetik in Wei als vorzeichenlose 256-Bit-Ganzzahlen. ETH und Gwei sind reine menschenorientierte Bezeichnungen ohne On-Chain-Darstellung — sie sind Division-durch-Zehnerpotenz-Konventionen für die Anzeige.

Warum BigInt zwingend ist

JavaScripts Number-Typ verwendet IEEE-754-Double- Precision: ~15–17 signifikante Dezimalstellen. Number.MAX_SAFE_INTEGER ist 2⁵³ − 1 ≈ 9,007 × 10¹⁵. Ein Guthaben von 9 ETH sind grob 9 × 10¹⁸ Wei — drei Größenordnungen jenseits der Präzisionsgrenze.

Konkret: Wenn Sie 1.234567890123456789 ETH in einem Number speichern und in Wei umrechnen, werden die letzten mehreren Stellen gerundet. Wenn Sie diesen String als Eingabe von einer Wallet akzeptieren und an einen Smart Contract übergeben, erhält der Contract eine andere Zahl, als der Nutzer dachte zu senden.

Produktive Krypto-Bibliotheken (ethers.js, viem, web3.js) verwenden alle BigInt oder einen BigNumber-Wrapper für Wei-Beträge. Unser Konverter verwendet durchgängig natives BigInt. Eingaben akzeptieren Dezimalstrings; die Umrechnung parst sie sorgfältig, um eine vorzeitige Number-Umwandlung zu vermeiden.

Der Pfad zum Parsen von Dezimalstrings

Für eine Nutzereingabe wie 1.234 ETH:

  1. Am Dezimalpunkt teilen. Ganzzahlteil: 1; Bruchteil: 234.
  2. Den Bruchteil auf 18 Stellen auffüllen (ETHs Präzision): 234000000000000000.
  3. Verketten: 1234000000000000000.
  4. Ein BigInt aus dem Ergebnis konstruieren.
  5. Zur Umrechnung in Gwei durch 10⁹ teilen (BigInt-Division ist Ganzzahldivision — das ist korrekt, weil Gwei 9 Dezimalstellen weniger als Wei hat).

Umrechnungen in ETH zur Anzeige kehren den Vorgang um: das BigInt durch 10¹⁸ teilen, um den Ganzzahlteil zu erhalten, modulo 10¹⁸ für den Bruchteil, als Dezimalstring mit führenden Nullen formatieren, wo nötig. Nachgestellte Nullen werden zur besseren Lesbarkeit entfernt.

Garantie der Hin- und Rückumrechnung

Jede Umrechnung durch unseren Rechner wird exakt hin- und zurückgerechnet. Konkret:

  • ETH → Wei → ETH erhält alle 18 Bruchstellen.
  • Gwei → Wei → Gwei erhält alle 9 Bruchstellen.
  • Wei → ETH → Wei ist exakt, weil Wei-Beträge Ganzzahlen sind.

Eingaben mit mehr Präzision, als die Einheit unterstützt (z. B. „1,5 Wei“), werden abgeschnitten, nicht gerundet — Beträge unterhalb von Wei existieren nicht.

Algorithmus-Details: der BigInt-Pfad von Anfang bis Ende

Der Konverter ist eine Pipeline reiner Funktionen; dieselben Eingaben erzeugen stets dieselben Ausgaben. Pseudocode für die Richtung ETH-zu-Wei:

function ethToWei(input: string): bigint {
  const [intPart, fracPartRaw = ""] = input.split(".");
  if (fracPartRaw.length > 18) throw new Error("over-precise");
  const fracPart = fracPartRaw.padEnd(18, "0");
  return BigInt(intPart) * 10n ** 18n + BigInt(fracPart);
}

Jeder Schritt verwendet BigInt-Arithmetik — keine Number-Umwandlung. Das Muster aus Auffüllen-dann- Verketten vermeidet jede Gleitkomma-Zwischenstufe, was die einzige Möglichkeit ist, die vollen 18 Bruch-Dezimalstellen zu erhalten, die ETH zulässt.

Wei-zur-Anzeige verwendet den umgekehrten Trick:

function weiToEth(wei: bigint): string {
  const intPart = wei / 10n ** 18n;
  const fracPart = wei % 10n ** 18n;
  const fracStr = fracPart.toString().padStart(18, "0").replace(/0+$/, "");
  return fracStr.length === 0 ? intPart.toString() : `${intPart}.${fracStr}`;
}

Dieselbe Vorlage erzeugt Gwei (durch 10⁹ teilen) und BTC ↔ Satoshi (durch 10⁸ teilen — passt in ein normales Number, aber die Bibliothek verwendet aus Konsistenzgründen BigInt).

Quellen & Referenzen

Die Einheitenhierarchie Wei / Gwei / ETH ist im Ethereum Yellow Paper normativ. EIP-1559 standardisierte die Anzeigekonventionen für Grundgebühr und Prioritätsgebühr, die unser Rechner spiegelt. JavaScripts Ganzzahltyp beliebiger Präzision ist in ECMA-262 spezifiziert; die Präzisionsgrenze, die wir umgehen, stammt aus IEEE 754. Bitcoins 8-Dezimalstellen-Präzision stammt aus dem ursprünglichen Whitepaper. Vollständige Zitate im Quellenblock unten.

Annahmen & Grenzen

  • Reine Arithmetik, kein Netzwerk. Der Rechner liest niemals eine Chain-RPC oder ein Wallet-Guthaben — Eingaben sind nutzerseitige Strings, Ausgaben sind formatierte Strings.
  • Beträge unterhalb von Wei werden abgeschnitten, nicht gerundet. Eine Eingabe von 0.5 Wei löst sich zu 0 Wei auf. Sub-atomare Einheiten existieren auf Ethereum nicht.
  • Die Anzeigeformatierung entfernt nachgestellte Nullen. 1,230000…0 ETH wird als 1,23 ETH angezeigt. Smart Contracts interessiert das BigInt, nicht der Anzeige-String, also ist dies rein kosmetisch.
  • Kein Live-ETH/USD-Preis. Die Fiat-Umrechnung verwendet einen separaten, gecachten Preisdienst im Währungs-Cluster — siehe die Währungs-Methodik für den Aktualisierungsrhythmus. Der Krypto-Einheitenkonverter ist preisfrei.
  • Nur native Token von EVM-Chains. ERC-20-Token haben konfigurierbare Dezimalstellen (USDC hat 6, DAI hat 18); verwenden Sie dafür den decimals()-Wert des Token-Contracts, nicht die ETH-18.
  • Kein Signieren, Broadcasten oder Verwahren von Transaktionen. Verwenden Sie für jede Bewegung eine Wallet (Metamask, Rabby); der Konverter zeigt nur Zahlen.
  • BigInt-Locale-Formatierung ist Opt-in. Ausgaben verwenden einen einfachen Dezimalpunkt; Tausendertrennzeichen werden von der UI-Schicht für ETH angewendet, aber nicht für rohes Wei (eine 50-stellige Zahl mit Kommata ist schwerer zu kopieren als eine ohne).

Was wir nicht tun

  • Live-ETH-Preis. Kommt in Welle 2 (CoinGecko-API + ISR-Cache).
  • Andere Chains. Die meisten EVM-kompatiblen Chains verwenden dieselbe Wei/Gwei/Native-Token-Hierarchie — ersetzen Sie das „ETH“-Label durch MATIC, BNB, ARB usw., und die Mathematik ist identisch.
  • Bitcoin-Denominationen. 1 BTC = 100.000.000 Satoshi passt bequem in eine 64-Bit-Ganzzahl; BigInt wird nicht benötigt. Unsere zugrunde liegende Bibliothek unterstützt die BTC ↔ Satoshi-Umrechnung; das UI-Tool erscheint in einem späteren Batch.
  • Transaktionen. Wir übermitteln nichts an irgendein Netzwerk.

Frequently asked questions

Wie rechnet Convertitive zwischen Wei, Gwei und ETH um?
Die Beziehungen sind im Ethereum Yellow Paper per Definition exakt: 1 ETH = 10⁹ Gwei = 10¹⁸ Wei. Alle Arithmetik verwendet JavaScript-BigInt, um IEEE-754-Gleitkomma-Präzisionsverlust zu vermeiden. Die Umrechnung lautet: Wei = ETH × 10¹⁸ (BigInt-Multiplikation, verlustfrei). Keine Rundung, keine Näherung — jedes Wei wird exakt hin- und zurückgerechnet.
Warum ist BigInt für die Ethereum-Einheitenumrechnung zwingend?
JavaScripts Number-Typ ist ein IEEE-754-Double (64-Bit-Gleitkomma) mit einer 53-Bit-Mantisse, was eine exakte Ganzzahldarstellung nur bis 2⁵³ = 9.007.199.254.740.992 (etwa 9 × 10¹⁵) liefert. Schon ein einzelnes ETH = 10¹⁸ Wei übersteigt dies um das 100-Fache. Ohne BigInt verlieren selbst kleine ETH-Werte die Präzision auf Wei-Ebene. Beispiel: 1,5 ETH = 1.500.000.000.000.000.000 Wei — eine 19-stellige Ganzzahl, die Number stillschweigend rundet.
Was speichert die Ethereum Virtual Machine tatsächlich für Guthaben?
Die EVM (Ethereum Yellow Paper, §4.1) speichert Kontoguthaben als vorzeichenlose 256-Bit-Ganzzahlen in Einheiten von Wei. Auf der Protokollebene gibt es keine Gleitkomma- oder Dezimaldarstellung. Gwei ist eine menschenlesbare Bequemlichkeitsdenomination für Gaspreise (die EIP-1559-Grundgebühr ist in Gwei denominiert); ETH ist die Anzeige-Denomination. Auf EVM-Ebene existiert nur Wei.
Wie funktioniert der Pfad zum Parsen von Dezimalstrings für gebrochene ETH-Eingaben?
Gebrochenes ETH wie '0.001' wird als Dezimalstring geparst, am Dezimalpunkt geteilt, und der Bruchteil wird auf exakt 18 Dezimalstellen aufgefüllt, bevor er als BigInt geparst wird. Beispiel: '0.001' → Ganzzahlteil '0', Bruchteil '001' + 15 Nullen Auffüllung = '001000000000000000' → 1.000.000.000.000.000 Wei. Dies vermeidet jede Gleitkomma-Zwischendarstellung.
Was sind die Grenzen des Wei-/Gwei-/ETH-Konverters?
Drei Grenzen: (1) der Konverter kennt den aktuellen ETH/USD-Preis nicht — er rechnet Einheiten um, keinen Wert; (2) Gas-Schätzung (Gesamtgebühr = gas_units × (base_fee + priority_fee) in Gwei) wird nicht durchgeführt; (3) ERC-20-Token-Dezimalstellen werden nicht unterstützt — viele Token verwenden 6 oder 8 Dezimalstellen statt 18, und sie als ETH zu behandeln würde falsche Ergebnisse liefern.

Sources & references

Authoritative references cited by this piece. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.

Related

Published May 14, 2026 · Last reviewed May 31, 2026