Wenn ein HD Wallet zum Beispiel 1.000 Konten generiert.
Wie würden sie alle Guthaben des Kontos verfolgen, wenn jemand zum Beispiel auf das 455. Konto einzahlt, würden sie das Guthaben der Brieftasche aktualisieren wollen.
Ich stelle mir vor, dass das Speichern aller Konten nicht effizient wäre, und das Abfragen der Blockchain oder einer API für alle 1.000 wäre auch nicht effizient.
Verwenden eines isolierten Anwendungsfalls:
Wenn eine API-HD-Brieftasche 1.000 Adressen generiert, kann sie nicht jedes Mal, wenn der Benutzer das Telefon einschaltet, alle 1.000 abfragen, und sie kann dies nicht regelmäßig tun, da es ein Engpass wäre, wenn alle denselben Endpunkt erreichen.
Ich erinnere mich, dass blockchain.info es Ihnen ermöglicht, mit Ihrem erweiterten öffentlichen Schlüssel abzufragen. Ich stelle mir vor, dass sie die Konten auf die gleiche Weise mit dem Lückenlimit durchlaufen.
Im Allgemeinen verwenden HD Wallets die folgende Logik dafür, wie viele Adressen abgefragt werden und wann aufgehört werden soll:
gap limit
Anzahl von Adressen (normalerweise 20)gap limit
Sie mehr aus dem Index der letzten Adresse mit Transaktionen darauf. Führen Sie diesen Vorgang außerdem auch für Konto 1 durch (Sie prüfen nur nach n+1 Konten, wenn Konto n Transaktionen hatDie allgemeine Idee ist, dass keine Konten existieren, wenn das vorherige Konto unbenutzt ist, und dass keine Adressen in einem Konto nach einem einzelnen, aufeinanderfolgenden gap limit
Nummernblock unbenutzter Adressen verwendet werden.
Unternehmen wie BitGo, die HD-Wallet-Dienste für Börsen usw. anbieten, bei denen Sie problemlos Tausende von ungenutzten Adressen hintereinander und dann Adressen mit Transaktionen haben können, ignorieren im Allgemeinen das Lückenlimit. Sie führen stattdessen eine Liste aller generierten Adressen und indizieren sie als einzelne Adressen, nicht als HD-Wallet.
Auf der API-Seite versuchen Wallets im Allgemeinen, einen laufenden Index zu führen. Sie werden einen Cache bekannter Transaktionen unterhalten und ihn weiter anhängen. Auf diese Weise scannt es beim Start nur nach Transaktionen in den neuen Blöcken seit dem letzten Scan. Dadurch können selbst leichte Clients wie Electrum oder Ledger/Trezor-Wallets Tausende von Benutzern mit nur einer Handvoll Knoten bedienen, da jede Wallet nicht erneut nach früheren Transaktionen abfragt, von denen sie bereits weiß.
Wenn Sie ein häufig verwendetes HD-Wallet in ein neues Wallet importieren oder den Cache löschen, kann die anfängliche Synchronisierung natürlich sehr lange dauern. Nachfolgende Synchronisierungen der Brieftasche werden jedoch viel schneller sein.
Darüber hinaus verlassen sich HD-Wallets häufig auf einen vollständigen Knoten (wie Bitcoin Core) oder ein System wie ElectrumX oder Insight. All dies ist in der Lage, einen vollständigen Index zu führen. Bitcoin Core verwaltet nur einen laufenden Index über bekannte Adressen (weshalb Sie beim Importieren einer Adresse erneut scannen müssen). ElectrumX und Insight pflegen einen erweiterten Index, der alle Transaktionen verfolgt und schnell Daten für jede beliebige Adresse zurückgeben kann.
HD Wallets prüft weiterhin alle verwendeten Adressen auf Transaktionen. Sie scannen einfach nicht jedes Mal die gesamte Kette neu. Aber für jeden neuen Block wird jeder tx in diesem Block auf jede Adresse in der HD-Wallet überprüft. Diese Prüfung kann schnell über Bloomfilter oder vorindizierte Daten wie von Electrum oder Insight erfolgen, ohne einen Engpass zu erreichen.
dunkler Ritter
Kyle Graham