[TL;DR]: We should change "drkv/drkp" to something more Dashy, oh, and there's already problems in the Dash software ecosystem that will get worse if a solution isn't agreed upon.
BIP32 keychains can be serialized for human-readable use. They come in 2 flavours, "public" and "private".
For Bitcoin, the public ones look like: "xpub....blajbalbalblabla" and the private ones look like: "xprv...blablbalbah". Dash has slightly different values.
People build Bitcoin/Dash/etc software based on these assumptions which are standardized in the BIP0032 text and in the altcoin reference client code. (E.g. these are defined in dash/src/chainparams.cpp).
Dash's public ("xpub") value is currently: "drkv" (according to the reference client). The private ("xprv") value is "drkp" (again, this is according to the code I mentioned above).
moocowmoo Came up with the values, but with one difference - the values he came up with were so that "drkp" means public and "drkv" means private. They got swapped when they were added to the reference client. He's added his (correct) version of those values to pycoin (A Bitcoin library for Python) and is using them in the dashvend code also.
So we've got some software implementations (including the pycoin library) which implement these values swapped from the reference client.
[Note: I'm not saying moocowmoo is doing it "wrong". He invented these values, so if anything, the ref client is "wrong". It's not about "wrong", it's about how to get these all in-sync so that future software developed for Dash doesn't run into confusion and problems.]
Another problem is that the Electrum-Dash client is using "xpub" and "xprv" (Bitcoin's version bytes) and that's going to cause problems with software interoperability down the road.
So there's already multiple conflicting implementations.
In addition to all that, the current values are one of the last vestiges of the old "Darkcoin" days. I think now would be a good time to consider changing the drk* prefixes to something more Dash-y.
Me, I've been porting different software versions using the ref. client values b/c that's what the "reference" client is supposed to be — a reference.
But as more software gets developed using different starter templates (e.g. the vending machine python code), this will grow to become more of an issue.
If we can make a clean break to more "Dashy" version values, announce and change all projects now, it might be easier than trying to fix the resulting mess down the road. New software keeps being created (good), and that's what we need, but I can foresee a mess if we don't get things cleaned up at this point. As we all know, BIP32 isn't a small thing, it's huge for payments acceptance and ease-of-use for "normal" users who just want a simple way to back up and secure their coins.
Normally this wouldn't be a problem, but a lot of the software actually uses the header byte versions for things like determining mainnet/testnet and whether it's a valid xpub key or not. So it *is* kinda important to be on the same page with these.
Developers, any thoughts? Can we maybe converge on a solution and implement that in all software to prevent problems in the future?
BIP32 keychains can be serialized for human-readable use. They come in 2 flavours, "public" and "private".
For Bitcoin, the public ones look like: "xpub....blajbalbalblabla" and the private ones look like: "xprv...blablbalbah". Dash has slightly different values.
People build Bitcoin/Dash/etc software based on these assumptions which are standardized in the BIP0032 text and in the altcoin reference client code. (E.g. these are defined in dash/src/chainparams.cpp).
Dash's public ("xpub") value is currently: "drkv" (according to the reference client). The private ("xprv") value is "drkp" (again, this is according to the code I mentioned above).
moocowmoo Came up with the values, but with one difference - the values he came up with were so that "drkp" means public and "drkv" means private. They got swapped when they were added to the reference client. He's added his (correct) version of those values to pycoin (A Bitcoin library for Python) and is using them in the dashvend code also.
So we've got some software implementations (including the pycoin library) which implement these values swapped from the reference client.
[Note: I'm not saying moocowmoo is doing it "wrong". He invented these values, so if anything, the ref client is "wrong". It's not about "wrong", it's about how to get these all in-sync so that future software developed for Dash doesn't run into confusion and problems.]
Another problem is that the Electrum-Dash client is using "xpub" and "xprv" (Bitcoin's version bytes) and that's going to cause problems with software interoperability down the road.
So there's already multiple conflicting implementations.
In addition to all that, the current values are one of the last vestiges of the old "Darkcoin" days. I think now would be a good time to consider changing the drk* prefixes to something more Dash-y.
Me, I've been porting different software versions using the ref. client values b/c that's what the "reference" client is supposed to be — a reference.
But as more software gets developed using different starter templates (e.g. the vending machine python code), this will grow to become more of an issue.
If we can make a clean break to more "Dashy" version values, announce and change all projects now, it might be easier than trying to fix the resulting mess down the road. New software keeps being created (good), and that's what we need, but I can foresee a mess if we don't get things cleaned up at this point. As we all know, BIP32 isn't a small thing, it's huge for payments acceptance and ease-of-use for "normal" users who just want a simple way to back up and secure their coins.
Normally this wouldn't be a problem, but a lot of the software actually uses the header byte versions for things like determining mainnet/testnet and whether it's a valid xpub key or not. So it *is* kinda important to be on the same page with these.
Developers, any thoughts? Can we maybe converge on a solution and implement that in all software to prevent problems in the future?