Ableitung der Ethereum-Adresse von der Bitcoin-Adresse

Soweit ich weiß, sind die privaten Schlüssel von Ethereum mit den privaten Schlüsseln von Bitcoin kompatibel, wie in Kann ich denselben privaten Schlüssel für Ethereum und Bitcoin verwenden? .

JEDOCH

Kann ich eine öffentliche Ethereum- Adresse von einer öffentlichen Bitcoin - Adresse ableiten? Ohne Zugriff auf den privaten Schlüssel . Damit könnte der gleiche private Bitcoin-Schlüssel hinter der Adresse auch im Ethereum-Netzwerk verwendet werden.

Haben Sie eine Quelle für die Behauptung, dass die privaten Schlüssel kompatibel sind? Das habe ich noch nie gehört. Ich sage nicht, dass dies nicht der Fall ist, aber ich würde daran interessiert sein, das zu lernen.
Bitte nominieren Sie diese Frage zur Wiedereröffnung, da es bei dieser Frage nicht um die Übertragbarkeit des privaten Schlüssels geht .
Ich habe für die Wiedereröffnung nominiert, aber der Titel wurde nicht aktualisiert, und ich denke, dies ist fast ein Duplikat von ethereum.stackexchange.com/questions/3542/… Die Antwort ist nein, das können Sie nicht, weil Sie den privaten Schlüssel benötigen, um die Öffentlichkeit abzuleiten Schlüssel, und leiten Sie dann die Adresse ab. BEARBEITEN: Die Kommentare von @Edmund sind vollständiger: Sobald Bitcoins ausgegeben wurden, wird der öffentliche Schlüssel enthüllt und daraus kann eine Ethereum-Adresse abgeleitet werden.
Sieht gut aus, ich werde meine Kommentare als richtige Antwort aufschreiben.

Antworten (2)

Eine Bitcoin-Adresse wird erstellt von:

privater Schlüssel -> öffentlicher Schlüssel -> Hash

Eine Ethereum-Adresse wird erstellt von:

privater Schlüssel -> öffentlicher Schlüssel -> Hash -> wirf einen Teil davon weg und behalte den Rest

Das bedeutet, dass die Adresse allein nicht ausreicht, um Ihnen die Adresse vom anderen System zu geben, aber wenn Sie den öffentlichen Schlüssel haben, können Sie sowohl die Bitcoin-Adresse als auch die Ethereum-Adresse erstellen.

Das Problem besteht darin, den öffentlichen Schlüssel zu erhalten.

Der öffentliche Schlüssel kann weder bei Bitcoin noch bei Ethereum aus der Adresse abgeleitet werden. Sowohl bei Bitcoin als auch bei Ethereum hat das Durchführen einer Transaktion jedoch zur Folge, dass der öffentliche Schlüssel in dem Netzwerk veröffentlicht wird, mit dem Sie Transaktionen durchführen: Bei Ethereum ist er aus der Signatur wiederherstellbar. In Bitcoin, obwohl es aus der Signatur wiederherstellbar ist, wird es auch ausdrücklich als Teil der Transaktionsausgaben gesendet. (Bitcoin-Transaktionen sind größer als sie sein müssen; Satoshi war wahrscheinlich nicht so groß in Kryptographie.) Sobald ein Benutzer also eine Transaktion von einer Adresse im Bitcoin-Netzwerk oder im Ethereum-Netzwerk gesendet hat, können Sie den öffentlichen Schlüssel von ihm abrufen Transaktion ausgeben und daraus die Adresse für das andere Netzwerk ableiten.

Wenn das Ziel darin besteht, dem Besitzer einer Bitcoin-Adresse Assets im Ethereum-Netzwerk zu senden, haben Sie auch eine andere Möglichkeit: Sie können einen Vertrag abschließen, der in der Lage ist, den Besitz der Bitcoin-Adresse zu verifizieren, sobald der Besitzer ihm seinen öffentlichen Schlüssel gibt. Anstatt den öffentlichen Schlüssel zu benötigen, um die Benutzerressourcen im Ethereum-Netzwerk zu senden, können Sie auf diese Weise die Notwendigkeit, den öffentlichen Schlüssel zu erhalten, verschieben, bis der Benutzer versucht, die Vermögenswerte auszugeben. Tatsächlich schließen Sie einen Vertrag ab, damit Sie eine Bitcoin-Adresse im Ethereum-Netzwerk verwenden können. Das Abrufen der Gelder erfordert jedoch vom Empfänger, nicht standardmäßige Dinge zu tun, wie z.

Wenn ich also eine Ethereum-Signatur (von web3.personal.sign) einer Nachricht habe (und ich weiß, um welche Nachricht es sich handelt), kann ich den öffentlichen Schlüssel der Adresse erhalten. Und wenn ich dann den öffentlichen Schlüssel von Ethereum kenne, kann ich die Bitcoin-Adresse daraus bekommen. Wenn ich eine Bitcoin-Signatur einer Nachricht habe, kann ich auch den öffentlichen Bitcoin-Schlüssel abrufen und ihn zurück in die Ethereum-Adresse konvertieren. Ist das richtig? Wie macht man das? Ich möchte dies mit Off-Chain-Methoden tun, also nur eine bekannte Nachricht signieren.

Ich glaube, dass sowohl Bitcoin als auch Ethereum dieselbe elliptische Kurve (SECP256K1) für die Erstellung öffentlicher Schlüssel verwenden – Sie sollten also in der Lage sein, Ihren privaten Bitcoin-Schlüssel direkt zu portieren und damit dieselbe Adresse in der Ethereum-Blockchain zu erstellen.

Abgesehen davon werden Benutzer in der nächsten „Version“ von Ethereum (Metropolis) in der Lage sein, „ihr eigenes Sicherheitsmodell zu definieren“ . Wenn Sie sich also davor schützen möchten, glaube ich, dass Sie dazu in der Lage sein werden zu - obwohl ich nicht sicher bin, warum das der Fall wäre.

Ich weiß, dass Sie den privaten Schlüssel portieren können, aber bei dieser Frage geht es nicht um den privaten Schlüssel. Es geht darum, ob es möglich ist, eine Ethereum-Adresse basierend auf einer Bitcoin-Adresse zu erstellen, ohne den privaten Schlüssel zu sehen.
Bitte nominieren Sie die Frage zur Wiedereröffnung.
Antwort hier, weil fälschlicherweise geschlossen: Wenn Sie nur eine Bitcoin-Adresse (gehashter öffentlicher Schlüssel) haben, nein. Sie benötigen den öffentlichen Schlüssel, um eine Ethereum-Adresse zu erstellen. Sobald es zum Ausgeben von Bitcoin verwendet wurde, können Sie den öffentlichen Schlüssel aus der Blockchain abrufen und eine Ethereum-Adresse erstellen. Auch wenn Sie den öffentlichen Schlüssel nicht bekommen können, um eine Ethereum-Adresse zu erstellen, können Sie einen Vertrag abschließen, der eine Bitcoin-Adresse überprüft und Leute auf diese Weise Geld an eine Bitcoin-Adresse senden lässt. Das Abrufen der Gelder erfordert jedoch, dass der Empfänger nicht standardmäßige Dinge tut, wie z. B. das Senden seines öffentlichen Schlüssels an diesen speziellen Vertrag.
Danke @EdmundEdgar - Funktioniert es auch in die andere Richtung - wenn ich die Ethereum-Transaktion kenne, kann ich eine öffentliche Bitcoin-Adresse für den privaten Schlüssel generieren, der die Transaktion gesendet hat?
Ja, es ist im Grunde dasselbe: Wenn Sie nur eine Ethereum-Adresse haben, können Sie keine Bitcoin-Adresse erstellen, weil Sie nicht den gesamten öffentlichen Schlüssel haben. (Ethereum hasht den öffentlichen Schlüssel nicht, um eine Adresse zu erstellen, sondern wirft einen Teil davon weg.) Durch das Senden einer signierten Transaktion an das Ethereum-Netzwerk kann jedoch der öffentliche Schlüssel wiederhergestellt werden. (Ethereum ist hier effizienter als Bitcoin: In Bitcoin müssen Sie den öffentlichen Schlüssel senden, aber tatsächlich ist er aus der Signatur wiederherstellbar, was Ethereum ausnutzt, um Platz zu sparen.) Sobald Sie den öffentlichen Schlüssel haben, können Sie einen Bitcoin erstellen die Anschrift.