Wie kann ich einen mnemonischen Seed mit einem fehlenden Wort wiederherstellen?

Weiß jemand, wie man eine Ethereum-Wallet aus einem Seed wiederherstellt, dem nur ein Wort fehlt?

Ich bin in der Lage, ein Programm zu schreiben, das die möglichen Samen auf etwa 1500 Kandidaten eingrenzt, die als gültig gelten, aber ich bin mir nicht ganz sicher, was der nächste Schritt ist.

Jedem Seed sind meines Wissens unendlich viele Adressen zugeordnet. Wie finde ich also heraus, welche meine Brieftasche hat? Gibt es eine Möglichkeit, in diesem Leben die Hierarchie jedes Seeds nach meiner Adresse zu durchsuchen? Gibt es etwas, das ich bei der Funktionsweise von HD-Geldbörsen falsch verstehe?

Nur um sicherzugehen, haben Sie die möglichen Wörter anhand der Prüfsumme bereits eingegrenzt, oder? Das ist wesentlich schneller als der Schritt, Adressen tatsächlich abzuleiten, um zu prüfen, ob Sie die richtige Seed-Phrase gefunden haben, also sollten Sie das zuerst tun. 1500 Kandidaten erscheinen angesichts der Prüfsumme zu hoch. (Wenn Sie die Prüfsumme noch nicht verwendet haben, um die Dinge einzugrenzen, kann ich in einer Antwort näher darauf eingehen.)

Antworten (1)

Ich gehe davon aus, dass Sie wissen, welche Wallet Sie zuvor verwendet haben und dass Sie zuvor Ether oder Token mit der Wallet erhalten haben – oder zumindest irgendwo eine Empfangsadresse gepostet haben (wenn Sie nicht erwarten, dass Ihnen jemand Ether/Token sendet und nichts gespeichert habe, sehe ich nur ein paar begrenzte Verwendungen, um nicht einfach einen neuen Seed zu verwenden).

Jedes Brieftaschenprogramm, das Mnemonik unterstützt, verwendet einen Schlüsselableitungspfad – effektiv eine deterministische Methode zum Generieren von Adressen und entsprechenden privaten Schlüsseln aus einer Mnemonik. Mehrere Wallets verwenden denselben Pfad, aber das ist unwichtig. Wichtig ist, dass Sie das zuvor verwendete Wallet kennen (und damit zumindest implizit Zugriff auf den Schlüsselableitungspfad haben). Wenn Sie zuvor Ether oder Token an einer Adresse erhalten oder eine Adresse zum Empfang von Ether/Token gepostet haben, dann kennen (oder kennen) Sie eine entscheidende Information: eine Ethereum-Adresse! Sicher, jede Mnemonik kann viele Adressen generieren, aber aller Wahrscheinlichkeit nach ist jede Adresse, die Sie verwendet haben, eine der ersten wenigen in der Sequenz, die mit Ihrer Mnemonik + dem Schlüsselableitungspfad generiert wurde. Das heißt, Ihr mnemonischer + Schlüsselableitungspfad generiert eine Folge von Adressen, A1, A2, A3...; Im Allgemeinen würden Sie die Adressen der Reihe nach verwenden. Daher ist es wahrscheinlicher, dass Sie A1 verwendet haben, um Ether/Token zu erhalten, als A2, und ebenso, dass Sie A2 vor A100000 verwendet haben. Daher muss A100000 nicht überprüft werden.

Jetzt können Sie mit jedem Kandidatenmnemonik mit Ihrem fehlenden Wort die ersten hundert Adressen unter Verwendung des Schlüsselableitungspfads generieren. Wenn Sie eine Empfangsadresse kennen, können Sie prüfen, ob diese Adresse eine der generierten Adressen ist. Wenn Sie keine damit verbundene Adresse kennen, aber zuvor Ether/Token erhalten haben, können Sie den Kontostand jeder dieser Adressen überprüfen, um zu sehen, ob sie Ether/Token enthalten – oder ob Transaktionen mit der Adresse vorhanden sind durchgeführt worden. Wenn eine der Adressen nicht leer ist, stammt sie entweder von Ihrer Mnemonik (Herzlichen Glückwunsch! Sie haben Ihre Mnemonik wiedererlangt!) oder es ist eine ungewöhnliche Kollision mit dem Konto eines anderen (Herzlichen Glückwunsch! Sie sollten einen Lottoschein kaufen!).