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 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
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
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
- mmaster key
- purpose′which convention: 44′, 84′, 86′hardened
- coin_type′0′ Bitcoin · 1′ testnethardened
- account′independent identities, from 0hardened
- change0 receive · 1 changepublic derivation
- 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.
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
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.
- mMaster key
- 84'purpose
- 0'coin_type
- 0'account
- 0change
- 0address_index
- →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.
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.
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.
Drop the parity byte: the internal key is the x coordinate
- internal key
cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115
Tweak it with no script tree: Q = P + int(hashTapTweak(P))·G
- tweak
2ca01ed85cf6b6526f73d39a1111cd80333bfdc00ce98992859848a90a6f0258- output key
a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c
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.
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
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.
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.
-
↩ 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.
-
↩ 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.
-
↩ 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.
-
↩ 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.
BIP 44 L3–12 BIP 44 L9–12 BIP 84 L3–10 BIP 84 L8–10 BIP 86 L3–8
Quoted source text (5)
Layer: Applications Title: Multi-Account Hierarchy for Deterministic Wallets Authors: Marek Palatinus <slush@satoshilabs.com> Pavol Rusnak <stick@satoshilabs.com>
Status: Deployed Type: Specification Assigned: 2014-04-24 Requires: 32, 43
Layer: Applications Title: Derivation scheme for P2WPKH based accounts Authors: Pavol Rusnak <stick@satoshilabs.com>
Status: Deployed Type: Specification Assigned: 2017-12-28
Layer: Applications Title: Key Derivation for Single Key P2TR Outputs Authors: Ava Chow <me@achow101.com> Status: Deployed Type: Specification Assigned: 2021-06-22
-
↩ 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.
-
↩ 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.
-
↩ 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.
BIP 44 L54–55 BIP 44 L144–150 BIP 44 L153–154 BIP 44 L156
Quoted source text (4)
This level creates a separate subtree for every cryptocoin, avoiding reusing addresses across cryptocoins and improving privacy issues.
|0 |0x80000000 |Bitcoin |- |1 |0x80000001 |Bitcoin Testnet
This BIP is not a central directory for the registered coin types, please visit SatoshiLabs that maintains the full list:
[[https://github.com/satoshilabs/slips/blob/master/slip-0044.md|SLIP-0044 : Registered coin types for BIP-0044]]
-
↩ 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.
BIP 44 L67–68 BIP 44 L75–81 BIP 44 L70–73
Quoted source text (3)
This level splits the key space into independent user identities, so the wallet never mixes the coins across different accounts.
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
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.
-
↩ 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.
-
↩ 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.
-
↩ 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.
BIP 44 L108–112 BIP 44 L118–120
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
Please note that the algorithm works with the transaction history, not account balances
-
↩ 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.
BIP 44 L124–127 BIP 44 L129–130
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.
Wallet software should warn when the user is trying to exceed the gap limit on an external chain by generating a new address.
-
↩ 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.
BIP 44 L170–174 BIP 44 L260–264
Quoted source text (2)
|Bitcoin |first |external |first |m / 44' / 0' / 0' / 0 / 0
|Bitcoin Testnet |second |change |second |m / 44' / 1' / 1' / 1 / 1
-
↩ 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
mnemonic = abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about rootpriv = xprv9s21ZrQH143K3GJpoapnV8SFfukcVBSfeCficPSGfubmSFDxo1kuHnLisriDvSnRRuL2Qrg5ggqHKNVpxR86QEC8w35uxmGoggxtQTPvfUu
-
↩ 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.
BIP 44 L94 BIP 84 L75 BIP 86 L92
Quoted source text (3)
Public derivation is used at this level.
xpub = zpub6rFR7y4Q2AijBEqTUquhVz398htDFrtymD9xYYfG1m4wAcvPhXNfE3EfH1r1ADqtfSdVCToUG868RvUUkgDKf31mGDtKsAYz2oz2AGutZYs
xpub = xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ
-
↩ 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.
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.
-
↩ 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.
BIP 84 L16 BIP 84 L35 BIP 84 L41 BIP 84 L49–52
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.
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.
For the <code>purpose</code>-path level it uses <code>84'</code>.
witness: <signature> <pubkey> scriptSig: (empty) scriptPubKey: 0 <20-byte-key-hash> (0x0014{20-byte-key-hash})
-
↩ 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}.
BIP 86 L14–15 BIP 86 L45 BIP 86 L60–61 BIP 86 L70–71 BIP 86 L54–57
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.
For the <tt>purpose</tt>-path level it uses <tt>86'</tt>.
internal_key: lift_x(derived_key) 32_byte_output_key: internal_key + int(HashTapTweak(bytes(internal_key)))G
scriptPubKey: 1 <32_byte_output_key> (0x5120{32_byte_output_key})
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.
-
↩ 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)
witness: <signature> scriptSig: (empty)
-
↩ 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."
-
↩ 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.
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.
-
↩ 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.
-
↩ 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
// Account 0, first receiving address = m/86'/0'/0'/0/0
-
↩ 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.
Additional registered version bytes are listed in [[https://github.com/satoshilabs/slips/blob/master/slip-0132.md|SLIP-0132]].