How to get Master Chain Code

2

I'm using NBitcoin and I created an ExtKey object. Now I need to get the Master Chain Code (see page 89 of Mastering Bitcoin for a good explanation) for this HD node. How do I do this?

According to Mastering Bitcoin a root seed is used with HMAC-SHA512 to create a 512-bits output. The left 256 bits are used for the master private key, the right 256 bits are used for the master chain code. When I call GetBytes() on my ExtKey object, however, it returns a byte[74] array. This corresponds to 592 bits. I don't know what the extra 80 bits are so I can't just take the right 256 bits.

Leon Cullens

Posted 2016-04-28T22:53:29.653

Reputation: 121

Answers

0

I solved this with a pull request that adds a property to ExtKey and ExtPubKey that allows you to call the ChainCode property. See pull request 156.

It has been merged into NBitcoin 3.0.0.28 which is available on NuGet.

Leon Cullens

Posted 2016-04-28T22:53:29.653

Reputation: 121

-1

Here are a few things what you can do, I noted what you need in comment:

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);

You might want to check the corresponding section of the C# Bitcoin book.

nopara73

Posted 2016-04-28T22:53:29.653

Reputation: 642

1No, that's not what I need. WIF and Chain Code are two completely different things. WIF is just a way to encode a private key. – Leon Cullens – 2016-05-22T18:31:38.983

Anyway, I added a change to NBitcoin that exposes the chain code through a property, see PR 156 https://github.com/MetacoSA/NBitcoin/pull/156. It has been merged into NBitcoin 3.0.0.28, available on NuGet.

– Leon Cullens – 2016-05-22T18:32:58.303