the address format.
âI think sticking with the one-BIP-one-format method works. Otherwise, you
would need to modify this proposed BIP each time a new format comes along.
Post by Paul Brown via bitcoin-dev
I realised after I sent my previous response that the encoding was wrong
and that my smiley face at the end of the BIP number comment got turned
into a ? and the tongue in cheek context was lost :-(
Anyway, back onto subject. I've been thinking some more on the SLIP-0032
adoption in this proposal and specifically the address format to use when
My proposal states bech32 serialized addresses (P2WPKH or P2WSH), however,
I wonder whether there is some merit in extending the derivation path with
an additional level below coin type to represent the address format, with
the value determined by the context of the coin type value in the
derivation path (0x00 for P2WPKH bech32, 0x01 for P2PKH base58 if coin type
is Bitcoin, 0x00 for Ethereum account format if coin type is Ether, etc).
A separate spec similar to SLIP-0044 could be created that defines the list
of address formats and the derivation path values.
When importing root master seeds or distributing the xpub's for each
cosigner to each party the discovery process in the proposal would need
extending to try each address format in turn to determine whether there is
a 'hit' when checking balances. It does mean that the import process is
slower however the additional flexibility of supporting multiple address
formats possibly outweighs this. I'm just thinking that having a rule to
follow during discovery, particularly where non-Bitcoin coins are
concerned, is more explicit than leaving it open to the wallet implementer
to figure out (for altcoins, what address format to use?).
It also means that future address formats are supported as they are simply
added to the new spec list for the coin type (can be done by anyone,
similar to the way SLIP-0044 works now) - it doesn't require a new BIP to
support. For example, if address format was a derivation level in BIP44,
would BIP49 and BIP84 be needed?
I'm somewhat musing out loud here, but I like the idea of being able to
mostly self-discover as much as possible and reducing or eliminating the
need for proprietary metadata attached to the wallet.
Sent: 25 April 2018 15:36
Subject: Re: [bitcoin-dev] Multi-signature and multi-coin HD wallet in one
BIP32 derivation path (new BIP)
Thanks for the proposal, Paul.
Post by Paul Brown via bitcoin-dev
- What address format is expected when discovering balances and creating
Your solution does not solve your first bullet point, since the xpub
encoding looks no different than any other xpub (BIP 44, 45, 49, etc). At
the least, you should propose new version bytes to change the "xpub" in the
encoding to some other string.
Alternatively, I would suggest that you use the xpub serialization format
described in SLIP-0032 (
includes the derivation path within the xpub itself and uses Bech32 for
Given a normal xpub with no additional information, a wallet must scan the
address space for the various formats. SLIP-0032 solves this bootstrapping
problem and avoids the UX nightmare of users being required to know to
which BIP number the xpub conforms.
I have written a new BIP describing a BIP32 derivation path that supports
a single or multi-signature and multi-coin wallet from a single master
seed. It combines BIP44 and BIP45 and adds in a self-describing structure
in the derivation path for multiple multi-sig combinations within the
single wallet along with an extended public key export file format for
public key distribution between parties. I can particularly see this being
useful for multiple Lightning Network 2of2 accounts for different payment
I appreciate that this might be re-hashing old ground as BIP44 in
particular has been widely adopted, however, BIP44 does leave itself open
- What address format is expected when discovering balances and creating transactions?
- Does the master seed represent a single-sig or multi-sig wallet?
- If multi-sig, how many cosigners and what are their extended public keys
(so that the wallet can generate the correctly formatted redeem script with
public keys in the right order)?
- If multi-sig, how do you prevent collisions on the same address index
(in a wallet that is occasionally connected)?
BIP45 solves the collision that occurs when the individual parties in a
multi-sig group each give out a new address from a wallet, where the wallet
hasnât been able to sync to mark the address as âusedâ (this could happen
if they gave out addresses independently at the same time). It uses a
cosigner index in the derivation path so that each party has their own path
to their addresses. However, BIP45 drops the multi-coin support that BIP44
This is a useful discussion on the problems of a collision and the merits
For the purposes of the BIP text (and the example paths used to generate
keys) Iâve temporarily assigned it the number 46. It looks like that is
available and seemed somewhat appropriate given that it builds on the good
work of BIP44 and BIP45.
bitcoin-dev mailing list