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.
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.
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.
Thomas JayRush
q9f
Mikko Ohtamaa
eth
Edmund Edgar