New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HD Multisig derivation standard #1072
Conversation
Mention BIP 44 as the Multi-Account standard
stray file |
bip-0048.mediawiki
Outdated
@@ -84,7 +84,7 @@ Hardened derivation is used at this level. | |||
===Script=== | |||
|
|||
This level splits the key space into two separate <code>script_type</code>(s). To provide | |||
backward and forward compatibility. | |||
backward compatibility. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have originally added the script_type
level for forward compatibility. Specifically to avoid a BIP44/49/84 scenario, that is, to avoid creating a new BIP every time we wanted to use new type of scripts -- instead I thought it's easier to maintain a list of script types.
from spesmilo/electrum#4352 (comment) :
The advantage would be that when new script types come later (e.g. Schnorr-like sigs), no new BIP would be needed.
There is another solution, which is to e.g. hash a descriptor or similar of the script type template to arrive at a derivation path level; then a single BIP would be enough; though that might make disaster-recovery problematic -- but this too requires its own script_type
level.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, arguably there is no backward compatibility provided at all. What exactly is this backward compatible with?
I guess you mean the wallets that are using this same spec before it was formally specced (here), but as you don't add anything new, just formalise it, that is just self-referential.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey, I have added some simple text around future script types and extensibility in 8a3a8bd, does that work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, thanks. I personally like this approach better; though I guess it might be subjective. (re new BIP every time vs maintaining list of script types.) I prefer the wording to express the original intention, to explain why it was done like this.
I don't understand the purpose of this BIP. The stated goal is to not need a BIP for new script types, but you then still need to maintain a list of script types for the |
Hi Robert, The stated goal is:
It is absolutely for the purpose of describing existing standard that are in use across all modern segwit HD multisig wallets and also provides future extensibility. @SomberNight is the original creator of the m/48' derivation. He had commented here so I amended the BIP to stay true to the original vision of allowing for future script types. You can absolutely "just include a descriptor" (in your application) as descriptors include the derivation path. This BIP gives devs a standard to follow for which derivations they should use in their output descriptors for segwit (currently) multi-sig wallets. Similarly to what BIP44, 84, 49 achieve for single-sig. |
Multisig wallets should be created using descriptors, which contain the script type, (sorted) multi, key origin identification, xpubs, and checksum. The descriptor should be created using parameters like 'M', 'N', script type, and by gathering keys from co-signers in the descriptor format of master key fingerprint, BIP44/49/84/Future_Tapscript derivation path, xpub. There's no reason to use BIP45, or to create a 'future proof' BIP45 ie BIP48. |
Other then the fact that many wallets do use bip45 and Specter, Sparrow, Electrum, Coldcard, Trezor, Ledger, Fully Noded, Gordian Wallet, Nunchuk (and others) all use the |
Yes, I meant in the same way BIP44 was done - with a BIP per script. I don't see why we should be encouraging mixing scripts and keys by creating a BIP45 with a BIP48 doesn't have a |
As I've made extremely clear this is to define an existing standard that is already in use and also provides extensibility in case the community wants to extend upon it. Removing If you want to define a standard for what "should" be used in HD multisig wallets and remove |
Datapoint: Coldcard Wallet supports this BIP (always has) and as of v4.0.3 will support varied account numbers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please:
- drop the
.DS_Store
file. - add a section on backward compatibility, especially with current use of purpose 48.
- follow the format described in BIP 2's "BIP format and structure".
- choose a copyright license and add the relevant metadata.
It might also be a good idea to document script type 0.
- Replace BIP number with ? - Reduce title to less then 44 characters - Add MIT Licence and copyright section - Add specification section - Add backwards compatibility section
Hi Luke, I went ahead and made the requested changes. If I did not do it correctly just let me know. afaik script type 0 is not actually used as per @SomberNight (original creator of this derivation scheme), instead wallets use BIP45 for legacy multi-sig scripts. |
Strong NACK - Bitcoin is moving away from this (layer violations) and towards descriptors. This is also redundant with BIP 87 |
Add code snippets.
As pointed out above, this is simply documenting the existing system which is already widely used. Also, I think you misunderstand the process. For a BIP number to be assigned, the BIP proposal merely needs to be formatted correctly and technically sound (as in could be implemented). Clearly the latter is already true, therefore it is just a matter of the former. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approve merge request #1072
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great,
Approve #1072
This PR is a proposal for a new BIP to define a standard on m/48' derivation paths used in modern day hierarchical deterministic multi-sig wallets.