Was ist das 0x, das ich um Ethereum herum sehe? Zum Beispiel sehe ich Adressen, die mit 0x beginnen

Ich sehe eine Reihe von Dingen in Ethereum, die mit 0x beginnen, zum Beispiel Adressen. Andere Beispiele sind in der Geth-Konsole, JSON-RPC, web3.js. Was ist das 0x und wozu dient es?

Antworten (1)

Das Präfix „0x“ bedeutet hexadezimal und ist eine Möglichkeit, Programmen, Verträgen und APIs mitzuteilen, dass die Eingabe als hexadezimale Zahl interpretiert werden soll (wir werden zu hex abkürzen).

Beispielsweise ist die (Dezimal-)Zahl 18 „12“ in Hex. Um mögliche Verwechslungen mit der Zahl 12 auszuschließen, macht das Hinzufügen von 0x am Anfang deutlich, dass 0x12 hexadezimal ist.

Hex ist in gewisser Weise weniger menschenfreundlich, hilft aber in anderer Hinsicht, zum Beispiel ist Hex eine kürzere Art, große Zahlen auszudrücken.

Die Ethereum-Adresse, die Sie haben, ist nur eine Nummer, aber „dahinter“ haben Sie einen privaten Schlüssel, sodass nur Sie Ihren Ether ausgeben können. Verträge haben auch jeweils eine Adresse. Sie können alle in Dezimalzahlen umgewandelt werden, probieren Sie es aus und Sie werden sehen, dass die Dezimalzahlen viel länger sind: Stellen Sie sich vor, wie viel schwieriger es wäre, sich Blockchain-Explorer anzusehen, wenn sie Dezimalzahlen anstelle von Hex verwenden würden.

Der Zweck des 0x besteht also hauptsächlich darin, Programmen mitzuteilen, dass die Eingabe hexadezimal ist. Aber 0x kann Menschen auch sagen, dass das, was sie lesen, Hex ist. Da Adressen und Transaktions-Hashes in Hex angezeigt werden, könnten Blockchain-Explorer überall 0x setzen, um klarer zu machen, dass sie Hex sind. Aber da normale Benutzer nicht wirklich wissen müssen, ob eine Adresse hexadezimal ist oder nicht, lassen die Explorer sie in ihren Benutzeroberflächen weg. Für API-Ergebnisse kann jedoch die Verwendung von 0x erforderlich sein: Wenn Geth Ihr Guthaben als 0x12 zurückgibt, soll das deutlich machen, dass Ihr Guthaben tatsächlich 18 Wei beträgt.

Noch eine Anmerkung: Einige Daten, wie z. B. der Kontostand, können als Dezimalzahl sinnvoller sein, daher sollte immer, wenn sie als Hex dargestellt wird, unbedingt das 0x verwendet werden. Aber Daten wie Transaktions-Hashes und Adressen machen wenig Sinn, wenn sie als Dezimalzahl angegeben werden. Da der einzige praktische Weg, sie anzugeben, hexadezimal ist, können Sie das 0x weglassen. Versuchen Sie beispielsweise, der eth.getTransactionAPI in Geth einen Transaktions-Hash mit und ohne 0x bereitzustellen, und Sie erhalten die gleichen Ergebnisse.