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?
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 purpose
fü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/i
für i
neue Schlüssel nur erhöht.
Für interne Schlüssel, dh Schlüssel für Änderungsadressen, setzt der Ableitungspfad das change
Feld auf , sodass der Pfad für jede neue Änderungsadresse, die benötigt wird, inkrementiert 1
wird m/44'/0'/0'/1/i
und wird.i
Da dieses change
Feld im Wesentlichen ein boolescher Wert ist, müssen keine anderen Indizes als 0
und durchlaufen werden 1
.
BIP 49 gibt die purpose
for-Schlüssel an, die für verschachtelte P2SH-Segwit-Adressen verwendet werden. Es setzt das purpose
Feld einfach auf 49, also sind die Ableitungspfade m/49'/0'/0'/k/i
wo k
ist das change
Feld und i
ist die address_index
. Die Felder change
und address_index
bleiben 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 k
ist change
(gleiche Definition wie bei BIP 44) und i
ist address_index
(gleiche Definition wie bei BIP 44).
meshcollider
Christian Findley
meshcollider
Christian Findley
Christian Findley
Christian Findley
Christian Findley