Ist es möglich, den öffentlichen Schlüssel von der ETH-Adresse abzuleiten?

Ziel (keine XY-Frage stellen) :

  • ETH an eine Adresse senden
  • web3.jsSkript, das es überwacht und auf die Transaktion reagiert
  • wenn msg.value > 0.1 etherdann...
  • ...eine Datei mit dem öffentlichen Schlüssel des verschlüsseln msg.senderund in IPFS veröffentlichen
  • Nur der ursprüngliche ETH-Absender (der einen privaten Schlüssel hat) kann die Datei entschlüsseln

Betrachtet man die Frage: Wie werden Ethereum-Adressen generiert?

  1. Beginnen Sie mit dem öffentlichen Schlüssel (128 Zeichen / 64 Bytes)

  2. Nehmen Sie den Keccak-256-Hash des öffentlichen Schlüssels. Sie sollten jetzt eine Zeichenfolge mit 64 Zeichen / 32 Bytes haben. (Hinweis: SHA3-256 wurde schließlich zum Standard, aber Ethereum verwendet Keccak)

  3. Nehmen Sie die letzten 40 Zeichen / 20 Bytes dieses öffentlichen Schlüssels (Keccak-256). Oder anders gesagt, lassen Sie die ersten 24 Zeichen / 12 Bytes weg. Diese 40 Zeichen / 20 Bytes sind die Adresse. Wenn 0x vorangestellt wird, wird es 42 Zeichen lang.

Der öffentliche Schlüssel zur Adressierung ist eine Einwegfunktion. Wie können wir also das System so gestalten, dass es das Ziel erreicht?

Antworten (1)

Da Sie eine Nachricht (die Transaktion, die Ether sendet) und eine Signatur (die Signatur der Transaktion) haben, können Sie den zugehörigen öffentlichen Schlüssel wiederherstellen.

Wenn Sie beispielsweise diese Antwort Get public key of any ethereum account verwenden , können Sie den öffentlichen Schlüssel mit einem Nachrichten-Hash und der Signatur wiederherstellen.