{"number":86,"title":"Key Derivation for Single Key P2TR Outputs","authors":["Ava Chow"],"status":"Deployed","type":"Specification","layer":"Applications","created":"2021-06-22","license":"BSD-2-Clause","requires":[],"replaces":[],"replacedBy":[],"discussion":[],"abstract":"This document suggests a derivation scheme for HD wallets whose keys are involved in single key P2TR ( BIP 341 ) outputs as the Taproot internal key.","eli5":"Defines the standard key path for HD wallets that use single-key Taproot addresses (those starting with 'bc1p'). It plays the same role for Taproot that BIP 84 does for SegWit, so seed phrases restore the same Taproot addresses across different wallets.","categories":["wallets","derivation"],"filename":"bip-0086.mediawiki","githubUrl":"https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki","format":"mediawiki","readingMinutes":2,"inbound":2,"revisions":8,"impact":59,"core":false,"references":[32,43,44,49,84,341],"lastModified":"2025-10-08","html":"<h2 id=\"abstract\">Abstract</h2>\n<p>This document suggests a derivation scheme for HD wallets whose keys are involved in single key P2TR (<a href=\"/bip/341\">BIP 341</a>) outputs as the Taproot internal key.</p>\n<h3 id=\"copyright\">Copyright</h3>\n<p>This BIP is licensed under the 2-clause BSD license.</p>\n<h2 id=\"motivation\">Motivation</h2>\n<p>With the usage of single key P2TR transactions, 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 <a href=\"/bip/49\">49</a> and <a href=\"/bip/84\">84</a> for ease of implementation.</p>\n<h2 id=\"specifications\">Specifications</h2>\n<p>This BIP defines the two needed steps to derive multiple deterministic addresses based on a <a href=\"/bip/32\">BIP 32</a> master private key.</p>\n<h3 id=\"public-key-derivation\">Public key derivation</h3>\n<p>To derive a public key from the root account, this BIP uses the same account-structure as defined in BIPs <a href=\"/bip/44\">44</a>, <a href=\"/bip/49\">49</a>, and <a href=\"/bip/84\">84</a>, but with a different purpose value for the script type.</p>\n<pre><code>m / purpose' / coin_type' / account' / change / address_index</code></pre>\n<p>For the <code>purpose</code>-path level it uses <code>86'</code>. The rest of the levels are used as defined in BIPs 44, 49, and 84.</p>\n<p>A key derived with this derivation path pattern will be referred to as <code>derived_key</code> further in this document.</p>\n<h3 id=\"address-derivation\">Address derivation</h3>\n<p><a href=\"/bip/341#cite-ref-22-0\">BIP 341</a> states: \"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. This can be achieved by computing the output key point as <em>Q = P + int(hash<sub>TapTweak</sub>(bytes(P)))G</em>.\" Thus:</p>\n<pre><code>internal_key:       lift_x(derived_key)\n32_byte_output_key: internal_key + int(HashTapTweak(bytes(internal_key)))G</code></pre>\n<p>In a transaction, the scripts and witnesses are as defined in <a href=\"/bip/341#specification\">BIP 341</a>:</p>\n<pre><code>witness:      &lt;signature&gt;\nscriptSig:    (empty)\nscriptPubKey: 1 &lt;32_byte_output_key&gt;\n              (0x5120{32_byte_output_key})</code></pre>\n<h2 id=\"backwards-compatibility\">Backwards Compatibility</h2>\n<p>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.</p>\n<p>However this BIP uses the same method used in BIPs 44, 49, and 84, so it should not be difficult to implement.</p>\n<h2 id=\"test-vectors\">Test vectors</h2>\n<pre><code>mnemonic = abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about\nrootpriv = xprv9s21ZrQH143K3GJpoapnV8SFfukcVBSfeCficPSGfubmSFDxo1kuHnLisriDvSnRRuL2Qrg5ggqHKNVpxR86QEC8w35uxmGoggxtQTPvfUu\nrootpub  = xpub661MyMwAqRbcFkPHucMnrGNzDwb6teAX1RbKQmqtEF8kK3Z7LZ59qafCjB9eCRLiTVG3uxBxgKvRgbubRhqSKXnGGb1aoaqLrpMBDrVxga8\n\n// Account 0, root = m/86'/0'/0'\nxprv = xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk\nxpub = xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ\n\n// Account 0, first receiving address = m/86'/0'/0'/0/0\nxprv         = xprvA449goEeU9okwCzzZaxiy475EQGQzBkc65su82nXEvcwzfSskb2hAt2WymrjyRL6kpbVTGL3cKtp9herYXSjjQ1j4stsXXiRF7kXkCacK3T\nxpub         = xpub6H3W6JmYJXN49h5TfcVjLC3onS6uPeUTTJoVvRC8oG9vsTn2J8LwigLzq5tHbrwAzH9DGo6ThGUdWsqce8dGfwHVBxSbixjDADGGdzF7t2B\ninternal_key = cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115\noutput_key   = a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c\nscriptPubKey = 5120a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c\naddress      = bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr\n\n// Account 0, second receiving address = m/86'/0'/0'/0/1\nxprv         = xprvA449goEeU9okyiF1LmKiDaTgeXvmh87DVyRd35VPbsSop8n8uALpbtrUhUXByPFKK7C2yuqrB1FrhiDkEMC4RGmA5KTwsE1aB5jRu9zHsuQ\nxpub         = xpub6H3W6JmYJXN4CCKUSnriaiQRCZmG6aq4sCMDqTu1ACyngw7HShf59hAxYjXgKDuuHThVEUzdHrc3aXCr9kfvQvZPit5dnD3K9xVRBzjK3rX\ninternal_key = 83dfe85a3151d2517290da461fe2815591ef69f2b18a2ce63f01697a8b313145\noutput_key   = a82f29944d65b86ae6b5e5cc75e294ead6c59391a1edc5e016e3498c67fc7bbb\nscriptPubKey = 5120a82f29944d65b86ae6b5e5cc75e294ead6c59391a1edc5e016e3498c67fc7bbb\naddress      = bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh\n\n// Account 0, first change address = m/86'/0'/0'/1/0\nxprv         = xprvA3Ln3Gt3aphvUgzgEDT8vE2cYqb4PjFfpmbiFKphxLg1FjXQpkAk5M1ZKDY15bmCAHA35jTiawbFuwGtbDZogKF1WfjwxML4gK7WfYW5JRP\nxpub         = xpub6GL8SnQwRCGDhB59LEz9HMyM6sRYoByXBzXK3iEKWgCz8XrZNHUzd9L3AUBELW5NzA7dEFvMas1F84TuPH3xqdUA5tumaGWFgihJzWytXe3\ninternal_key = 399f1b2f4393f29a18c937859c5dd8a77350103157eb880f02e8c08214277cef\noutput_key   = 882d74e5d0572d5a816cef0041a96b6c1de832f6f9676d9605c44d5e9a97d3dc\nscriptPubKey = 5120882d74e5d0572d5a816cef0041a96b6c1de832f6f9676d9605c44d5e9a97d3dc\naddress      = bc1p3qkhfews2uk44qtvauqyr2ttdsw7svhkl9nkm9s9c3x4ax5h60wqwruhk7</code></pre>\n<h2 id=\"reference\">Reference</h2>\n<ul><li>\n<a href=\"/bip/32\">BIP32 - Hierarchical Deterministic Wallets</a>\n</li></ul>\n<ul><li>\n<a href=\"/bip/43\">BIP43 - Purpose Field for Deterministic Wallets</a>\n</li></ul>\n<ul><li>\n<a href=\"/bip/44\">BIP44 - Multi-Account Hierarchy for Deterministic Wallets</a>\n</li></ul>\n<ul><li>\n<a href=\"/bip/49\">BIP49 - Derivation scheme for P2WPKH-nested-in-P2SH based accounts</a>\n</li></ul>\n<ul><li>\n<a href=\"/bip/84\">BIP84 - Derivation scheme for P2WPKH based accounts</a>\n</li></ul>\n<ul><li>\n<a href=\"/bip/341\">BIP341 - Taproot: SegWit version 1 spending rules</a>\n</li></ul>","toc":[{"id":"abstract","title":"Abstract","level":2},{"id":"copyright","title":"Copyright","level":3},{"id":"motivation","title":"Motivation","level":2},{"id":"specifications","title":"Specifications","level":2},{"id":"public-key-derivation","title":"Public key derivation","level":3},{"id":"address-derivation","title":"Address derivation","level":3},{"id":"backwards-compatibility","title":"Backwards Compatibility","level":2},{"id":"test-vectors","title":"Test vectors","level":2},{"id":"reference","title":"Reference","level":2}],"history":{"totalCommits":8,"firstCommit":"2021-06-22T20:59:29-04:00","lastUpdated":"2025-10-08T14:59:36-07:00","events":[{"sha":"24e96e870fffaa257b465ce1f0370c14aac588e8","date":"2025-10-08T14:59:36-07:00","author":"Murch","message":"process: Created ↦ Assigned","url":"https://github.com/bitcoin/bips/commit/24e96e870fffaa257b465ce1f0370c14aac588e8","kind":"edit"},{"sha":"5207ef92a52d0b8902895b0dbb40823a4d698ec9","date":"2025-04-11T20:08:17-07:00","author":"Murch","message":"process: Author ↦ Authors","url":"https://github.com/bitcoin/bips/commit/5207ef92a52d0b8902895b0dbb40823a4d698ec9","kind":"edit"},{"sha":"59730dec4fb641a41589aa1b91d3c452f13e0e36","date":"2025-04-11T20:05:13-07:00","author":"Murch","message":"process: Remove Comments-URI and -Summary","url":"https://github.com/bitcoin/bips/commit/59730dec4fb641a41589aa1b91d3c452f13e0e36","kind":"edit"},{"sha":"a233bde4af52c6a11269e2e6dd9707abce441ffe","date":"2025-04-11T18:19:21-07:00","author":"Murch","message":"process: Standards Track ↦ Specification","url":"https://github.com/bitcoin/bips/commit/a233bde4af52c6a11269e2e6dd9707abce441ffe","kind":"edit"},{"sha":"5d3ceb37734f80b2ec206fc94245e3bfd6d5b0f0","date":"2025-04-11T18:08:44-07:00","author":"Murch","message":"process: Final/Active ↦ Deployed","url":"https://github.com/bitcoin/bips/commit/5d3ceb37734f80b2ec206fc94245e3bfd6d5b0f0","kind":"status"},{"sha":"516fae672639d998f00025809c57473d704a8f61","date":"2024-07-10T18:54:37-04:00","author":"Ava Chow","message":"86: Mark as final","url":"https://github.com/bitcoin/bips/commit/516fae672639d998f00025809c57473d704a8f61","kind":"status"},{"sha":"a28b021b9933cb6b035cbb94fc1a15c30da3f6fd","date":"2023-12-13T11:12:08-05:00","author":"Ava Chow","message":"Update contact info for achow101","url":"https://github.com/bitcoin/bips/commit/a28b021b9933cb6b035cbb94fc1a15c30da3f6fd","kind":"edit"},{"sha":"330b56b35867fa403634bf8d0ede0d2cb235aab5","date":"2021-06-22T20:59:29-04:00","author":"Andrew Chow","message":"Specify BIP 86: Key Derivation for Single Key P2TR Outputs","url":"https://github.com/bitcoin/bips/commit/330b56b35867fa403634bf8d0ede0d2cb235aab5","kind":"edit"}]}}