<p>This is a draft answer and may contain inaccuracies. I will update if it does.</p>
<p>It is worth noting that it is looking likely that Taproot will be active on mainnet in November 2021 but until then Taproot rules will not be enforced on the network. Any attempted Taproot spends before then will be treated as anyone-can-spend by the network.</p>
<p>Bitcoin Core <a href="https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.21.1.md" rel="nofollow noreferrer">v0.21.1</a> allowed you to send to a Taproot (SegWit version 1, <a href="https://bitcoin.stackexchange.com/questions/101117/what-problems-identified-with-bech32-addresses-have-been-resolved-with-the-updat">bech32m</a> encoding) address. It also supported validating a Taproot spend on regtest and signet. But it didn't let you generate a mainnet Taproot address in the wallet (you could generate a regtest Taproot address?) or spend from a Taproot UTXO.</p>
<p>For <a href="https://github.com/bitcoin/bitcoin/issues/20851" rel="nofollow noreferrer">v22.0</a> there are wallet pull requests (e.g. <a href="https://github.com/bitcoin/bitcoin/pull/21365" rel="nofollow noreferrer">PR 21365</a>, <a href="https://github.com/bitcoin/bitcoin/pull/22051" rel="nofollow noreferrer">PR 22051</a>, <a href="https://github.com/bitcoin/bitcoin/pull/22166" rel="nofollow noreferrer">PR 22166</a>) to allow you to spend from a Taproot UTXO as long as the key path or script path you are spending from is only a single pubkey spend (e.g. the descriptors <code>tr(KEY)</code> or <code>tr(KEY,{pk(KEY),pk(KEY)}</code>. Any scripts, multisig or MuSig spends (e.g. <code>tr(MUSIG, {wsh(SCRIPT), wmulti(k,KEY_1,KEY_2,...,KEY_n)}</code>) aren't supported. The descriptor wallet doesn't yet support arbitrary scripts at all, Taproot or non-Taproot, that will come later when descriptors <a href="https://bitcoin.stackexchange.com/questions/106586/output-descriptor-for-an-arbitrary-script/106587">support Miniscript</a>. The wallet will generate a valid Schnorr signature (using the libsecp256k1 library) to spend the Taproot UTXO but won't broadcast it (that will be supported later after Taproot has activated in November 2021).</p>
<p>You can create a descriptor wallet using the instructions <a href="https://bitcoin.stackexchange.com/questions/100008/how-do-i-create-a-descriptor-wallet">here</a>.</p>
<p>Information on the various descriptors (including the <code>tr()</code> Taproot descriptor) is <a href="https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md" rel="nofollow noreferrer">here</a>. That doc has a Taproot descriptor <a href="https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#examples" rel="nofollow noreferrer">example</a>.</p>
<p><code>tr(c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5,{pk(fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556),pk(e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13)})</code></p>
<p><code>c6047f...</code>, <code>fff97b...</code> and <code>e493db...</code> are example Schnorr public keys. <code>c6047f...</code> is in the Taproot key path and the other two public keys are in the script path, the Merkle tree of alternative scripts that can be spent from within a P2TR address.</p>

CC BY-SA 4.0
2021-06-10T13:55:08.443Z
2021-06-10T15:28:20.283Z
2021-06-10T15:28:20.283Z
Michael Folkson
<p>What wallet support for Taproot will be included in Bitcoin Core <a href="https://github.com/bitcoin/bitcoin/issues/20851" rel="nofollow noreferrer">v22.0</a>? What will I be able to do and what won't I be able to do using the Core wallet?</p>

<wallet><bitcoin-core-development><taproot><output-script-descriptors>
What wallet support for Taproot will be included in Bitcoin Core v22.0?
Michael Folkson
# What wallet support for Taproot will be included in Bitcoin Core v22.0?

(Asked by: username_0 on 2021-06-10)

What wallet support for Taproot will be included in Bitcoin Core [v22.0](https://github.com/bitcoin/bitcoin/issues/20851)? What will I be able to do and what won't I be able to do using the Core wallet?

**Tags:** wallet, bitcoin-core-development, taproot, output-script-descriptors


---

## 1 answers

### Answer by username_0 on 2021-06-10. Score: 3 | Accepted answer

This is a draft answer and may contain inaccuracies. I will update if it does.

It is worth noting that it is looking likely that Taproot will be active on mainnet in November 2021 but until then Taproot rules will not be enforced on the network. Any attempted Taproot spends before then will be treated as anyone-can-spend by the network.

Bitcoin Core [v0.21.1](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.21.1.md) allowed you to send to a Taproot (SegWit version 1, [bech32m](https://bitcoin.stackexchange.com/questions/101117/what-problems-identified-with-bech32-addresses-have-been-resolved-with-the-updat) encoding) address. It also supported validating a Taproot spend on regtest and signet. But it didn't let you generate a mainnet Taproot address in the wallet (you could generate a regtest Taproot address?) or spend from a Taproot UTXO.

For [v22.0](https://github.com/bitcoin/bitcoin/issues/20851) there are wallet pull requests (e.g. [PR 21365](https://github.com/bitcoin/bitcoin/pull/21365), [PR 22051](https://github.com/bitcoin/bitcoin/pull/22051), [PR 22166](https://github.com/bitcoin/bitcoin/pull/22166)) to allow you to spend from a Taproot UTXO as long as the key path or script path you are spending from is only a single pubkey spend (e.g. the descriptors `tr(KEY)` or `tr(KEY,{pk(KEY),pk(KEY)}`. Any scripts, multisig or MuSig spends (e.g. `tr(MUSIG, {wsh(SCRIPT), wmulti(k,KEY_1,KEY_2,...,KEY_n)}`) aren't supported. The descriptor wallet doesn't yet support arbitrary scripts at all, Taproot or non-Taproot, that will come later when descriptors [support Miniscript](https://bitcoin.stackexchange.com/questions/106586/output-descriptor-for-an-arbitrary-script/106587). The wallet will generate a valid Schnorr signature (using the libsecp256k1 library) to spend the Taproot UTXO but won't broadcast it (that will be supported later after Taproot has activated in November 2021).

You can create a descriptor wallet using the instructions [here](https://bitcoin.stackexchange.com/questions/100008/how-do-i-create-a-descriptor-wallet).

Information on the various descriptors (including the `tr()` Taproot descriptor) is [here](https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md). That doc has a Taproot descriptor [example](https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#examples).

`tr(c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5,{pk(fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556),pk(e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13)})`

`c6047f...`, `fff97b...` and `e493db...` are example Schnorr public keys. `c6047f...` is in the Taproot key path and the other two public keys are in the script path, the Merkle tree of alternative scripts that can be spent from within a P2TR address.


---

