Need help with Taproot tree expression

4 replies 25 views
pauldefiMember
Posts: 33 · Reputation: 145
#1Mar 2, 2022, 12:59 AM
So, from what I understand, to set up a Script Tree with Script Path 1: and Script Path 2: I need to use a Taproot expression like this: tr(InternalKey,{multi_a(2,Key1,Key2),pk(Key3)}). This way, I can import the descriptor into Bitcoin core without needing the private key. But if I wanna change script path 2 to I'm kinda stuck on what expression to use here. tr(InternalKey,{sortedmulti_a(2,Key1,Key2),???)}
3 Reply Quote Share
ryan_nodeSenior Member
Posts: 204 · Reputation: 859
#2Mar 4, 2022, 06:29 AM
Descriptors cannot describe all arbitrary scripts, only a subset with specific properties that make them analyzable. You must use Miniscript for those scripts. The miniscript that you want is probably something like and that would make a script of
4 Reply Quote Share
pauldefiMember
Posts: 33 · Reputation: 145
#3Mar 4, 2022, 11:49 AM
Thank you for the explanation. Now I know that because tree expressions in Taproot output have limitations, then to describe certain arbitrary scripts I have to use Miniscript, so that valid descriptors can be generated. With your explanation, I succeeded in importing the descriptor: tr(InternalKey,{sortedmulti_a(2,Key1,Key2),and_v(v:pk(key3),older(10))}) , and successfully created a transaction with the multisig 2-of-2 script path spend (through the GUI or using a console with walletcreatefundedpsbt option), but still have no luck in creating transactions with and_v(v:pk(key3),older(10)) script path spend.
1 Reply Quote Share
ryan_nodeSenior Member
Posts: 204 · Reputation: 859
#4Mar 4, 2022, 04:53 PM
Not all Miniscript can be signed yet. I think we haven't implemented everything that's needed to pass in the information required to sign for both kinds of timelocks as well as hashlocks.
2 Reply Quote Share
pauldefiMember
Posts: 33 · Reputation: 145
#5Mar 7, 2022, 02:52 AM
Ah, I see. I thought there is something wrong with the variables that I used when building the transaction with walletcreatefundedpsbt, because for every change in the variables and arguments that I used, the results are the same, where the psbt cannot be signed with (Key3) descriptor.
6 Reply Quote Share

Related topics