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
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.
Mikko Ohtamaa
Dave Schotte
Ismael