Wie erhält ein Wallet den öffentlichen Schlüssel von einer Adresse?

Ich hatte den Eindruck, dass Adressen nur verschlüsselte, gehashte öffentliche Schlüssel mit einem Präfix sind und dass nur der öffentliche Schlüssel (nicht die Adresse) auf der Blockchain für Transaktionen verwendet wird. Aber wenn der öffentliche Schlüssel gehasht ist, wie erhält die Brieftasche den öffentlichen Schlüssel von der Adresse, um eine Transaktion zu erstellen?

Ich habe einige Nachforschungen angestellt, die meine Zweifel bestätigten, dass dies nicht möglich ist . Ich habe mich also gefragt, wie die Brieftasche eine Transaktion erstellt, wenn sie nicht über den öffentlichen Schlüssel verfügt.

EDIT: Ich meine, wie bekommt jemand, der versucht, 10 BTC zu senden, den öffentlichen Schlüssel des Empfängers, um den öffentlichen Schlüssel von den Empfängern zu adressieren. Ich verstehe das kryptografische Element von privaten und öffentlichen Schlüsselpaaren und wie Bitcoin ausgegeben wird, nur nicht, wie der öffentliche Schlüssel des Empfängers von der Adresse abgeleitet wird. Was ich gesehen habe, ist, dass (am häufigsten) Transaktionen an Public Key Hash (P2PKH) gezahlt werden, anstatt an das, was ich ursprünglich dachte, dass alle TXNs an Public Key (P2PK) gezahlt werden.

Antworten (4)

Einfach gesagt, Sie tun es nicht. Die Adresse ist ein Hash des öffentlichen Schlüssels mit einer Prüfsumme und einem Präfix (1). Der Grund, warum die Adressen nicht nur öffentliche Schlüssel sind, ist unbekannt, Sie müssten Satoshi danach fragen, aber es wird sie wahrscheinlich kürzer machen. BTC verfügt zwar über P2PK, wird jedoch nicht häufig verwendet, da der öffentliche Schlüssel viel länger als eine Adresse ist. Hoffe das hilft!

Vielleicht verwirrt Sie die Formulierung "die Brieftasche", da nur die Brieftasche des Empfängers den öffentlichen Schlüssel kennen muss und er ihn hat, weil er die Adresse überhaupt erst erstellt hat.

Im Folgenden gehe ich von einer Standardadresse 1... aus (pay to pubkey hash). Das ist nicht der einzige Adresstyp, aber ähnliche Antworten gelten für jeden Adresstyp.

Im normalen Arbeitsablauf sind zwei Wallets beteiligt. Nennen wir sie Susi (die Absenderin) und Rudy (die Empfängerin).

  • Rudy generiert einen privaten Schlüssel x.
  • Rudy berechnet den öffentlichen Schlüssel zu x, genannt P.
  • Rudy berechnet die Adressen A, die P entsprechen, indem er sie hasht.
  • Rudy sendet A an Suzy (indem er es persönlich sendet oder auf eine Website stellt oder als QR-Code zeigt oder ...).
  • Suzy konstruiert eine Transaktion, die eine an A adressierte Ausgabe enthält. Suzy hat keine Ahnung, welchem ​​öffentlichen Schlüssel A entspricht, aber es ist ihr auch egal. Diese Adresse kodiert wirklich "erfordert einen öffentlichen Schlüssel und eine für diesen Schlüssel gültige Signatur, und der Hash des öffentlichen Schlüssels muss A sein".
  • Suzy sendet die Transaktion im Netzwerk, wo sie von Minern abgeholt wird, die sie in einen Block legen und die Übertragung abschließen.
  • Wenn Rudy nun die Münzen ausgeben möchte, die er von Suzy erhalten hat, muss er die Bedingung erfüllen, die Suzy bei der Transaktion gestellt hat. Dies erfordert den öffentlichen Schlüssel P (da dies der einzige bekannte öffentliche Schlüssel ist, dessen Hash A ist) und eine Signatur, die mit dem privaten Schlüssel x erstellt wurde (der der einzige private Schlüssel ist, der Signaturen erstellen kann, die für P gültig sind). Zum Glück hat Rudy sowohl x als auch P, weil er derjenige war, der sie erstellt hat.
Danke, ich dachte immer, Transaktionen wären P2PK.
Nur um zu bemerken, dass der Pubkey-Hash nicht die Adresse ist. Die Adresse ist der doppelte Hash des Pubkeys [ dh pubkeyhash=sha256(pubkey), address=sha256(pubkeyhash)=sha256(sha256(pubkey))=sha256d(pubkey) ]
@Jose In der allgemeinen Terminologie bezieht sich "Pubkey-Hash" auf SHA256 + RIPEMD160
Ich hatte die gleiche Frage, wie Wallets den Pub-Key-Hash von einer Adresse erhalten. Hier ist ein nettes Diagramm, das die Möglichkeit zeigt, von einer Bitcoin-Adresse zu und von einem Public-Key-Hash zu wechseln – learnmeabitcoin.com/guide/p2pkh

Ich hatte den Eindruck, dass Adressen nur verschlüsselt sind

Ja, Adressen sind kodiert (Base58 oder Base32), um die menschliche Lesbarkeit zu verbessern. Sie enthalten eine Prüfsumme zum Schutz vor Fehlern bei der Adressübertragung und -eingabe. Eine Bitcoin-Adresse kann den Eigentümer eines privaten/öffentlichen Schlüsselpaars darstellen, oder sie kann jedes andere Skript darstellen, das durch P2SH oder P2WSH dargestellt werden kann.

Aber wenn der öffentliche Schlüssel gehasht ist, wie erhält die Brieftasche den öffentlichen Schlüssel von der Adresse, um eine Transaktion zu erstellen?

Um eine Transaktion zu erstellen, die Ihre Bitcoins ausgibt, benötigen Sie Zugriff auf den privaten Schlüssel. Das liegt daran, dass fast alle Transaktionen die Signatur des privaten Schlüssels enthalten müssen, den Sie besitzen, um die gesperrten Gelder auszugeben.

Sie können jedoch eine Watch-only-Wallet haben, falls Sie Bedenken haben, private Schlüssel auf einem mit dem Netzwerk verbundenen Gerät zu verwenden. Mit einer Watch-Only-Wallet können Sie beobachten, was mit diesen Cold-Storage-Bitcoins passiert, ohne die privaten Schlüssel der Online-Welt preiszugeben. Dazu gehört das Importieren Ihres öffentlichen Hauptschlüssels auf Kontoebene, mit dem Sie verschiedene Adressen für dieses Konto erstellen können. Mit dem öffentlichen Hauptschlüssel auf Kontoebene können Sie Empfangs-/Änderungsadressen erstellen, da Sie Zugriff auf die öffentlichen Schlüssel haben, die zum Erstellen dieser Adressen verwendet werden. Die Software hasht einfach die öffentlichen Schlüssel und kodiert sie nach Belieben (P2WPKH oder P2PKH).

@ArielHurdle Sie können den öffentlichen Schlüssel nicht von der Adresse ableiten. Adressen sind meistens hash160öffentliche Schlüssel und Hashes sind mathematische Einwegfunktionen. Wenn Sie eine P2PK-Transaktion erstellen möchten, müssen Sie den Zahlungsempfänger direkt nach dem öffentlichen Schlüssel fragen.

Es gibt verschiedene Arten von Ausgängen, an die eine Transaktion zahlen kann. Der Einfachheit halber erkläre ich es am Beispiel einer Pay-to-PubkeyHash (P2PKH)-Ausgabe. Ich denke darauf basiert deine Frage.

Mit einem P2PKH-Ausgang liegen Sie richtig. Eine Adresse ist nur ein verschlüsselter und gehashter öffentlicher Schlüssel mit einem Präfix. Sie können das Präfix entfernen und die Codierung umkehren, aber Sie können das Präimage für den Hash (in unserem Fall den öffentlichen Schlüssel) nicht finden.

Aber das müssen Sie nicht. Wie der Name Pay-to-PubkeyHashschon sagt, zahlen Sie bei Ihrer Transaktion nur den Hash des öffentlichen Schlüssels. Der Empfänger kann den öffentlichen Schlüssel ableiten, solange er im Besitz des entsprechenden privaten Schlüssels ist, falls erforderlich.

Danke, also verwenden die Blockchain-Transaktionsaufzeichnungen nicht den öffentlichen Schlüssel des Empfängers, sondern den Hash des öffentlichen Schlüssels? und dann nehme ich an, wenn Sie Ihr Guthaben abrufen, scannen Sie die Blockchain mit Ihrer Adresse und nicht mit Ihrem öffentlichen Schlüssel?
Es gibt verschiedene Arten von Transaktionen. Für P2PKH wird nur der öffentliche Schlüssel-Hash bei der Zahlung an eine Adresse mitgeliefert (jemand, der eine P2PKH-Ausgabe ausgibt, enthüllt jedoch den öffentlichen Schlüssel). Ein Wallet kennt die privaten Schlüssel, berechnet die öffentlichen Schlüssel und deren Hashes und „scannt“ danach.
@ oxb10c ok, für P2PKH benötigt die Brieftasche keinen öffentlichen Schlüssel, aber was ist mit P2PK-Transaktionen? Wie sendet die Brieftasche diese?
Für P2PK hashen Sie den öffentlichen Schlüssel nicht in der Adresse, sondern codieren und fügen ein Präfix hinzu.
Ich verstehe, also würde der Empfänger seine Adresse so generieren Publickey --> encode (eg AES?) --> add prefix = addressund der Absender kehrt diesen Vorgang um?
Es gibt im Bitcoin-Protokoll nirgendwo eine Verschlüsselung. Bei P2PK fügt der Sender den öffentlichen Schlüssel direkt in die Gutschrifttransaktion ein, und um ihn auszugeben, stellt der Empfänger eine Signatur bereit. Aber es gibt keine Adressen für P2PK-Ausgaben, also braucht der Sender einen anderen Weg, um den vollständigen öffentlichen Schlüssel des Empfängers herauszufinden. Solche Transaktionen sind heute sehr ungewöhnlich.