Was bedeutet 44' in BIP44?

Nachdem ich BIP44 gelesen hatte, sah ich

Zweck ist eine Konstante, die gemäß der BIP43-Empfehlung auf 44' (oder 0x8000002C) gesetzt ist.

Ich glaube, 0x8000002C ist 128 als Ganzzahl, wie entspricht dies jedoch 44 '?

Ich glaube auch, dass das ' bedeutet, dass es sich um einen "gehärteten Schlüssel" handelt. Ist es gehärtet, weil 128 zwischen 0 und 2 ^ 32 - 1 liegt? Was bedeutet, dass der einzige Schlüssel, der ihn ableiten kann, der private Schlüssel ist?

Um meine Gedanken weiter auszuarbeiten, die richtig sein können oder nicht:

Das sind die Ebenen:

m / Zweck' / Münztyp' / Konto' / Änderung / Adressindex

Zweck, Münztyp und Konto müssen alle mit dem privaten Schlüssel abgeleitet werden. Sie liegen immer zwischen 0 und 2^32 -1

Ich bin auch zu der Überzeugung gekommen, dass wir, wenn wir eine Änderungsadresse mit xpub ableiten, dann, wenn wir denselben Pfad mit xpriv ableiten, wir von dieser Änderungsadresse ausgeben können?

Wenn ich zum Beispiel Geld an die Änderungsadresse mit Pfad erhalte:

m / 44' / 0' / 0' / 0 / 0

Um dann von dieser spezifischen Adresse auszugeben, würde ich den zugehörigen privaten Schlüssel benötigen. Um es zu bekommen, würde ich das xpriv auf diesem Pfad verwenden?

Keine vollständige Antwort, aber Sie sollten BIP32 lesen. Es erklärt, was gehärtete Ableitung ist und was mit und ohne möglich ist.
@pieter-wuille Okay, ich werde es noch einmal lesen. Ich hatte gehofft, eine Klarstellung zu erhalten, da ich eine Implementierung davon lese und sie anscheinend nicht dem Leitfaden folgt. Edit: Du bist der Autor haha, der Bärtige. Danke für BIP32, werde ihm noch einen Blick geben!
Auch Änderungsadressen hätten den Pfad m/44'/0'/0'/1/n.
@raghav-sood danke für die Korrektur. Hilft sehr zu sehen, wo ich falsch verstanden oder leichtsinnige Fehler gemacht habe!

Antworten (1)

Ich glaube, 0x8000002C ist 128 als ganze Zahl

... Nein, ist es nicht. Zunächst einmal ist es bereits eine Ganzzahl, die nur hexadezimal dargestellt wird. Dezimal ist es 2147483692. Wie hast du 128 bekommen?

wie entspricht dies jedoch 44 '?

44' bedeutet, dass gehärtete Schlüssel verwendet werden sollten. Das Unterscheidungsmerkmal dafür, ob ein Schlüssel für einen bestimmten Index gehärtet ist, besteht darin, dass der Index größer als 2^31 ist, was 2147483648 entspricht. In Hex ist das 0x80000000. Das bedeutet der Apostroph ( ').

Die 44 ergibt sich aus der Addition zu 2^31, um den endgültigen gehärteten Schlüsselindex zu erhalten. In Hex ist 44 2C, also 0x80000000 + 0x2C = 0x8000002C.

Ich glaube auch, dass das ' bedeutet, dass es sich um einen "gehärteten Schlüssel" handelt. Ist es gehärtet, weil 128 zwischen 0 und 2 ^ 32 - 1 liegt?

Nein, gehärtet bedeutet, dass der Schlüsselindex zwischen 2^31 und 2^32 - 1 liegt. Zwischen 0 und 2^31 - 1 sind ungehärtete Schlüssel.

Was bedeutet, dass der einzige Schlüssel, der ihn ableiten kann, der private Schlüssel ist?

Ja.

Hey Andreas! Ich habe 0x80 im Code gesehen und diesen Fehler gemacht. Danke, dass du mir gezeigt hast, wo ich falsch lag. Ihre Erklärung macht deutlich, warum 0 gehärtet werden kann. Wenn ich den normalen Schlüssel mit dem xpub auf einem anfälligen Server ableite, woher weiß ich dann, welchen Pfad ich mit dem xpriv einschlagen muss, um den privaten Schlüssel zum Ausgeben des Geldes zu erhalten?
Sie würden den Pfad von etwas, das von xpub abgeleitet ist, nicht kennen, wenn Sie nicht den von Ihnen verwendeten Pfad aufgezeichnet hätten.
Oh, wenn ich also einen normalen Schlüssel mit xpub ableite, wie bekomme ich dann den entsprechenden privaten Schlüssel dafür? Wenn ich den Pfad wüsste, wäre es derselbe Pfad, aber verhärtet?
Nein, es ist derselbe Pfad, aber von xpriv abgeleitet. Härten ist etwas anderes.
Oh, ich verstehe. Der xpriv kann normale und gehärtete Schlüssel erstellen. Wenn Sie mit dem xpub einen normalen Schlüssel erstellen, können Sie den gleichen Pfad mit dem xpriv verwenden, um den normalen Schlüssel zu erstellen, aber mit dem privaten Schlüssel, der daraus ausgegeben wird. Danke, dass du dir die Zeit genommen hast, es zu erklären, Andrew