So durchlaufen Sie Bitcoin-Adressen in HD Wallet

Es scheint, dass es viele Möglichkeiten gibt, Bitcoin-Adressen zu durchlaufen. Ich suche nach Best Practices, und ich suche auch nach der dokumentierten Logik, wie gängige Wallets dies tun, damit ich ihr Verhalten replizieren kann.

Zum Beispiel erstellt Trezor die erste Adresse an dieser Stelle: m/49'/0'/0'/0/0, und dann wird die nächste Adresse m/49'/0'/0'/0/1 sein, und bald. Es scheint also einfach zu sein, einfach einen Iterator über die letzte Ziffer zu verwenden.

Aber wenn Sie von m/49'/0'/0'/0/0 ausgeben, verschiebt es den Rest nach m/49'/0'/0'/1/0 . Also muss ich plötzlich nicht nur über die letzte Ziffer iterieren, ich muss auch über die vorletzte Ziffer iterieren. Ich hätte "vorletztes" sagen können, aber ich sagte vorletztes, weil es intelligenter klingt.

Gibt es eine Standardpraxis zum Durchlaufen von Adressen? So etwas wie Adressen so lange durchlaufen, bis Sie auf eine Adresse ohne Transaktionen stoßen? Oder sagen Sie vielleicht drei Adressen hintereinander ohne Transaktionen? Oder ist das wirklich der wilde Westen und wir tun einfach, worauf wir Lust haben?

Ich glaube, Sie suchen vielleicht nach github.com/bitcoin/bips/blob/master/… , aber ich bin mir nicht sicher, ob es Ihre Frage vollständig beantwortet
Ich denke, beantwortet meine Frage, solange es keine Fallstricke gibt. Gibt es Sonderfälle, die hier nicht behandelt werden? Ich habe tatsächlich festgestellt, dass Ledger nicht zu 100 % mit Trezor und Vice Versa übereinstimmt – dh sie folgen nicht demselben Algorithmus, also muss man die Spezifikation nicht korrekt befolgen.
Würden Sie erklären, was der Unterschied zwischen den beiden ist?
Ich weiß nicht. Es ist nur so, dass, als ich meine Trezor-Brieftasche auf dem Ledger wiederhergestellt habe, dem Ledger einige Adressen fehlten und sich die Salden daher nicht summierten.
@MeshCollider, aber eigentlich ist dieses Dokument für BIP0044, und dennoch erstellt Trezor Adressen bei 49, was anders ist als das, was BIP0044 empfiehlt. Ich bin so verwirrt.
@MeshCollider, BIP0044 stimmt mit dem Trezor überein, solange Sie die BIP0049-Änderung anwenden. github.com/bitcoin/bips/blob/master/bip-0049.mediawiki
@MeshCollider , wenn Sie dies detaillierter aufschreiben möchten, werde ich Ihre Antwort als die richtige markieren.

Antworten (1)

Die meisten (aber nicht alle) Wallets folgen den Angaben in den BIPs 32 , 44 und 49 .

BIP 32 definiert, was Ableitungspfade sind und was sie bedeuten. Es ist der Standard zum Ableiten aller Schlüssel in einer HD-Wallet.

Die BIPs 44 und 49 geben Ableitungspfade an, die Wallets verwenden sollten. BIP 44 definiert ein Standardformat für Ableitungspfade: m / purpose' / coin_type' / account' / change / address_index. Es definiert auch die purposefür Nicht-Segwit-Bitcoin-Schlüssel.

Wenn ein Wallet die Schlüssel ableitet, wird der Pfad für externe Schlüssel, dh die Schlüssel, die Sie erhalten, indem Sie auf "Neue Empfangsadresse" (oder ähnliches) klicken, m/44'/0'/0'/0/ifür ineue Schlüssel nur erhöht.

Für interne Schlüssel, dh Schlüssel für Änderungsadressen, setzt der Ableitungspfad das changeFeld auf , sodass der Pfad für jede neue Änderungsadresse, die benötigt wird, inkrementiert 1wird m/44'/0'/0'/1/iund wird.i

Da dieses changeFeld im Wesentlichen ein boolescher Wert ist, müssen keine anderen Indizes als 0und durchlaufen werden 1.

BIP 49 gibt die purposefor-Schlüssel an, die für verschachtelte P2SH-Segwit-Adressen verwendet werden. Es setzt das purposeFeld einfach auf 49, also sind die Ableitungspfade m/49'/0'/0'/k/iwo kist das changeFeld und iist die address_index. Die Felder changeund address_indexbleiben die gleichen wie in BIP 44 definiert.


Es ist wichtig zu bedenken, dass nicht alle Wallets den BIPs 32, 44 und 49 folgen. Beispielsweise verwendet Armory seinen eigenen HD-Wallet-Algorithmus, der älter als BIP 32 ist, obwohl die BIP 32-Unterstützung für Armory derzeit in Arbeit ist. Andere Wallets wie Bitcoin Core und MultiBit HD folgen nicht BIP 44. Stattdessen verwenden sie andere Ableitungspfade. Für Bitcoin Core ist es m/k'/i'wo kist change(gleiche Definition wie bei BIP 44) und iist address_index(gleiche Definition wie bei BIP 44).

Dies ist eine sehr klare Erklärung. Vielen Dank. Es reicht mir, die Teile zusammenzufügen und auch meinen Geldbeutel fertig zu machen.