user102354: I created a 2-of-3 multisig taproot address by following the steps outlined by Pieter Wuille in this post using importdescriptorsand deriveaddresses. His steps worked perfectly, and I was able to create the address from 3 pubkeys no problem.
My problem is that I don't know how to spend from the funded address (kinda a big deal)
I am using Bitcoin Core QT Console, 24.0rc2 on Signet.
I am using 4 different wallets I have set up. All are descriptor wallets, but the 4th has Private keys Disabled so I can import the taproot descriptors and create the multisig address.
I used getnewaddress and getaddressinfo in each of the 3 regular descriptor wallets to get an address and the corresponding 66-character hex pubkey.
I used these 3 pubkeys to create the taproot descriptor
0249f48bd0c87f48a3d4d0fd5f0a2571861fd1891b092a41bd3546a93bc6db97ae, 03cde9c66862a392780e6868a7fd245273eff736a516d0f950a4e027d4d83d9194, 02d56baf4e4b77932b2f195598c68b63ee98827f21acb660b34bbf3ebf1862fc2e
Using this format from the above linked post;
tr(KI,multi_a(2,K1,K2,K3))#12345678
I got this descriptor;
tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,0249f48bd0c87f48a3d4d0fd5f0a2571861fd1891b092a41bd3546a93bc6db97ae,03cde9c66862a392780e6868a7fd245273eff736a516d0f950a4e027d4d83d9194,02d56baf4e4b77932b2f195598c68b63ee98827f21acb660b34bbf3ebf1862fc2e))#s7q27ueu

For KI I used the unspendable output from BIP341 PW mentioned in the above linked post.
After using importdescriptors and deriveaddresses I got this taproot multisig address as a result;
tb1p6vzv5za7pc9503fkvexccv4qm43z6600lhpj3k7sem9w3vdh8xjqanz5ld

I funded the address with a transaction.
txid=071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819

I then created a PSBT with this command;
createpsbt \
'[{"txid": "071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819", "vout": 0, "sequence":1}]' \
'{"tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5": 0.0002}'

This returned a PBST;
cHNidP8BAFICAAAAARkIdErtUPslQBvURcLaaspd6rIYFVuK+3vnlhARBBoHAAAAAAABAAAAASBOAAAAAAAAFgAU+Ye8jCNJbqWifyQ+vEFfxirZFvIAAAAAAAAA

Decoding the PSBT returns;
{
  "tx": {
    "txid": "52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125",
    "hash": "52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125",
    "version": 2,
    "size": 82,
    "vsize": 82,
    "weight": 328,
    "locktime": 0,
    "vin": [
      {
        "txid": "071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819",
        "vout": 0,
        "scriptSig": {
          "asm": "",
          "hex": ""
        },
        "sequence": 1
      }
    ],
    "vout": [
      {
        "value": 0.00020000,
        "n": 0,
        "scriptPubKey": {
          "asm": "0 f987bc8c23496ea5a27f243ebc415fc62ad916f2",
          "desc": "addr(tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5)#jhwtg3zn",
          "hex": "0014f987bc8c23496ea5a27f243ebc415fc62ad916f2",
          "address": "tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5",
          "type": "witness_v0_keyhash"
        }
      }
    ]
  },
  "global_xpubs": [
  ],
  "psbt_version": 0,
  "proprietary": [
  ],
  "unknown": {
  },
  "inputs": [
    {
    }
  ],
  "outputs": [
    {
    }
  ]

Now here's where I run into problems, I open the PSBT in Wallet1 to run walletprocesspsbtand it returns false, which normally might be fine, but the PSBT data is unchanged, so I can tell nothing happened and it truly failed to process;
    {
  "psbt": "cHNidP8BAFICAAAAARkIdErtUPslQBvURcLaaspd6rIYFVuK+3vnlhARBBoHAAAAAAABAAAAASBOAAAAAAAAFgAU+Ye8jCNJbqWifyQ+vEFfxirZFvIAAAAAAAAA",
  "complete": false
}

I get the same results in Wallet2 and Wallet3. These are the wallets used to create the addresses/pubkeys used in the taproot descriptor.
Then just to see what happened, I tried the same command in the wallet with disabled private keys (the wallet I imported the tr descriptor into and created the addresses). As a note, if I run listunspent, I can see the funding tx (the funds I am trying to spend with the PSBT). This returns a different PSBT data, but still false;
{
  "psbt": "cHNidP8BAFICAAAAARkIdErtUPslQBvURcLaaspd6rIYFVuK+3vnlhARBBoHAAAAAAABAAAAASBOAAAAAAAAFgAU+Ye8jCNJbqWifyQ+vEFfxirZFvIAAAAAAAEBKxdPAAAAAAAAIlEg0wTKC74OC0fFNmZNjDKg3WItae/9wyjb0M7K6LG3OaQiFcBQkpt0waBJVLeLS2A16XpeB4paDyjsltVHv+6azoA6wGkgSfSL0Mh/SKPU0P1fCiVxhh/RiRsJKkG9NUapO8bbl66sIM3pxmhio5J4Dmhop/0kUnPv9zalFtD5UKTgJ9TYPZGUuiDVa69OS3eTKy8ZVZjGi2PumIJ/Iay2YLNLvz6/GGL8LrpSnMAhFlCSm3TBoElUt4tLYDXpel4HiloPKOyW1Ue/7prOgDrABQB8Rh5dARcgUJKbdMGgSVS3i0tgNel6XgeKWg8o7JbVR7/ums6AOsABGCDt29WnxAqM6dFJQ1DxQsSQgva1MP5WQW1URX0xZXSThwAA",
  "complete": false
}

Decoding the PSBT gives this result;
{
  "tx": {
    "txid": "52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125",
    "hash": "52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125",
    "version": 2,
    "size": 82,
    "vsize": 82,
    "weight": 328,
    "locktime": 0,
    "vin": [
      {
        "txid": "071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819",
        "vout": 0,
        "scriptSig": {
          "asm": "",
          "hex": ""
        },
        "sequence": 1
      }
    ],
    "vout": [
      {
        "value": 0.00020000,
        "n": 0,
        "scriptPubKey": {
          "asm": "0 f987bc8c23496ea5a27f243ebc415fc62ad916f2",
          "desc": "addr(tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5)#jhwtg3zn",
          "hex": "0014f987bc8c23496ea5a27f243ebc415fc62ad916f2",
          "address": "tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5",
          "type": "witness_v0_keyhash"
        }
      }
    ]
  },
  "global_xpubs": [
  ],
  "psbt_version": 0,
  "proprietary": [
  ],
  "unknown": {
  },
  "inputs": [
    {
      "witness_utxo": {
        "amount": 0.00020247,
        "scriptPubKey": {
          "asm": "1 d304ca0bbe0e0b47c536664d8c32a0dd622d69effdc328dbd0cecae8b1b739a4",
          "desc": "rawtr(d304ca0bbe0e0b47c536664d8c32a0dd622d69effdc328dbd0cecae8b1b739a4)#sn2t4sme",
          "hex": "5120d304ca0bbe0e0b47c536664d8c32a0dd622d69effdc328dbd0cecae8b1b739a4",
          "address": "tb1p6vzv5za7pc9503fkvexccv4qm43z6600lhpj3k7sem9w3vdh8xjqanz5ld",
          "type": "witness_v1_taproot"
        }
      },
      "taproot_scripts": [
        {
          "script": "2049f48bd0c87f48a3d4d0fd5f0a2571861fd1891b092a41bd3546a93bc6db97aeac20cde9c66862a392780e6868a7fd245273eff736a516d0f950a4e027d4d83d9194ba20d56baf4e4b77932b2f195598c68b63ee98827f21acb660b34bbf3ebf1862fc2eba529c",
          "leaf_ver": 192,
          "control_blocks": [
            "c050929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0"
          ]
        }
      ],
      "taproot_bip32_derivs": [
        {
          "pubkey": "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0",
          "master_fingerprint": "7c461e5d",
          "path": "m",
          "leaf_hashes": [
          ]
        }
      ],
      "taproot_internal_key": "50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0",
      "taproot_merkle_root": "eddbd5a7c40a8ce9d1494350f142c49082f6b530fe56416d54457d3165749387"
    }
  ],
  "outputs": [
    {
    }
  ],
  "fee": 0.00000247
}

I tried bringing this PSBT into the other 3 wallets to see if they could process this PSBT, but all gave the same results, false, and the PSBT data was unchanged.
So what should I be doing to get PSBTs I can actually combine and finalize?

user48884: When you create the PSBT with createpsbt, it does not contain any information about the inputs. As wallets1-3 also do not have any information about the inputs, they are unable to sign it. It is only wallet4 that has information about the inputs. So you must use walletprocesspsbt with wallet4 in order to fill in that information before going to wallets1-3 for signing.
However it looks like there is a bug in the multi_a logic that is not filling in all of wallet4's information, which is causing wallets1-3 to still be unable to sign.

I've opened a PR that should fix this issue.

102354: <p>I created a 2-of-3 multisig taproot address by following the <a href="https://bitcoin.stackexchange.com/questions/115700/how-do-i-create-a-taproot-multisig-address-requiring-21-of-210-keys-to-spend">steps outlined by Pieter Wuille in this post</a> using <code>importdescriptors</code>and <code>deriveaddresses</code>. His steps worked perfectly, and I was able to create the address from 3 pubkeys no problem.</p>
<p>My problem is that I don't know how to spend from the funded address (kinda a big deal)</p>
<p>I am using Bitcoin Core QT Console, 24.0rc2 on Signet.</p>
<p>I am using 4 different wallets I have set up. All are descriptor wallets, but the 4th has Private keys Disabled so I can import the taproot descriptors and create the multisig address.</p>
<p>I used <code>getnewaddress</code> and <code>getaddressinfo</code> in each of the 3 regular descriptor wallets to get an address and the corresponding 66-character hex pubkey.</p>
<p>I used these 3 pubkeys to create the taproot descriptor</p>
<p><code>0249f48bd0c87f48a3d4d0fd5f0a2571861fd1891b092a41bd3546a93bc6db97ae, 03cde9c66862a392780e6868a7fd245273eff736a516d0f950a4e027d4d83d9194, 02d56baf4e4b77932b2f195598c68b63ee98827f21acb660b34bbf3ebf1862fc2e</code></p>
<p>Using this format from the above linked post;
tr(KI,multi_a(2,K1,K2,K3))#12345678</p>
<p>I got this descriptor;</p>
<pre><code>tr(50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0,multi_a(2,0249f48bd0c87f48a3d4d0fd5f0a2571861fd1891b092a41bd3546a93bc6db97ae,03cde9c66862a392780e6868a7fd245273eff736a516d0f950a4e027d4d83d9194,02d56baf4e4b77932b2f195598c68b63ee98827f21acb660b34bbf3ebf1862fc2e))#s7q27ueu
</code></pre>
<p>For KI I used the unspendable output from BIP341 PW mentioned in the above linked post.</p>
<p>After using <code>importdescriptors</code> and <code>deriveaddresses</code> I got this taproot multisig address as a result;</p>
<pre><code>tb1p6vzv5za7pc9503fkvexccv4qm43z6600lhpj3k7sem9w3vdh8xjqanz5ld
</code></pre>
<p>I funded the address with a transaction.</p>
<pre><code>txid=071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819
</code></pre>
<p>I then created a PSBT with this command;</p>
<pre><code>createpsbt \
'[{&quot;txid&quot;: &quot;071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819&quot;, &quot;vout&quot;: 0, &quot;sequence&quot;:1}]' \
'{&quot;tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5&quot;: 0.0002}'
</code></pre>
<p>This returned a PBST;</p>
<pre><code>cHNidP8BAFICAAAAARkIdErtUPslQBvURcLaaspd6rIYFVuK+3vnlhARBBoHAAAAAAABAAAAASBOAAAAAAAAFgAU+Ye8jCNJbqWifyQ+vEFfxirZFvIAAAAAAAAA
</code></pre>
<p>Decoding the PSBT returns;</p>
<pre><code>{
  &quot;tx&quot;: {
    &quot;txid&quot;: &quot;52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125&quot;,
    &quot;hash&quot;: &quot;52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125&quot;,
    &quot;version&quot;: 2,
    &quot;size&quot;: 82,
    &quot;vsize&quot;: 82,
    &quot;weight&quot;: 328,
    &quot;locktime&quot;: 0,
    &quot;vin&quot;: [
      {
        &quot;txid&quot;: &quot;071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819&quot;,
        &quot;vout&quot;: 0,
        &quot;scriptSig&quot;: {
          &quot;asm&quot;: &quot;&quot;,
          &quot;hex&quot;: &quot;&quot;
        },
        &quot;sequence&quot;: 1
      }
    ],
    &quot;vout&quot;: [
      {
        &quot;value&quot;: 0.00020000,
        &quot;n&quot;: 0,
        &quot;scriptPubKey&quot;: {
          &quot;asm&quot;: &quot;0 f987bc8c23496ea5a27f243ebc415fc62ad916f2&quot;,
          &quot;desc&quot;: &quot;addr(tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5)#jhwtg3zn&quot;,
          &quot;hex&quot;: &quot;0014f987bc8c23496ea5a27f243ebc415fc62ad916f2&quot;,
          &quot;address&quot;: &quot;tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5&quot;,
          &quot;type&quot;: &quot;witness_v0_keyhash&quot;
        }
      }
    ]
  },
  &quot;global_xpubs&quot;: [
  ],
  &quot;psbt_version&quot;: 0,
  &quot;proprietary&quot;: [
  ],
  &quot;unknown&quot;: {
  },
  &quot;inputs&quot;: [
    {
    }
  ],
  &quot;outputs&quot;: [
    {
    }
  ]
</code></pre>
<p>Now here's where I run into problems, I open the PSBT in Wallet1 to run <code>walletprocesspsbt</code>and it returns false, which normally might be fine, but the PSBT data is unchanged, so I can tell nothing happened and it truly failed to process;</p>
<pre><code>    {
  &quot;psbt&quot;: &quot;cHNidP8BAFICAAAAARkIdErtUPslQBvURcLaaspd6rIYFVuK+3vnlhARBBoHAAAAAAABAAAAASBOAAAAAAAAFgAU+Ye8jCNJbqWifyQ+vEFfxirZFvIAAAAAAAAA&quot;,
  &quot;complete&quot;: false
}
</code></pre>
<p>I get the same results in Wallet2 and Wallet3. These are the wallets used to create the addresses/pubkeys used in the taproot descriptor.</p>
<p>Then just to see what happened, I tried the same command in the wallet with disabled private keys (the wallet I imported the tr descriptor into and created the addresses). As a note, if I run listunspent, I can see the funding tx (the funds I am trying to spend with the PSBT). This returns a different PSBT data, but still false;</p>
<pre><code>{
  &quot;psbt&quot;: &quot;cHNidP8BAFICAAAAARkIdErtUPslQBvURcLaaspd6rIYFVuK+3vnlhARBBoHAAAAAAABAAAAASBOAAAAAAAAFgAU+Ye8jCNJbqWifyQ+vEFfxirZFvIAAAAAAAEBKxdPAAAAAAAAIlEg0wTKC74OC0fFNmZNjDKg3WItae/9wyjb0M7K6LG3OaQiFcBQkpt0waBJVLeLS2A16XpeB4paDyjsltVHv+6azoA6wGkgSfSL0Mh/SKPU0P1fCiVxhh/RiRsJKkG9NUapO8bbl66sIM3pxmhio5J4Dmhop/0kUnPv9zalFtD5UKTgJ9TYPZGUuiDVa69OS3eTKy8ZVZjGi2PumIJ/Iay2YLNLvz6/GGL8LrpSnMAhFlCSm3TBoElUt4tLYDXpel4HiloPKOyW1Ue/7prOgDrABQB8Rh5dARcgUJKbdMGgSVS3i0tgNel6XgeKWg8o7JbVR7/ums6AOsABGCDt29WnxAqM6dFJQ1DxQsSQgva1MP5WQW1URX0xZXSThwAA&quot;,
  &quot;complete&quot;: false
}
</code></pre>
<p>Decoding the PSBT gives this result;</p>
<pre><code>{
  &quot;tx&quot;: {
    &quot;txid&quot;: &quot;52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125&quot;,
    &quot;hash&quot;: &quot;52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125&quot;,
    &quot;version&quot;: 2,
    &quot;size&quot;: 82,
    &quot;vsize&quot;: 82,
    &quot;weight&quot;: 328,
    &quot;locktime&quot;: 0,
    &quot;vin&quot;: [
      {
        &quot;txid&quot;: &quot;071a04111096e77bfb8a5b1518b2ea5dca6adac245d41b4025fb50ed4a740819&quot;,
        &quot;vout&quot;: 0,
        &quot;scriptSig&quot;: {
          &quot;asm&quot;: &quot;&quot;,
          &quot;hex&quot;: &quot;&quot;
        },
        &quot;sequence&quot;: 1
      }
    ],
    &quot;vout&quot;: [
      {
        &quot;value&quot;: 0.00020000,
        &quot;n&quot;: 0,
        &quot;scriptPubKey&quot;: {
          &quot;asm&quot;: &quot;0 f987bc8c23496ea5a27f243ebc415fc62ad916f2&quot;,
          &quot;desc&quot;: &quot;addr(tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5)#jhwtg3zn&quot;,
          &quot;hex&quot;: &quot;0014f987bc8c23496ea5a27f243ebc415fc62ad916f2&quot;,
          &quot;address&quot;: &quot;tb1qlxrmerprf9h2tgnlysltcs2lcc4dj9hjtu9se5&quot;,
          &quot;type&quot;: &quot;witness_v0_keyhash&quot;
        }
      }
    ]
  },
  &quot;global_xpubs&quot;: [
  ],
  &quot;psbt_version&quot;: 0,
  &quot;proprietary&quot;: [
  ],
  &quot;unknown&quot;: {
  },
  &quot;inputs&quot;: [
    {
      &quot;witness_utxo&quot;: {
        &quot;amount&quot;: 0.00020247,
        &quot;scriptPubKey&quot;: {
          &quot;asm&quot;: &quot;1 d304ca0bbe0e0b47c536664d8c32a0dd622d69effdc328dbd0cecae8b1b739a4&quot;,
          &quot;desc&quot;: &quot;rawtr(d304ca0bbe0e0b47c536664d8c32a0dd622d69effdc328dbd0cecae8b1b739a4)#sn2t4sme&quot;,
          &quot;hex&quot;: &quot;5120d304ca0bbe0e0b47c536664d8c32a0dd622d69effdc328dbd0cecae8b1b739a4&quot;,
          &quot;address&quot;: &quot;tb1p6vzv5za7pc9503fkvexccv4qm43z6600lhpj3k7sem9w3vdh8xjqanz5ld&quot;,
          &quot;type&quot;: &quot;witness_v1_taproot&quot;
        }
      },
      &quot;taproot_scripts&quot;: [
        {
          &quot;script&quot;: &quot;2049f48bd0c87f48a3d4d0fd5f0a2571861fd1891b092a41bd3546a93bc6db97aeac20cde9c66862a392780e6868a7fd245273eff736a516d0f950a4e027d4d83d9194ba20d56baf4e4b77932b2f195598c68b63ee98827f21acb660b34bbf3ebf1862fc2eba529c&quot;,
          &quot;leaf_ver&quot;: 192,
          &quot;control_blocks&quot;: [
            &quot;c050929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0&quot;
          ]
        }
      ],
      &quot;taproot_bip32_derivs&quot;: [
        {
          &quot;pubkey&quot;: &quot;50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0&quot;,
          &quot;master_fingerprint&quot;: &quot;7c461e5d&quot;,
          &quot;path&quot;: &quot;m&quot;,
          &quot;leaf_hashes&quot;: [
          ]
        }
      ],
      &quot;taproot_internal_key&quot;: &quot;50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0&quot;,
      &quot;taproot_merkle_root&quot;: &quot;eddbd5a7c40a8ce9d1494350f142c49082f6b530fe56416d54457d3165749387&quot;
    }
  ],
  &quot;outputs&quot;: [
    {
    }
  ],
  &quot;fee&quot;: 0.00000247
}
</code></pre>
<p>I tried bringing this PSBT into the other 3 wallets to see if they could process this PSBT, but all gave the same results, false, and the PSBT data was unchanged.</p>
<p>So what should I be doing to get PSBTs I can actually combine and finalize?</p>
 48884: <p>When you create the PSBT with <code>createpsbt</code>, it does not contain any information about the inputs. As wallets1-3 also do not have any information about the inputs, they are unable to sign it. It is only wallet4 that has information about the inputs. So you must use <code>walletprocesspsbt</code> with wallet4 in order to fill in that information before going to wallets1-3 for signing.</p>
<p>However it looks like there is a bug in the <code>multi_a</code> logic that is not filling in all of wallet4's information, which is causing wallets1-3 to still be unable to sign.</p>
<hr />
<p>I've opened a <a href="https://github.com/bitcoin/bitcoin/pull/26418" rel="nofollow noreferrer">PR</a> that should fix this issue.</p>
