<p>Output descriptors allow the use of (extended) public keys in order to create watch-only descriptors that can be used to configure watch only-wallets.</p>
<p>I wonder, is there an equivalent for taproot that allows me to watch relevant utxos without revealing any information about the taproot interiors?</p>

CC BY-SA 4.0
2024-05-06T22:15:06.937Z
You can use xpubs inside a `tr()` descriptor.
Pieter Wuille
CC BY-SA 4.0
2024-05-07T07:35:40.253Z
Thanks Pieter, I'm still wrapping my head around all this. I guess you're referring to this kind of descriptor?

`tr(<AGGREGATE_KEY>,{pk(ALICE_XPUB),pk(BOB_XPUB)})`

I can see how this would work. However, I would prefer not to reveal any information about the script paths, perhaps just revealing the merkle root hash for the scripts. Is that possible, while preserving the ability to generate addresses?

I understand that just using addresses might be easier in most contexts, but I'm building something around descriptors and would like to explore this scenario.
max
CC BY-SA 4.0
2024-05-08T11:35:53.123Z
Do you want to hide information from people seeing the descriptor, or on chain?
Pieter Wuille
CC BY-SA 4.0
2024-05-08T19:32:47.937Z
I want to hide information from people seeing the descriptor.
max
CC BY-SA 4.0
2024-05-08T19:57:37.973Z
Alright, but that property isn't true for xpubs in other contexts either. xpubs don't hide anything private, they just don't give the ability to spend. Nothing changes in a taproot setting about that; a descriptor with full path information, but xpubs for all involved keys, equally removes the ability to spend.
Pieter Wuille
<taproot><output-script-descriptors><p2tr>
Is there a public descriptor equivalent for taproot?
max
# Is there a public descriptor equivalent for taproot?

(Asked by: username_0 on 2024-05-06)

Output descriptors allow the use of (extended) public keys in order to create watch-only descriptors that can be used to configure watch only-wallets.

I wonder, is there an equivalent for taproot that allows me to watch relevant utxos without revealing any information about the taproot interiors?

**Tags:** taproot, output-script-descriptors, p2tr

> **Comments:**
> **username_1**: You can use xpubs inside a `tr()` descriptor.  
> **username_0**: Thanks username_1, I'm still wrapping my head around all this. I guess you're referring to this kind of descriptor?  `tr(<AGGREGATE_KEY>,{pk(ALICE_XPUB),pk(BOB_XPUB)})`  I can see how this would work. However, I would prefer not to reveal any information about the script paths, perhaps just revealing the merkle root hash for the scripts. Is that possible, while preserving the ability to generate addresses?  I understand that just using addresses might be easier in most contexts, but I'm building something around descriptors and would like to explore this scenario.  
> **username_1**: Do you want to hide information from people seeing the descriptor, or on chain?  
> **username_0**: I want to hide information from people seeing the descriptor.  
> **username_1**: Alright, but that property isn't true for xpubs in other contexts either. xpubs don't hide anything private, they just don't give the ability to spend. Nothing changes in a taproot setting about that; a descriptor with full path information, but xpubs for all involved keys, equally removes the ability to spend.  

---

## 0 answers

