{"number":384,"title":"combo() Output Script Descriptors","authors":["Pieter Wuille","Ava Chow"],"status":"Deployed","type":"Specification","layer":"Applications","created":"2021-06-27","license":"BSD-2-Clause","requires":[380],"replaces":[],"replacedBy":[],"discussion":[],"abstract":"This document specifies combo() output script descriptors. These take a key and produce P2PK, P2PKH, P2WPKH, and P2SH-P2WPKH output scripts if applicable to the key.","eli5":"Defines a 'combo' descriptor that, from a single key, describes all the common address types that key could be used with. This is handy for wallets that need to find coins sent to any of those formats, for example when importing an old key.","categories":["wallets"],"filename":"bip-0384.mediawiki","githubUrl":"https://github.com/bitcoin/bips/blob/master/bip-0384.mediawiki","format":"mediawiki","readingMinutes":1,"inbound":1,"revisions":12,"impact":41,"core":false,"references":[],"lastModified":"2026-09-17","html":"<h2 id=\"abstract\">Abstract</h2>\n<p>This document specifies <code>combo()</code> output script descriptors. These take a key and produce P2PK, P2PKH, P2WPKH, and P2SH-P2WPKH output scripts if applicable to the key.</p>\n<h2 id=\"copyright\">Copyright</h2>\n<p>This BIP is licensed under the BSD 2-clause license.</p>\n<h2 id=\"motivation\">Motivation</h2>\n<p>In order to make the transition from traditional key based wallets to descriptor based wallets easier, it is useful to be able to take a key and produce the scripts which have traditionally been produced by wallet software.</p>\n<h2 id=\"specification\">Specification</h2>\n<p>A new top level script expression is defined: <code>combo(KEY)</code>. This expression can only be used as a top level expression. It takes a single key expression as an argument and produces either 2 or 4 output scripts, depending on the key. A <code>combo()</code> expression always produces a P2PK and P2PKH script, the same as putting the key in both a <code>pk()</code> and a <code>pkh()</code> expression. If the key is/has a compressed public key, then P2WPKH and P2SH-P2WPKH scripts are also produced, the same as putting the key in both a <code>wpkh()</code> and <code>sh(wpkh())</code> expression.</p>\n<h2 id=\"test-vectors\">Test Vectors</h2>\n<p>Valid descriptors followed by the scripts they produce. Descriptors involving derived child keys will have the 0th, and 1st scripts in additional sub-bullets.</p>\n<ul><li>\n<code>combo(L4rK1yDtCWekvXuE6oXD9jCYfFNV2cWRpVuPLBcCU2z8TrisoyY1)</code>\n<ul><li>\n<code>2103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bdac</code>\n</li></ul>\n<ul><li>\n<code>76a9149a1c78a507689f6f54b847ad1cef1e614ee23f1e88ac</code>\n</li></ul>\n<ul><li>\n<code>00149a1c78a507689f6f54b847ad1cef1e614ee23f1e</code>\n</li></ul>\n<ul><li>\n<code>a91484ab21b1b2fd065d4504ff693d832434b6108d7b87</code>\n</li></ul>\n</li><li>\n<code>combo(04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235)</code>\n<ul><li>\n<code>4104a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235ac</code>\n</li></ul>\n<ul><li>\n<code>76a914b5bd079c4d57cc7fc28ecf8213a6b791625b818388ac</code>\n</li></ul>\n</li><li>\n<code>combo([01234567]xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL)</code>\n<ul><li>\n<code>2102d2b36900396c9282fa14628566582f206a5dd0bcc8d5e892611806cafb0301f0ac</code>\n</li></ul>\n<ul><li>\n<code>76a91431a507b815593dfc51ffc7245ae7e5aee304246e88ac</code>\n</li></ul>\n<ul><li>\n<code>001431a507b815593dfc51ffc7245ae7e5aee304246e</code>\n</li></ul>\n<ul><li>\n<code>a9142aafb926eb247cb18240a7f4c07983ad1f37922687</code>\n</li></ul>\n</li><li>\n<code>combo(xprvA2JDeKCSNNZky6uBCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334/*)</code>\n<ul><li>\nChild 0\n<ul><li>\n<code>2102df12b7035bdac8e3bab862a3a83d06ea6b17b6753d52edecba9be46f5d09e076ac</code>\n</li></ul>\n<ul><li>\n<code>76a914f90e3178ca25f2c808dc76624032d352fdbdfaf288ac</code>\n</li></ul>\n<ul><li>\n<code>0014f90e3178ca25f2c808dc76624032d352fdbdfaf2</code>\n</li></ul>\n<ul><li>\n<code>a91408f3ea8c68d4a7585bf9e8bda226723f70e445f087</code>\n</li></ul>\n</li><li>\nChild 1\n<ul><li>\n<code>21032869a233c9adff9a994e4966e5b821fd5bac066da6c3112488dc52383b4a98ecac</code>\n</li></ul>\n<ul><li>\n<code>76a914a8409d1b6dfb1ed2a3e8aa5e0ef2ff26b15b75b788ac</code>\n</li></ul>\n<ul><li>\n<code>0014a8409d1b6dfb1ed2a3e8aa5e0ef2ff26b15b75b7</code>\n</li></ul>\n<ul><li>\n<code>a91473e39884cb71ae4e5ac9739e9225026c99763e6687</code>\n</li></ul>\n</li></ul>\n</li></ul>\n<p>Invalid descriptors</p>\n<ul><li>\n<code>combo()</code> in <code>sh</code> : <code>sh(combo(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))</code>\n</li></ul>\n<ul><li>\n<code>combo()</code> in <code>wsh</code> : <code>wsh(combo(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))</code>\n</li></ul>\n<ul><li>\nScript in <code>combo()</code>: <code>combo(pkh(03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd))</code>\n</li></ul>\n<h2 id=\"backwards-compatibility\">Backwards Compatibility</h2>\n<p><code>combo()</code> descriptors use the format and general operation specified in <a href=\"/bip/380\">380</a>. As this is a wholly new descriptor, it is not compatible with any implementation. However the scripts produced are standard scripts so existing software are likely to be familiar with them.</p>\n<h2 id=\"reference-implementation\">Reference Implementation</h2>\n<p><code>combo()</code> descriptors have been implemented in Bitcoin Core since version 0.17.</p>","toc":[{"id":"abstract","title":"Abstract","level":2},{"id":"copyright","title":"Copyright","level":2},{"id":"motivation","title":"Motivation","level":2},{"id":"specification","title":"Specification","level":2},{"id":"test-vectors","title":"Test Vectors","level":2},{"id":"backwards-compatibility","title":"Backwards Compatibility","level":2},{"id":"reference-implementation","title":"Reference Implementation","level":2}],"history":{"totalCommits":12,"firstCommit":"2021-06-27T18:49:41-04:00","lastUpdated":"2026-09-17T15:03:30+02:00","events":[{"sha":"2490324891d21038365b4d62708f94b26cea7ac0","date":"2026-09-17T15:03:30+02:00","author":"Daniela Brozzoni","message":"bip384: Update to Specification type","url":"https://github.com/bitcoin/bips/commit/2490324891d21038365b4d62708f94b26cea7ac0","kind":"edit"},{"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":"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":"bc66fdb1664781eacfa23c9077f268eb918103e2","date":"2025-06-18T14:56:02-07:00","author":"Ava Chow","message":"descriptors: Require BIP 380","url":"https://github.com/bitcoin/bips/commit/bc66fdb1664781eacfa23c9077f268eb918103e2","kind":"edit"},{"sha":"d71428ade56ad9a90e18d643eefefefb6088fbd7","date":"2024-07-10T19:02:19-04:00","author":"Ava Chow","message":"380-387: Mark basic descriptor BIPs as final","url":"https://github.com/bitcoin/bips/commit/d71428ade56ad9a90e18d643eefefefb6088fbd7","kind":"status"},{"sha":"4a937e1887891b58eb5a1c5bebc3eda00d3ba5c9","date":"2024-04-06T09:26:59-05:00","author":"Chris Stewart","message":"Fix typo in BIP384 expected descriptors","url":"https://github.com/bitcoin/bips/commit/4a937e1887891b58eb5a1c5bebc3eda00d3ba5c9","kind":"edit"},{"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":"bb562aa8e9c438e653668b08e5c16b7e71abc832","date":"2023-06-29T16:15:14-04:00","author":"Andrew Chow","message":"descriptors: add test vectors","url":"https://github.com/bitcoin/bips/commit/bb562aa8e9c438e653668b08e5c16b7e71abc832","kind":"edit"},{"sha":"7007dbac006b8979c352f336039a47ffe32671c5","date":"2021-09-15T09:21:09-03:00","author":"jaonoctus","message":"typo: BIP [380-385]","url":"https://github.com/bitcoin/bips/commit/7007dbac006b8979c352f336039a47ffe32671c5","kind":"edit"},{"sha":"f52f1e82e52367ebbda2656845a71ad92a4ed677","date":"2021-06-27T18:49:41-04:00","author":"Andrew Chow","message":"Specify BIP 384: Combo descriptors","url":"https://github.com/bitcoin/bips/commit/f52f1e82e52367ebbda2656845a71ad92a4ed677","kind":"edit"}]}}