So erhalten Sie den Master-Chain-Code

Ich verwende NBitcoin und habe ein ExtKeyObjekt erstellt. Jetzt muss ich den Master Chain Code (siehe Seite 89 von Mastering Bitcoin für eine gute Erklärung) für diesen HD-Knoten erhalten. Wie mache ich das?

Laut Mastering Bitcoin wird ein Root-Seed mit HMAC-SHA512 verwendet, um eine 512-Bit-Ausgabe zu erzeugen. Die linken 256 Bit werden für den Master Private Key verwendet, die rechten 256 Bit werden für den Master Chain Code verwendet. Wenn ich GetBytes()mein ExtKeyObjekt jedoch aufrufe, gibt es ein byte[74]-Array zurück. Dies entspricht 592 Bit. Ich weiß nicht, was die zusätzlichen 80 Bit sind, also kann ich nicht einfach die richtigen 256 Bit nehmen.

Antworten (2)

Ich habe dies mit einer Pull-Anforderung gelöst, die eine Eigenschaft hinzufügt ExtKeyund ExtPubKeymit der Sie die ChainCodeEigenschaft aufrufen können. Siehe Pull-Request 156 .

Es wurde in NBitcoin 3.0.0.28 zusammengeführt, das auf NuGet verfügbar ist .

Hier sind ein paar Dinge, die Sie tun können, ich habe im Kommentar notiert, was Sie brauchen:

var masterPrivateKey = new ExtKey();
var masterPublicKey = masterPrivateKey.Neuter();

// This is what you need:
var masterMainNetPrivateKey = masterPrivateKey.GetWif(Network.Main);
var masterTestNetPrivateKey = masterPrivateKey.GetWif(Network.TestNet);

var masterMainNetPublicKey = masterPublicKey.GetWif(Network.Main);
var masterTestNetPublicKey = masterPublicKey.GetWif(Network.TestNet);

Vielleicht möchten Sie den entsprechenden Abschnitt des C#-Bitcoin-Buchs überprüfen .

Nein, das brauche ich nicht. WIF und Chain Code sind zwei völlig verschiedene Dinge. WIF ist nur eine Möglichkeit, einen privaten Schlüssel zu codieren.
Wie auch immer, ich habe NBitcoin eine Änderung hinzugefügt, die den Kettencode durch eine Eigenschaft offenlegt, siehe PR 156 github.com/MetacoSA/NBitcoin/pull/156 . Es wurde in NBitcoin 3.0.0.28 zusammengeführt, das auf NuGet verfügbar ist.