Skip to content
BIP ATLAS

BIPs 0044 · 0084 · 0086

Where in the tree do wallet keys live?

BIP 32 can derive an endless tree of keys from one seed. BIP 44 says which branches a wallet should use, and BIPs 84 and 86 say what each branch pays to.

A seed gives a wallet one master key, and BIP 32 can derive children from it without end. That raises a practical question: if two wallets restore the same seed, where do they look for coins? Without an agreement, each could derive keys in a different corner of the tree and never find the other’s; BIP 84’s author puts the aim as letting different wallets use the same seed seamlessly.123

BIP 44, assigned in 2014, is that agreement. It is an application-layer convention on top of BIP 32 and BIP 43, not a change to the derivation itself. BIP 84 (2017) and BIP 86 (2021) reuse its structure for SegWit and Taproot. All three are recorded as deployed.14

Source revision
bitcoin/bips @ 3a10b5b
Source checked
1 October 2026
Review state
Draft — independent technical review applied; awaiting human sign-off
Source details

This chapter is an independent explanation, not the proposals themselves. Preamble fields are shown as recorded in the pinned files, with author e-mail addresses omitted. Status is the proposal’s own field, not an endorsement or a sign of consensus.

BIP 44: Multi-Account Hierarchy for Deterministic Wallets

BIP
44
Layer
Applications
Title
Multi-Account Hierarchy for Deterministic Wallets
Authors
Marek Palatinus
Pavol Rusnak
Comments-Summary
Mixed review (one person)
Comments-URI
https://github.com/bitcoin/bips/wiki/Comments:BIP-0044
Status
Deployed
Type
Specification
Assigned
2014-04-24
Requires
32, 43

Pinned source · Reader view on bips.dev
SHA-256 6a541c79f94077ac529941a8cbd373ce077a5d6e97b6dd8209b45ac10f737eaf
Git blob a94efba2ec6f8479c7a16d5dded12572be066c28

BIP 84: Derivation scheme for P2WPKH based accounts

BIP
84
Layer
Applications
Title
Derivation scheme for P2WPKH based accounts
Authors
Pavol Rusnak
Comments-Summary
No comments yet.
Comments-URI
https://github.com/bitcoin/bips/wiki/Comments:BIP-0084
Status
Deployed
Type
Specification
Assigned
2017-12-28
License
CC0-1.0

Pinned source · Reader view on bips.dev
SHA-256 1900feec6cafca65b8c09906ca0658d2d742b4c9b44cb15678996985b6bfe627
Git blob f266a1455317e3cfb69e477f24fe9f23577a5433

BIP 86: Key Derivation for Single Key P2TR Outputs

BIP
86
Layer
Applications
Title
Key Derivation for Single Key P2TR Outputs
Authors
Ava Chow
Status
Deployed
Type
Specification
Assigned
2021-06-22
License
BSD-2-Clause

Pinned source · Reader view on bips.dev
SHA-256 d8d01dee331da07c2562615bc1f064c1868ec3fce61184973da76d1196c7f5b0
Git blob 43c692a56e68913827a99b99964c35814cce121c

FIG. A12.1 Five levels below the master key
  1. mmaster key
  2. purpose′which convention: 44′, 84′, 86′hardened
  3. coin_type′0′ Bitcoin · 1′ testnethardened
  4. account′independent identities, from 0hardened
  5. change0 receive · 1 changepublic derivation
  6. address_indexaddresses, from 0public derivation

needs the private key ↑↓ an account’s extended public key reaches everything here

BIP 44’s examples: m/44'/0'/0'/0/0 (first receiving) m/44'/0'/0'/0/1 (second receiving) m/44'/0'/0'/1/0 (first change)

Levels and derivation types as BIP 44 defines them; example paths from its Examples table, parsed by the tested path model.

BIP 44’s path: three hardened levels that pick a convention, a coin and an account, then two public levels that number the addresses.5678910

Five levels, each with a job

BIP 44 fixes five levels below the master key: purpose, coin type, account, change and address index. An apostrophe after a number marks hardened derivation, and the first three levels are hardened. The author’s aim was a hierarchy that handles many coins, many accounts, separate receiving and change chains, and millions of addresses per chain.25

The purpose is a constant, 44′, which tells software that everything below follows this specification. The coin type gives each coin its own subtree, avoiding address reuse across coins: 0′ for Bitcoin and 1′ for Bitcoin testnet, with a longer list kept outside the BIP in SLIP-0044.67

Accounts split the keys into independent identities, numbered from 0, so a wallet never mixes coins between them; BIP 44 compares them to bank accounts, one for donations whose addresses are public, one for savings, one for shared expenses. The change level has two values: 0 for the external chain, addresses meant to be seen outside the wallet such as receiving addresses, and 1 for the internal chain that collects change. Below it, addresses are simply numbered from 0.8910

Restoring a wallet means finding where coins went. BIP 44 describes how: derive account 0, scan its external chain, and move on to the next account only if this one has transactions. That works because software should not create a new account while the previous one has no history. Within a chain, BIP 44 gave the gap limit as 20: after 20 unused addresses in a row, scanning stops, and wallet software should warn a user who tries to hand out an address beyond it. BIP 44 scans only external chains, reasoning that internal chains receive only coins that come from the associated external chains.81112

BIP 44’s own examples make the pattern concrete. Its table lists 16 paths: the first and second address on the external and change chains, for the first and second account, on Bitcoin and on testnet. The first Bitcoin receiving address of the first account is m/44′/0′/0′/0/0; its first change address is m/44′/0′/0′/1/0.913

Walking a published path

BIP 84 and BIP 86 each publish test vectors from the same well-known mnemonic: the root keys, the first account’s keys, and three addresses, two receiving and one change. Step down their paths below. Every value is derived by this site’s tested BIP 32 code; the account keys and every published leaf value are checked against the vectors when the site is built, and the intermediate values are implied by them.14

FIG. A12.2 One level at a time Interactive

A · Interactive

Static view: BIP 84’s first receiving address, every level shown. With JavaScript you can switch scheme, switch between receiving and change, and step down the path one level at a time.

  1. mMaster key
  2. 84'purpose
  3. 0'coin_type
  4. 0'account
  5. 0change
  6. 0address_index
  7. →address

first receiving · m/84'/0'/0'/0/0

public key
0330d54fd0…91af3c
HASH160(key)
c0cebcd6c3d3ca8c75dc5ec62ebe55330ef910e2
scriptPubKey
0014c0cebcd6c3d3ca8c75dc5ec62ebe55330ef910e2
address (bech32)
bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu

BIP 84 test vectors from the "abandon … about" mnemonic; values derived by the tested model; the account keys and the published leaf values were checked at build time (this address: lines 79, 80).

B · Worked example

BIP 86’s first receiving address, m/86'/0'/0'/0/0, from the published test mnemonic. The derived key’s extended keys, the internal key, output key, scriptPubKey and address match the BIP’s test vectors; the others are derived by the same tested model.

12345
  1. Three hardened steps from the master key: purpose, coin type, account

    path
    86' / 0' / 0'
    account public key
    03418278a2885c8bb98148158d1474634097a179c642f23cf1cc04da629ac6f0fb

    Hardened: each needs its parent's private key.

  2. Two public steps: the receiving chain, then the first address

    path
    0 / 0
    derived public key
    03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115

    Anyone with the account's extended public key can take these two steps.

  3. Drop the parity byte: the internal key is the x coordinate

    internal key
    cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115
  4. Tweak it with no script tree: Q = P + int(hashTapTweak(P))·G

    tweak
    2ca01ed85cf6b6526f73d39a1111cd80333bfdc00ce98992859848a90a6f0258
    output key
    a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c
  5. Version 1 witness program, bech32m

    scriptPubKey
    5120a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c
    address
    bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr

Source: BIP 86 test vectors (lines 95, 96, 97, 98, 99, 100); derived by the tested BIP 32 and wallet-path models.

Published paths from BIPs 84, 86 and 44, stepped from the master key down to the address. Hatched levels are hardened.5141516

The line between the third and fourth levels matters most. Above it, each step is hardened and needs the parent’s private key. Below it, change and index use public derivation, which anyone holding the parent’s extended public key can do.5910

So an account’s extended public key reaches every address the account will ever use, receiving and change alike. The build demonstrates it: from the published account public keys alone, the model re-derives all of the published addresses below them. Sharing an account xpub with a watch-only wallet or a server reveals the account’s whole history and future addresses; on its own, it cannot spend.15

The published values make each step checkable. For BIP 84’s first receiving address, the walk ends at a compressed public key; hashing it gives the 20 bytes that go into the output, and the address is those bytes in bech32. For BIP 86, the same position yields a key whose x coordinate becomes the internal key, and the tweak turns it into the output key the address encodes. Either way the spend is short: BIP 84 expects a signature and the public key in the witness, BIP 86 a signature alone, and both leave the scriptSig empty.14171819

What the purpose decides

BIP 44 stops at the key. It defines the path and nothing about the script that key should be used in, nor the address format. Later BIPs treat the purpose value as what signals the script type.516

BIP 84 fills that gap for SegWit version 0. It keeps BIP 44’s structure and changes only the purpose, 84′, which it says indicates the transaction serialization: each key becomes a pay-to-witness-public-key-hash output, 0x0014 followed by the key’s 20-byte hash, encoded as a bech32 address. It also gives extended keys different version bytes, so they print as zpub and zprv instead of xpub and xprv.1720

The author’s reason was compatibility in one direction: dedicated SegWit accounts mean only wallets that implement the scheme will find them. BIP 84 is deliberately not backwards compatible, and a wallet that does not know it will not discover the accounts at all.321

FIG. A12.3 Same shape, three purposes

BIP 44

m/44′/0′/0′/0/0
script
Not specified
address
Not specified
extended keys
Not specified
first receiving
no address: the BIP names no script

BIP 84

m/84′/0′/0′/0/0
script
P2WPKH: 0x0014{20-byte key hash}
address
BIP 173 format (published addresses: bc1q…)
extended keys
zpub / zprv version bytes
first receiving
bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu

BIP 86

m/86′/0′/0′/0/0
script
P2TR key path: 0x5120{output key}, unspendable script path
address
Not named (published addresses: bc1p…, bech32m)
extended keys
None defined (vectors print xpub / xprv)
first receiving
bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr

What each BIP states; where it states nothing, the published vectors are described instead. Addresses from BIP 84’s and BIP 86’s test vectors, reproduced by the tested model from the same mnemonic.

The first receiving path under each purpose, and what each BIP fixes beyond the path.14161718

BIP 86 does the same for Taproot. Purpose 86′ marks keys used as the internal key of a single-key P2TR output. The derived key becomes the internal key, is tweaked with a hash of the key alone, so that, as BIP 341 recommends, the output commits to an unspendable script path rather than to none, and the result goes into a version 1 output, 0x5120 followed by the 32-byte output key. BIP 86 defines no alternate version bytes, and its test vectors print as xprv and xpub.1418

Its motivation is candid about why fixed paths still matter. Many wallets and hardware signers keep only a seed backup, without the derivation path or script type, so a fixed path makes single-key Taproot outputs likely to be recovered. The author notes that there are now solutions that avoid fixed paths, and largely reuses the approach of BIPs 49 and 84 for ease of implementation.22

The purpose also keeps the schemes apart. The same mnemonic produces unrelated keys under 44′, 84′ and 86′, and the three build different kinds of output. What ties a key to a script is the BIP that defines the purpose, not anything in the key itself.1623

No new derivation was needed. BIP 86 points out that it uses the same method as BIPs 44, 49 and 84, so it should not be difficult to implement, and BIP 84 leaves further version bytes to SLIP-0132. A wallet that already walks BIP 44’s tree keeps the walk and changes the purpose at the top and the output it builds at the bottom.1624

Evidence

Each numbered marker in the text points here, and the ↩ links lead back to every place that cites an entry. Quotes are verbatim from the BIP files at commit 3a10b5b, including their wiki markup; links open the exact lines; the quoted text sits under each entry. Labels say what kind of statement each is: a rule, the author’s rationale, history, a test vector, or our own inference.

  1. ↩ a b Rule BIP 44 defines a logical hierarchy on top of BIP 32's derivation algorithm and BIP 43's purpose scheme; it is a particular application of BIP 43.

    Quoted source text (1)

    This BIP defines a logical hierarchy for deterministic wallets based on an algorithm described in BIP-0032 (BIP32 from now on) and purpose scheme described in BIP-0043 (BIP43 from now on). This BIP is a particular application of BIP43.

    BIP 44, lines 17–21
  2. ↩ a b Author’s rationale BIP 44's hierarchy is meant to handle multiple coins, multiple accounts, external and internal chains per account, and millions of addresses per chain.

    Quoted source text (1)

    It allows the handling of multiple coins, multiple accounts, external and internal chains per account and millions of addresses per chain.

    BIP 44, lines 25–27
  3. ↩ a b Author’s rationale BIP 84's motivation: a common scheme lets different wallets share a seed, and dedicated SegWit accounts mean only compatible wallets detect them.

    Quoted source text (1)

    With the usage of P2WPKH transactions it is necessary to have a common derivation scheme. It allows the user to use different HD wallets with the same masterseed and/or a single account seamlessly. Thus the user needs to create dedicated segregated witness accounts, which ensures that only wallets compatible with this BIP will detect the accounts and handle them appropriately.

    BIP 84, lines 20–23
  4. ↩ History BIP 44 (Palatinus, Rusnak; assigned 2014; requires BIPs 32 and 43), BIP 84 (Rusnak; 2017) and BIP 86 (Chow; 2021) are application-layer specifications, all recorded as Deployed.

    Quoted source text (5)

    Layer: Applications Title: Multi-Account Hierarchy for Deterministic Wallets Authors: Marek Palatinus <slush@satoshilabs.com> Pavol Rusnak <stick@satoshilabs.com>

    BIP 44, lines 3–12

    Status: Deployed Type: Specification Assigned: 2014-04-24 Requires: 32, 43

    BIP 44, lines 9–12

    Layer: Applications Title: Derivation scheme for P2WPKH based accounts Authors: Pavol Rusnak <stick@satoshilabs.com>

    BIP 84, lines 3–10

    Status: Deployed Type: Specification Assigned: 2017-12-28

    BIP 84, lines 8–10

    Layer: Applications Title: Key Derivation for Single Key P2TR Outputs Authors: Ava Chow <me@achow101.com> Status: Deployed Type: Specification Assigned: 2021-06-22

    BIP 86, lines 3–8
  5. ↩ a b c d e Rule BIP 44 defines five levels below m: purpose', coin_type', account', change and address_index; an apostrophe marks hardened derivation.

    Quoted source text (1)

    We define the following 5 levels in BIP32 path: <pre> m / purpose' / coin_type' / account' / change / address_index </pre> Apostrophe in the path indicates that BIP32 hardened derivation is used.

    BIP 44, lines 31–37
  6. ↩ a b Rule Purpose is the constant 44' (0x8000002C), following BIP 43, and marks the subtree as following this specification; it is hardened.

    Quoted source text (1)

    Purpose is a constant set to 44' (or 0x8000002C) following the BIP43 recommendation. It indicates that the subtree of this node is used according to this specification. Hardened derivation is used at this level.

    BIP 44, lines 43–46
  7. ↩ a b Rule Coin type gives each coin its own hardened subtree, avoiding address reuse across coins; BIP 44 lists 0' for Bitcoin and 1' for Bitcoin testnet and points to SLIP-0044 for the full list.

    Quoted source text (4)

    This level creates a separate subtree for every cryptocoin, avoiding reusing addresses across cryptocoins and improving privacy issues.

    BIP 44, lines 54–55

    |0 |0x80000000 |Bitcoin |- |1 |0x80000001 |Bitcoin Testnet

    BIP 44, lines 144–150

    This BIP is not a central directory for the registered coin types, please visit SatoshiLabs that maintains the full list:

    BIP 44, lines 153–154

    [[https://github.com/satoshilabs/slips/blob/master/slip-0044.md|SLIP-0044 : Registered coin types for BIP-0044]]

    BIP 44, line 156
  8. ↩ a b c Rule Accounts split the key space into independent user identities so coins are never mixed; they are numbered from 0, use hardened derivation, and software should not create an account while the previous one has no transaction history. BIP 44 likens them to bank accounts: one for donations, one for savings, one for common expenses.

    Quoted source text (3)

    This level splits the key space into independent user identities, so the wallet never mixes the coins across different accounts.

    BIP 44, lines 67–68

    Accounts are numbered from index 0 in sequentially increasing manner. This number is used as child index in BIP32 derivation. Hardened derivation is used at this level. Software should prevent a creation of an account if a previous account does not have a transaction history

    BIP 44, lines 75–81

    Users can use these accounts to organize the funds in the same fashion as bank accounts; for donation purposes (where all addresses are considered public), for saving purposes, for common expenses etc.

    BIP 44, lines 70–73
  9. ↩ a b c d e Rule Change is 0 for the external chain (addresses shown outside the wallet, for receiving) and 1 for the internal chain (change); it uses public derivation.

    Quoted source text (1)

    Constant 0 is used for external chain and constant 1 for internal chain (also known as change addresses). External chain is used for addresses that are meant to be visible outside of the wallet (e.g. for receiving payments). Internal chain is used for addresses which are not meant to be visible outside of the wallet and is used for return transaction change. Public derivation is used at this level.

    BIP 44, lines 88–94
  10. ↩ a b c d Rule Addresses are numbered from 0 along each chain, with public derivation.

    Quoted source text (1)

    Addresses are numbered from index 0 in sequentially increasing manner. This number is used as child index in BIP32 derivation. Public derivation is used at this level.

    BIP 44, lines 98–101
  11. ↩ Rule After importing a seed, software discovers accounts in order, scanning each account's external chain and stopping at the first account with no transactions; it works on transaction history, not balances.

    Quoted source text (2)

    # derive the first account's node (index = 0) # derive the external chain node of this account # scan addresses of the external chain; respect the gap limit described below # if no transactions are found on the external chain, stop discovery # if there are some transactions, increase the account index and go to step 1

    BIP 44, lines 108–112

    Please note that the algorithm works with the transaction history, not account balances

    BIP 44, lines 118–120
  12. ↩ History BIP 44 gives the address gap limit as 20 at the time of writing: after 20 unused addresses in a row, software stops scanning that chain. It scans only external chains, reasoning that internal chains receive only coins that come from the associated external chains, and wallet software should warn a user who tries to exceed the limit.

    Quoted source text (2)

    Address gap limit is currently set to 20. If the software hits 20 unused addresses in a row, it expects there are no used addresses beyond this point and stops searching the address chain. We scan just the external chains, because internal chains receive only coins that come from the associated external chains.

    BIP 44, lines 124–127

    Wallet software should warn when the user is trying to exceed the gap limit on an external chain by generating a new address.

    BIP 44, lines 129–130
  13. ↩ Test vector BIP 44's examples table lists 16 paths: the first and second address of the external and change chains, for the first and second account, for Bitcoin and for Bitcoin testnet.

    Quoted source text (2)

    |Bitcoin |first |external |first |m / 44' / 0' / 0' / 0 / 0

    BIP 44, lines 170–174

    |Bitcoin Testnet |second |change |second |m / 44' / 1' / 1' / 1 / 1

    BIP 44, lines 260–264
  14. ↩ a b c d e Test vector This site's model, starting from BIP 84's and BIP 86's published mnemonic, reproduces every published root, account and address value in both BIPs' test vectors (zprv/zpub for BIP 84; xprv/xpub, internal key, output key, scriptPubKey and address for BIP 86); the build fails otherwise. Intermediate values (node keys, fingerprints, key hashes, tweaks) are derived by the same tested model and implied by the published leaves, but not published themselves. BIP 86 defines no alternate version bytes, and its vectors print as xprv/xpub.

    Quoted source text (2)

    mnemonic = abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about rootpriv = zprvAWgYBBk7JR8Gjrh4UJQ2uJdG1r3WNRRfURiABBE3RvMXYSrRJL62XuezvGdPvG6GFBZduosCc1YP5wixPox7zhZLfiUm8aunE96BBa4Kei5

    BIP 84, lines 69–71

    mnemonic = abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about rootpriv = xprv9s21ZrQH143K3GJpoapnV8SFfukcVBSfeCficPSGfubmSFDxo1kuHnLisriDvSnRRuL2Qrg5ggqHKNVpxR86QEC8w35uxmGoggxtQTPvfUu

    BIP 86, lines 86–87
  15. ↩ a b c Test vector From an account's extended public key alone, the model re-derives every published receiving and change address of that account, because the two levels below the account use public derivation. On its own such a key cannot spend.

    Quoted source text (3)

    Public derivation is used at this level.

    BIP 44, line 94

    xpub = zpub6rFR7y4Q2AijBEqTUquhVz398htDFrtymD9xYYfG1m4wAcvPhXNfE3EfH1r1ADqtfSdVCToUG868RvUUkgDKf31mGDtKsAYz2oz2AGutZYs

    BIP 84, line 75

    xpub = xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ

    BIP 86, line 92
  16. ↩ a b c d e Editorial inference BIP 44 itself names no script type or address format; BIPs 84 and 86 treat the purpose value as what signals the script type or serialization, and tie one to each purpose.

    Quoted source text (2)

    but only uses a different purpose value to indicate the different transaction serialization method.

    BIP 84, line 35

    To derive a public key from the root account, this BIP uses the same account-structure as defined in BIPs [[bip-0044.mediawiki|44]], [[bip-0049.mediawiki|49]], and [[bip-0084.mediawiki|84]], but with a different purpose value for the script type.

    BIP 86, lines 37–39
  17. ↩ a b c Rule BIP 84 keeps BIP 44's account structure and changes only the purpose, 84', to indicate the P2WPKH serialization (the BIP 173 format), building addresses with BIP 141's P2WPKH encapsulation.

    Quoted source text (4)

    This BIP defines the derivation scheme for HD wallets using the P2WPKH ([[bip-0173.mediawiki|BIP 173]]) serialization format for segregated witness transactions.

    BIP 84, line 16

    this BIP uses the same account-structure as defined in [[bip-0044.mediawiki|BIP 44]] and [[bip-0049.mediawiki|BIP 49]], but only uses a different purpose value to indicate the different transaction serialization method.

    BIP 84, line 35

    For the <code>purpose</code>-path level it uses <code>84'</code>.

    BIP 84, line 41

    witness: <signature> <pubkey> scriptSig: (empty) scriptPubKey: 0 <20-byte-key-hash> (0x0014{20-byte-key-hash})

    BIP 84, lines 49–52
  18. ↩ a b c Rule BIP 86 uses purpose 86' for keys used as the internal key of single-key P2TR outputs: the internal key is lift_x(derived key), tweaked with a hash of the key alone so that, as BIP 341 recommends, the output commits to an unspendable script path rather than none, in a version 1 output 0x5120{output key}.

    Quoted source text (5)

    This document suggests a derivation scheme for HD wallets whose keys are involved in single key P2TR ([[bip-0341.mediawiki|BIP 341]]) outputs as the Taproot internal key.

    BIP 86, lines 14–15

    For the <tt>purpose</tt>-path level it uses <tt>86'</tt>.

    BIP 86, line 45

    internal_key: lift_x(derived_key) 32_byte_output_key: internal_key + int(HashTapTweak(bytes(internal_key)))G

    BIP 86, lines 60–61

    scriptPubKey: 1 <32_byte_output_key> (0x5120{32_byte_output_key})

    BIP 86, lines 70–71

    If the spending conditions do not require a script path, the output key should commit to an unspendable script path instead of having no script path.

    BIP 86, lines 54–57
  19. ↩ Rule BIP 84's outputs are spent with an empty scriptSig and a witness of a signature and the public key; BIP 86's with an empty scriptSig and a witness holding only a signature.

    Quoted source text (2)

    witness: <signature> <pubkey> scriptSig: (empty)

    BIP 84, lines 49–51

    witness: <signature> scriptSig: (empty)

    BIP 86, lines 68–69
  20. ↩ Rule BIP 84 serializes extended keys with alternate version bytes: 0x04b24746 (zpub) and 0x04b2430c (zprv), with vpub/vprv on testnet.

    Quoted source text (1)

    Extended public keys use <code>0x04b24746</code> to produce a "zpub" prefix, and private keys use <code>0x04b2430c</code> to produce a "zprv" prefix. Testnet uses <code>0x045f1cf6</code> "vpub" and <code>0x045f18bc</code> "vprv."

    BIP 84, line 57
  21. ↩ Rule BIPs 84 and 86 are not backwards compatible by design: a wallet that does not implement them will not discover the accounts at all.

    Quoted source text (2)

    This BIP is not backwards compatible by design as described under [[#considerations|considerations]]. An incompatible wallet will not discover accounts at all and the user will notice that something is wrong.

    BIP 84, line 64

    This BIP is not backwards compatible by design. An incompatible wallet will not discover these accounts at all and the user will notice that something is wrong.

    BIP 86, lines 76–78
  22. ↩ Author’s rationale BIP 86's motivation: many wallets and hardware signers still use seed backups without derivation path or script information, so a fixed path makes single-key Taproot outputs likely to be recoverable; although there are now solutions that avoid fixed paths, it largely reuses the approach of BIPs 49 and 84 for ease of implementation.

    Quoted source text (1)

    it is useful to have a common derivation scheme so that HD wallets that only have a backup of the HD seed can be likely to recover single key Taproot outputs. Although there are now solutions which obviate the need for fixed derivation paths for specific script types, many software wallets and hardware signers still use seed backups which lack derivation path and script information. Thus we largely use the same approach used in BIPs [[bip-0049.mediawiki|49]] and [[bip-0084.mediawiki|84]] for ease of implementation.

    BIP 86, lines 23–28
  23. ↩ Test vector The same mnemonic gives unrelated keys under purposes 44', 84' and 86' (and the schemes use different output types).

    Quoted source text (2)

    // Account 0, first receiving address = m/84'/0'/0'/0/0

    BIP 84, lines 77–80

    // Account 0, first receiving address = m/86'/0'/0'/0/0

    BIP 86, line 94
  24. ↩ Author’s rationale BIP 86 notes that because it uses the same method as BIPs 44, 49 and 84 it should not be difficult to implement; BIP 84 points to SLIP-0132 for further registered version bytes.

    Quoted source text (2)

    However this BIP uses the same method used in BIPs 44, 49, and 84, so it should not be difficult to implement.

    BIP 86, lines 80–81

    Additional registered version bytes are listed in [[https://github.com/satoshilabs/slips/blob/master/slip-0132.md|SLIP-0132]].

    BIP 84, line 59