Ethereum-Adresse vs. öffentlicher Schlüssel

Ich erstelle eine Ethereum-Brieftasche und bin etwas verwirrt mit dem Konzept von öffentlichem Schlüssel und Adresse. Ich verstehe, dass die Adresse eine gehashte Version des öffentlichen Schlüssels ist, aber wenn ich eine neue Brieftasche generiere, habe ich 3 Datenfelder: privater Schlüssel (zum Signieren einer Transaktion), Adresse (zum Empfangen einer Transaktion), Öffentlich Taste (???)

Was ist der praktische Nutzen des öffentlichen Schlüssels?

Antworten (4)

Wenn Sie eine neue Brieftasche erstellen, erstellen Sie ein Konto. Jedes Konto hat einen privaten Schlüssel und einen öffentlichen Schlüssel und wird durch eine Adresse indiziert, an die Sie die Transaktion senden.

Die Adresse sind die letzten 20 Bytes des Hashs des öffentlichen Schlüssels.

Laut Dokumentation:

Jedes Konto wird durch ein Schlüsselpaar, einen privaten Schlüssel und einen öffentlichen Schlüssel, definiert. Konten werden anhand ihrer Adresse indiziert, die aus dem öffentlichen Schlüssel abgeleitet wird, indem die letzten 20 Bytes genommen werden. Jedes Paar aus privatem Schlüssel und Adresse ist in einer Schlüsseldatei verschlüsselt.

http://ethdocs.org/en/latest/account-management.html?highlight=address#keyfiles

Sie können diesen Beitrag nützlich finden:

https://kobl.one/blog/create-full-ethereum-keypair-and-address/

Hoffe das hilft.

"Die Adresse sind die letzten 20 Bytes des öffentlichen Schlüssels." - Du meinst einen Hash der letzten 20 Bytes, richtig?
@raphadko Ich glaube, es sind tatsächlich die letzten 20 Bytes eines Hashs des vollständigen öffentlichen Schlüssels.
Ja, Sie haben Recht, @raphadko sind die letzten 20 Bytes des Hashs, mit dem ich die Antwort aktualisieren werde
AFAICS beantwortet die Frage nicht, was die praktische Verwendung des öffentlichen Schlüssels ist.

Kein spezifischer Anwendungsfall des öffentlichen Schlüssels. Da normalerweise nach dem öffentlichen Schlüssel (Adresse) gefragt werden kann, sagen wir informell manchmal trotz der Adresse öffentlicher Schlüssel.

Eine Ethereum-Adresse repräsentiert ein Konto. Für externe Konten wird die Adresse aus den letzten 20 Bytes des öffentlichen Schlüssels abgeleitet, der das Konto steuert, z. B. cd2a3d9f938e13cd947ec0i8um67fe734df8d8861. Dies ist ein hexadezimales Format (Basis-16-Notation), das häufig explizit durch das Voranstellen von 0x an die Adresse angegeben wird. Da jedes Byte der Adresse durch 2 Hexadezimalzeichen dargestellt wird, ist eine vorangestellte Adresse 42 Zeichen lang.

Lesen Sie mehr: Konten, Adressen, öffentliche und private Schlüssel und Token

Nun, Transaktionen werden mit dem privaten Schlüssel dieses Benutzers signiert, daher müssen die Miner Zugriff auf den passenden öffentlichen Schlüssel haben, um die Transaktionssignaturen überprüfen zu können. Da ist dein Anwendungsfall :)

Das Sicherheitsmodell von Ethereum stützt sich auf Elliptische-Kurven-Kryptografie (ECC), um Transaktionen zu signieren und zu validieren.

In ECC werden öffentliche und private Schlüssel zum Signieren und Verifizieren verwendet. Es hat kein Konzept von Adressen. Beim Signieren und Verifizieren von Transaktionen benötigen Sie keine Adressen.

Das ursprüngliche Bitcoin-Papier erwähnt überhaupt keine Adressen. Sie erscheinen später, um sie leichter zu merken (komprimierter öffentlicher Schlüssel sind 32 Bytes im Vergleich zu 20 Bytes für die Adresse).

Jetzt können Sie den öffentlichen Schlüssel vollständig vor der Benutzerinteraktion verbergen und haben nur noch den privaten Schlüssel und die Adressen. Aber intern verwendet Ethereum sie weiterhin, um Transaktionen zu validieren.

Ich glaube, es gibt keinen praktischen Nutzen des öffentlichen Schlüssels. Aus diesem Grund wird der öffentliche Schlüssel in den meisten Kontoerstellungstools dem Benutzer nicht einmal angezeigt.

(Sie könnten den öffentlichen Schlüssel verwenden, um eine Nachricht so zu verschlüsseln, dass nur der Inhaber des privaten Schlüssels sie entschlüsseln kann, aber dies wird in Ethereum normalerweise nicht gemacht.)

ecdsa wird nicht wirklich zum Verschlüsseln / Entschlüsseln verwendet, sondern zum Signieren und Verifizieren. Eher sowas wie ECIES ist.
Ich stimme Ihnen zu, aber ich bin mir nicht sicher, was die Relevanz Ihres Kommentars ist. Meine Antwort erwähnte ECDSA nicht.
Sind Ethereum-Schlüssel nicht ECDSA?
Ethereum-Schlüssel sind Elliptische-Kurven-Kryptografieschlüssel. ECDSA und ECIES sind Algorithmen, die solche Schlüssel verwenden.