Wird bei der Ethereum-Wallet-Adresse zwischen Groß- und Kleinschreibung unterschieden?

Ich habe eine Menge ETH an eine Brieftasche gesendet. Ich habe den Kontostand der Brieftasche auf der Etherkette überprüft. Ich habe die Adresse in das Suchfeld eingegeben und festgestellt, dass sowohl Klein- als auch Großbuchstaben der Adresse zu funktionieren schienen.

Ich wollte ein paar Dollar mehr kaufen, aber jetzt bin ich mir nicht sicher, ob etwas mit der von mir erstellten Adresse nicht stimmt. Für eine Anleitung wäre ich dankbar.

Nein, Groß- und Kleinschreibung wird nicht beachtet.

Antworten (3)

Ethereum-Wallet-Adressen sind in Hex [0-9A-F]*. Während bei der Adresse selbst die Groß-/Kleinschreibung nicht beachtet wird ( Aist dieselbe wie abeim Netzwerk), wird die Groß-/Kleinschreibung als (optionale) Prüfsumme verwendet. Es wurde als nachträglicher Gedanke zu einem Adressierungsschema entwickelt, dem eine grundlegende Prüfsummenvalidierung fehlte.

https://github.com/ethereum/EIPs/issues/55#issuecomment-187159063

Die Prüfsumme funktioniert so:

  1. Adresse in Kleinbuchstaben und entfernen Sie das Präfix 0x
  2. sha3-Hash-Ergebnis von #1
  3. n-ten Adressbuchstaben entsprechend dem n-ten Buchstaben der Raute ändern:
  • 0,1,2,3,4,5,6,7 → Kleinbuchstaben
  • 8, 9, a, b, c, d, e, f → Großbuchstaben

Sie hashen also die Adresse und sehen sich jedes N-te Zeichen des sha-Ergebnisses an. Wenn es 7 oder weniger ist, ist das N-te Zeichen in der Adresse kleingeschrieben. Wenn es 8 oder höher ist, wird dieses Zeichen in Großbuchstaben geschrieben.

(Übernommen aus einem alten Ethereum-Forum, dessen Link jetzt defekt ist .)

Und der Zweck einer Prüfsumme besteht darin, sicherzustellen, dass Sie die Adresse richtig eingegeben haben. Wenn es keine Prüfung auf Groß- und Kleinschreibung gab, könnten Sie versehentlich "a" anstelle von "b" eingeben und es an die falsche Adresse senden. Aber wenn Sie versehentlich „a“ anstelle von „B“ eingeben (es besteht eine Wahrscheinlichkeit von 50 %, dass der Buchstabe groß geschrieben werden sollte), dann würde Ihre Wallet-Software / Börse einen Fehler ausgeben
Eigentlich ist es mehr als das. Selbst wenn Sie in einer ansonsten mit Prüfsummen versehenen Adresse versehentlich „a“ anstelle von „b“ eingeben würden, würde ein Fehler erkannt, da das Großschreibungsmuster der anderen Buchstaben jetzt ungültig wäre.
^"Mehr als das" (@CherryDT) bezieht sich auf die Wahrscheinlichkeit. die Wahrscheinlichkeit, dass ein Benutzer, der ein „a“ anstelle von „b“ falsch eintippt, durch diese Prüfsumme für die Großschreibung erkannt wird, ist größer als 50 %. Wenn Sie ein a anstelle von b verwenden, ändert sich nicht nur die Großschreibung des aktuellen Zeichens, sondern auch der folgenden Zeichen. Die Wahrscheinlichkeit, den Fehler zu erkennen, ist also ungefähr (1 - (0,5 * 0,5 * ... verbleibende_Zeichen )), was auf 1 - very_small_number geschätzt werden kann, was eine hohe Wahrscheinlichkeit ist; wie 99,x %

Großschreibung bedeutet einfach, dass die Adresse eine Prüfsumme hat. Aus diesem Grund sollten Sie die Adresse mit Großschreibung verwenden, aber beide funktionieren.

Zur Überprüfung können alle Adressen, die vollständig großgeschrieben sind, in eine Prüfsummenadresse mit richtiger Großschreibung umgewandelt werden. In diesem Sinne wird bei Adressen also zwischen Groß- und Kleinschreibung unterschieden - beide Adressen sind gleich. Anders als zum Beispiel das Unix/Linux-Dateisystem, wo Sie eine Datei mit dem Namen „Ethereum“ und eine mit dem Namen „Ethereum“ im selben Verzeichnis haben können. Ist das nicht richtig?
@JorisBontje Ich denke, diese Antwort könnte noch geklärt werden. Wenn Sie die Buchstaben in Großbuchstaben ändern, erhält die Adresse keine Prüfsumme.
was capitalization addressheißt genau Diese Antwort ist etwas zweideutig
Die Groß-/Kleinschreibung sagt Ihnen, ob die Adresse eine Prüfsumme ist oder nicht. Bei einer Adresse mit gemischter Groß-/Kleinschreibung wird eine Prüfsumme erstellt. Eine Adresse mit einer anderen Schreibweise wird nicht mit Prüfsummen versehen (also alle Kleinbuchstaben == ohne Prüfsumme, alle Großbuchstaben == ohne Prüfsumme). Siehe eips.ethereum.org/EIPS/eip-55 .

Schauen Sie sich diese Beispiele an:

> Web3.utils.toChecksumAddress("0x03fB09251eC05ee9Ca36c98644070B89111D4b3F".toLowerCase());
'0x03FB09251eC05ee9Ca36c98644070B89111D4b3F'
> Web3.utils.toChecksumAddress("0x03fB09251eC05ee9Ca36c98644070B89111D4b3f".toLowerCase());
'0x03FB09251eC05ee9Ca36c98644070B89111D4b3F'
> Web3.utils.toChecksumAddress("0x03fB09251eC05ee9Ca36c98644070B89111D4b3e".toLowerCase());
'0x03Fb09251ec05eE9CA36c98644070B89111D4b3e'
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3f".toLowerCase());
true
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3F".toLowerCase());
true
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3F");
true
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3f");
false
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3e");
false
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3E");
false

Beachte das letzte Zeichen ;)