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.
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).
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).
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-PubkeyHash
schon 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.
Publickey --> encode (eg AES?) --> add prefix = address
und der Absender kehrt diesen Vorgang um?
Ariel Hürde
José Crespo Barrios
Pieter Wuille
dodgy_coder