Warum haben Ethereum-Adressen keine Prüfsummen?

Eine Prüfsumme, ähnlich wie bei Bitcoin-Adressen, kann in erster Linie verhindern, dass Tippfehler oder ungültige Adressen verwendet werden, bevor eine Transaktion mit einer ungültigen Adresse konstruiert wird.

Warum haben Ethereum-Adressen keine Prüfsummen? War es ein Versehen, das von den Designern, Prüfern und der Community übersehen wurde, bis Frontier gestartet wurde? (Bei dieser Frage geht es mehr um die Geschichte als um laufende und zukünftige Korrekturbemühungen.)

Antworten (4)

Bearbeitet, um hinzuzufügen: Wie vorhergesagt, haben Benutzer und Brieftaschen mit dem Start des Ethereum Name Service (ENS) allmählich damit begonnen, Zeichenfolgen wie „mywallet.eth“ anstelle der rohen Hex-Adressen zu verwenden. Da dieser Name zum Zeitpunkt des Schreibens dieser Antwort nicht bekannt war, bezieht er sich auf dasselbe Konzept wie ein "Namereg".

Ich kann das ein wenig näher ausführen, denn es ist nicht nur die Tatsache, dass von Endbenutzern erwartet wird, dass sie für normale alltägliche Transaktionen menschenlesbare Zeichenfolgen verwenden. Es ist so, dass die rohe hexadezimale Zeichenfolge, die Sie eine „Ethereum-Adresse“ nennen, nicht einmal als Standardmethode zur Darstellung dieser Informationen gedacht war.

Möglicherweise wissen Sie, dass, wenn Sie eine Bitcoin-Transaktion an eine „Bitcoin-Adresse“ wie 1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3 senden , die eigentliche Transaktion selbst nicht die Zeichenfolge „1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3“ enthält. Stattdessen decodiert es diese Darstellung in die echte Adresse 0xfc916f213a3d7f1369313d5fa30f6168f9446a2d, eine reine Hexadezimaldarstellung, die keinen Platz für Prüfsummen und Versionsbits verschwendet. Ähnlich aussehend?

Es stimmt, dass die reine Hexadezimaladresse selbst keine Prüfsummen enthält. Aber nichts hindert Sie daran, Software zu schreiben, die genau dieselbe Methode verwendet, die Bitcoin verwendet , um eine Codierung dieser Zeichenfolge in Basis 58 mit einer integrierten Versionsnummer und Prüfsumme zu erstellen. Es würde perfekt mit dem Netzwerk zusammenarbeiten, indem es die neue „Ethereum-Adresse“ stillschweigend in rohe Hexadezimalform dekodiert. Es könnte sogar beide Arten von Formaten akzeptieren, solange Sie darauf achten, immer das "0x" am Anfang der Rohformate einzufügen (was Sie sowieso tun sollten). Dann könnten Sie mit genau der gleichen Erfahrung, die Sie mit Bitcoin haben, senden und empfangen . Vielleicht mit einer anderen Versionsnummer, damit Sie die Adressen nicht versehentlich verwechseln,

Vitalik hat bereits auf einen Grund hingewiesen, warum sich bei den meisten Frontier-Apps niemand die Mühe gemacht hat, dies zu tun . Aber es gibt noch einen anderen, viel relevanteren. Ethereum-Apps verfolgen nicht den Bitcoin-Ansatz, da es eine noch aussagekräftigere Art gibt, rohe Ethereum-Adressen darzustellen, die als ICAP bezeichnet wird und so aussieht: „XE7338O073KYGTWWZN0F2WZ0R8PX5ZPPZS“. Wie die standardmäßige Bitcoin-Adressdarstellung verwendet sie eine größere Auswahl an alphanumerischen Zeichen, um Platz zu sparen, und enthält eine Prüfsumme. Aber das ist noch nicht alles, Leute!

Zum einen ist die ICAP eine vollständig gültige internationale Bankkontonummer (oder IBAN). Das bedeutet, dass vorhandene Banksoftware es verstehen und damit interagieren kann.

Zum anderen muss das ICAP keine hexadezimalen Adressen verwenden. Stattdessen, sobald wir alle auf die Verwendung von Namereg-Verträgen umstellen, kann es einfach Ihre tatsächliche menschenlesbare Zeichenfolge verwenden, um so etwas wie "XE81ETHXREGJEFFCOLEMAN" zu erhalten, das immer noch mit Bankformaten übereinstimmt, sich aber möglicherweise tatsächlich merken kann!

Die Unterstützung für das ICAP wächst allmählich, auch innerhalb der offiziellen Ethereum-Kunden. Vielleicht wird es eines Tages nicht mehr so ​​sein, dass die häufigste Darstellung einer Ethereum-Adresse keine Prüfsumme hat!

Bearbeiten: Ab Februar 2016 hat Vitalik auch eine Übergangs-Prüfsummenmethode implementiert, bei der die Großschreibung der ansonsten nicht von Groß- und Kleinschreibung abhängigen Hex-Adresse verwendet wird, um einen zusätzlichen Schutz vor versehentlichen Fehlern zu bieten und gleichzeitig rückwärtskompatibel mit Software zu bleiben, die die Prüfsumme nicht unterstützt (und ignoriert die Groß-/Kleinschreibung). Jedem, der Software entwickelt, die die Eingabe oder Anzeige einer rohen hexadezimalen Kodierung unterstützt, wird dringend empfohlen, diese "Großbuchstaben-basierte Prüfsummen"-Methode zu implementieren .

Details:
Mit Vitaliks Methode ist die Adresse:

0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826

wird mit dem rohen binären Keccack-256-Hash der Adressbytes verglichen, und wo es Buchstaben an der gleichen entsprechenden Stelle wie ein "1"-Bit gibt, wird der Buchstabe groß geschrieben (Buchstaben, die der Stelle eines "0"-Bits entsprechen, bleiben übrig in Kleinbuchstaben, Zahlen bleiben unverändert). Das führt zu:

0xCd2a3d9f938e13Cd947eC05ABC7fe734df8DD826

Fast jeder nicht prüfsummenbewusste Code ignoriert einfach die obigen Fallunterschiede und interpretiert diese Darstellung identisch mit der ersten, sodass die Implementierung der auf Großbuchstaben basierenden Prüfsumme nur sehr wenige Nachteile hat.

"Ihr" Code müsste "die neue "Ethereum-Adresse" stillschweigend in rohe Hexadezimalform dekodieren", richtig? Können Sie das erläutern, weil „Sie vom Schreiben von Software“ anders zu sein scheinen als das „es“ in „es würde zusammenarbeiten …“?
Mir ist nicht ganz klar, was du fragst. Das „es“ bezieht sich auf die Software, die „Sie“ erstellen könnten. Welchen Teil sollte ich klären?
Danke, dein Kommentar reicht mir als Erklärung. (Ihre Antwort konnte interpretiert werden, dass Ethereum selbst bereits base58-codierte Adressen verarbeitet, wenn man sie selbst codiert. Vielleicht zur Klarstellung des Teils, dass man sowohl den Codierungs- als auch den Decodierungsteil schreiben müsste .)
Wow, was für eine unglaubliche archäologische Aufzeichnung von Overengineering. Ich bin froh, dass sie sich jetzt auf die etwas verworrene, auf Großbuchstaben basierende Prüfsumme geeinigt haben.

Hier die Antwort von V:

ätherisch

Ernsthaft? Es gibt keine Prüfsumme? Sie tippen ein Zeichen falsch und Ihr Äther ist für immer verloren? Verdammt ... TIL Ethereum hat eine massive Designaufsicht Permalink

vbutinEthereum

Sie dürfen keine Etheradressen verwenden; Sie sollten den Namereg und Äquivalente von Dingen wie bip70 verwenden.

Quelle: https://www.reddit.com/r/ethereum/comments/33l08f/do_ethereum_address_not_have_a_checksum_like/

Direkt von den Entwicklern - es scheint, dass Prüfsummen in zukünftigen Versionen entwickelt werden können:

taylorgerringEthereum

Ich denke, jeder möchte Prüfsummen und versteht die Vorteile, aber die Bereitstellung eines stabilen Netzwerkprotokoll-Upgrades ist jetzt von größter Bedeutung und war es von Anfang an. Zusätzliche Funktionalität in den Clients selbst wird hoffentlich bald nach dem Homestead-Hard-Fork folgen. :)

https://www.reddit.com/r/ethereum/comments/425js8/maybe_we_should_reconsider_checksums_as_default/

@eth stößt freundlicherweise hierher, da ENS jetzt live ist :)

Ethereum-Adressen haben jetzt eine Prüfsumme.

Siehe EIP55 für die Spezifikation und Updates zur Implementierung.

Die Verwendung ist optional, aber wenn Sie eine Adresse mit gemischter Groß-/Kleinschreibung sehen, sollte sie gemäß der folgenden Regel validiert werden:

Wandeln Sie die Adresse in Hex um, aber wenn die i-te Ziffer ein Buchstabe ist (dh es ist eine von abcdef), geben Sie sie in Großbuchstaben aus, wenn das 4*-te Bit des Hashs der Kleinbuchstaben-Hexadezimaladresse 1 ist, andernfalls in Kleinbuchstaben.

Nicht jeder benötigt dies: Beispielsweise lehnt Coinbase ungültige Adressen mit gemischter Groß-/Kleinschreibung nicht ab, sodass Sie bei einem Tippfehler immer noch Gelder von Coinbase ins Leere senden können.

Bei denen, die die Prüfsumme verwenden, überspringt die Eingabe einer ausschließlich in Kleinbuchstaben (oder manchmal ausschließlich in Großbuchstaben) geschriebenen Adresse manchmal den Prüfsummenprozess.

NEIN, nein, sie tun es nicht und ich habe gerade 75 £ verloren, weil sie es nicht tun. Wow, es hätten 75.000 sein können! Was Sie sagen, mag eines Tages wahr sein, aber im Moment ist es eine Lüge. Sie haben keine Prüfsummen in den üblichen Implementierungen und das falsche Kopieren eines einzelnen Zeichens führt zu einem stillen Verlust von Geldern. Dies ist extrem amateurhaft. Aaah!

Dein Verlust tut mir leid. Es gibt eine optionale Prüfsumme, die unter EIP-55 implementiert ist, aber es liegt an der Börse oder dem Wallet, sie zu implementieren, und viele tun dies nicht. Ursprünglich sollten Rohadressen nicht von Menschen verwendet werden, daher das Fehlen einer Prüfsumme im ursprünglichen Design. (Geben Sie niemals eine Rohadresse von Hand ein. Menschen können nicht gut mit Hexadezimalzahlen umgehen. Kopieren und einfügen Sie immer, wo Sie können. Wenn Sie nicht kopieren und einfügen können, suchen Sie nach Brieftaschen, die die Verwendung von QR-Codes oder 24-Wörter-Codes zulassen Mnemonik.)