Steps that I followed to do a transaction which creates a P2TR output: 1. Copy XPUB from test vectors mentioned in [BIP 86](https://github.com/achow101/bips/blob/330b56b35867fa403634bf8d0ede0d2cb235aab5/bip-0086.mediawiki) ``` xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ ``` 2. Convert XPUB (mainnet) to TPUB (testnet) using [Bitcoin Extended Public Key Converter](https://jlopp.github.io/xpub-converter/) ``` tpubDC3pD7UZXnsgh3EBjbtBQiB1FnLask7UHBSunZ1DPK4dCFFZoFRkgxHB8gt42FvLzx1DpxfHWxAsYaY6b643RVcGjDxXxns7wKKYnnfEcbB ``` 3. Create a blank descriptor wallet with private keys disabled: ``` bitcoin-cli -named createwallet wallet_name=taproot_wallet blank=true disable_private_keys=true ``` 4. Save the descriptor info in a text file for TPUB we got from step 2 (descriptor.txt): ``` [ { "desc": "tr([8868ab13/86'/1'/0']tpubDC3pD7UZXnsgh3EBjbtBQiB1FnLask7UHBSunZ1DPK4dCFFZoFRkgxHB8gt42FvLzx1DpxfHWxAsYaY6b643RVcGjDxXxns7wKKYnnfEcbB/0/*)#06sjusfa", "timestamp": "now", "active": true, "internal": false, "range": [ 0, 999 ], "next": 0 } ] ``` I have copied this format from `listdescriptors` output for a new descriptor wallet that had private keys enabled. 5. Import this descriptor in wallet we created in step 3: ``` bitcoin-cli -rpcwallet=taproot_wallet importdescriptors "$(descriptor.txt)" ``` 6. This is a watch only wallet with a TPUB that can be used to create new P2TR address. Create a new bech32m address: ``` bitcoin-cli -rpcwallet=taproot_wallet getnewaddress ``` ``` tb1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqp3mvzv ``` 7. Send some bitcoin from another wallet: https://blockstream.info/testnet/tx/2035ead4a9d0c8e2da1184924abc9034d26f2a7093371183ef12891623b235d1 I had compiled bitcoind with branch used by Sjors Provoost in [PR #2260](https://github.com/bitcoin/bitcoin/pull/22260)