Überprüfung der von Bcoin signierten Nachricht im Smart Contract von Ethereum

Ich möchte die Option zum Überprüfen der Nachrichten untersuchen, die in Bitcoin-Wallets in Ethereum Smart Contracts signiert wurden.

  • Ethereum Smart Contract erhält eine Liste von Bitcoin-Adressen

  • Ethereum Smart Contract kann überprüfen, ob der eingehende Funktionsaufruf msg, v, r, s mit einer der zuvor angegebenen Bitcoin-Adressen übereinstimmt

Nun stellt sich die Frage, dass der eingebaute ecrecover()nur eine resultierende Ethereum-Adresse ausgibt und ich nicht weiß, wie ich von hier aus fortfahren könnte.

  • Kann eingebautes ecrecover() mit Bitcoin-Adressen umgehen

  • Gibt es eine Möglichkeit, die Bitcoin-Adresse der Ethereum-Adresse 1:1 zuzuordnen?

  • Kann das integrierte ecrecover() die vollständige Ausgabe öffentlicher Schlüssel liefern?

  • Wenn das eingebaute ecrecover() nicht funktioniert, kann ich meine eigene Wiederherstellung schreiben, die eine Bitcoin-Adresse ausgibt und angemessen Gas verbraucht?

  • Kann ich Bitcoin-Adressen (oder öffentliche Schlüssel) irgendwie in das mit Ethereum ecrecover() kompatible Format vorverarbeiten?

... die sich alle auf eine Frage beziehen

  • Benötige ich den vollständigen öffentlichen Bitcoin-Schlüssel als Ausgangspunkt oder reicht die Bitcoin-Adresse aus?

Antworten (1)

Sowohl Ethereum als auch Bitcoin verwenden dieselbe elliptische Kurve für private Schlüssel secp256k1. Der Unterschied besteht darin, dass Ethereum Adressen als hexadezimal und Bitcoin als base58 formatiert.

Es kann so gemacht werden, dass ecrecover für beide funktioniert, es gibt die rohen 20 Bytes ohne Adressformatierung zurück.

Ein mögliches Problem ist, dass Ethereum keccak256 zum Signieren verwendet und Bitcoin-Bibliotheken normalerweise sha256 verwenden, sodass Sie Ethereum-Bibliotheken zum Signieren verwenden müssen.

Danke Ismael. Das sind genau einige Hinweise, die ich brauchte. Das Problem hier ist, dass ich davon ausgegangen bin, dass ich die vorhandene Bitcoin-Wallet-Signatur-Benutzeroberfläche für die Nachricht verwenden und sie dann auf der Ethereum-Seite wiederherstellen könnte.
Ismael, ich habe eine heikle Bitte. Sie haben geschrieben "verwendet dieselbe Art von elliptischer Kurve", aber wäre "verwendet genau dieselbe elliptische Kurve" nicht genauer?
@DaveScotese Danke, du hast Recht, beide verwenden dieselbe elliptische Kurve, es sollte jetzt behoben sein.