summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Spigler <RobertSpigler@ProtonMail.ch>2021-03-18 17:15:07 -0400
committerGitHub <noreply@github.com>2021-03-18 17:15:07 -0400
commit8c346ca3ba5d82ee35a91c5bd9c803a758dd68f5 (patch)
tree69e670a9bbd36a9b2e1ccc0e58f79761c3b65dae
parentdeba2a75be9f8151f4d77d21ef517ad280cc1a61 (diff)
downloadbips-8c346ca3ba5d82ee35a91c5bd9c803a758dd68f5.tar.xz
Revert to multisig only
-rw-r--r--Modern Hierarchy for Deterministic Multisignature Wallets.mediawiki (renamed from Modern Derivation Standard.mediawiki)20
1 files changed, 10 insertions, 10 deletions
diff --git a/Modern Derivation Standard.mediawiki b/Modern Hierarchy for Deterministic Multisignature Wallets.mediawiki
index 61a4fef..0960fa9 100644
--- a/Modern Derivation Standard.mediawiki
+++ b/Modern Hierarchy for Deterministic Multisignature Wallets.mediawiki
@@ -1,7 +1,7 @@
<pre>
BIP: Number not assigned
Layer: Applications
- Title: Signature and Script Independant Hierarchy for Deterministic Wallets
+ Title: Modern Hierarchy for Deterministic Multisignature Wallets
Author: Robert Spigler <RobertSpigler@ProtonMail.ch>
Comments-Summary: No comments
Comments-URI:
@@ -16,23 +16,23 @@ This BIP is licensed under the 2-clause BSD license.
==Abstract==
-This BIP defines a sane hierarchy for deterministic wallets based on an algorithm described in BIP-0032 (BIP32 from now on), purpose scheme described in BIP-0043 (BIP43 from now on), and multi-account hierarchy described in BIP-0044 (BIP44 from now on).
+This BIP defines a sane hierarchy for deterministic multisig wallets based on an algorithm described in BIP-0032 (BIP32 from now on), purpose scheme described in BIP-0043 (BIP43 from now on), and multi-account hierarchy described in BIP-0044 (BIP44 from now on).
This BIP is a particular application of BIP43.
==Motivation==
-With the increase of adoption of new technologies such as [https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md the descriptor language] it is necessary to create a common derivation scheme that makes use of all new technologies.
+With the increase of more user friendly (offline) multisignature wallets, and adoption of new technologies such as [https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md the descriptor language] and [https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki BIP-0174 (Partially Signed Bitcoin Transactions)] it is necessary to create a common derivation scheme that makes use of all new technologies.
-There are many issues with the current standards. As background, BIP 44/49/84 specifies:
+As background, BIP 44/49/84 specifies:
<pre>
m / purpose' / coin_type' / account' / change / address_index
</pre>
-where the BIP43 <code>purpose'</code> path is separate for each script (P2PKH, P2WPKH-in-P2SH, and P2WPKH respectively). However, these per-script derivations are made redundant with descriptors, which describe a collection of output scripts. Note also that these BIPs are restricted for single sig wallets. This is unecessary, as descriptors handle whether the scripts are single-key or multi-key.
+where the BIP43 <code>purpose'</code> path is separate for each script (P2PKH, P2WPKH-in-P2SH, and P2WPKH respectively). However, these per-script derivations are made redundant with descriptors, which describe a collection of output scripts. Note also that these are single sig derivations (which shouldn't be reused for multisig).
-Modification is also needed for multisig derivation paths. For example, BIP45 specifies:
+Standardization is needed for multisig derivation paths. There are some in existence, but all have issues. For example, BIP45 specifies:
<pre>
m / purpose' / cosigner_index / change / address_index
@@ -48,7 +48,7 @@ m / purpose' / coin_type' / account' / script_type' / change / address_index
Rather than following in BIP 44/49/84's path and having a separate BIP per script after P2SH (BIP45), vendors decided to insert <code>script_type'</code> into the derivation path (where P2SH-P2WSH=1, P2WSH=2, Future_Script=3, etc). As described previously, this is unnecessary, as the descriptor sets the script. While it attempts to reduce maintainence work by getting rid of new BIPs-per-script, it still requires maintaining an updated, redundant, <code>script_type</code> list.
-The hierarchy proposed later in this paper solves these issues and is quite comprehensive. It allows the handling of multiple accounts, external and internal chains per account, and millions of addresses per chain, regardless of the script or signature type.
+The structure proposed later in this paper solves these issues and is quite comprehensive. It allows the handling of multiple accounts, external and internal chains per account, and millions of addresses per chain, in a multi-party multisignature hierarchical deterministic wallet regardless of the script type.
Any script that is supported by descriptors (and the specific wallet implementation) is compatible with this BIP.
@@ -60,7 +60,7 @@ Any wallet that supports descriptors inherently supports deterministic key sorti
==Path levels==
-We should not be mixing keys and scripts in the same layer. The wallet should create extended private/public keys independent of the script or signature type, whereas the descriptor language tells wallets to watch (single or multi-sig) outputs with the specified public keys.
+We should not be mixing keys and scripts in the same layer. The wallet should create extended private/public keys independent of the script type, whereas the descriptor language tells wallets to watch the multisig outputs with the specified public keys.
We define the following 5 levels in the BIP32 path:
@@ -102,8 +102,8 @@ This number is used as child index in BIP32 derivation.
Hardened derivation is used at this level.
It is crucial that this level is increased for each new wallet joined or private/public keys created; for both privacy and cryptographic purposes.
-For example, in multisignature wallets, before sending a new key record to a coordinator, the wallet must increment the <code>account'</code> level. Before creating it's own single signature wallet, the <code>account'</code> level must again be incremented.
-This prevents key reuse - across single signature and multisignature wallets, across ECDSA and Schnorr signatures, and inbetween the same wallet types.
+For example, before sending a new key record to a coordinator, the wallet must increment the <code>account'</code> level.
+This prevents key reuse - across ECDSA and Schnorr signatures, across different script types, and inbetween the same wallet types.
===Change===