<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>

CC BY-SA 4.0
2022-10-30T18:03:15.050Z
I saw the PR, that's awesome, thanks! I'll test this in rc3 when it's released and report back.
FractalEncrypt
CC BY-SA 4.0
2022-11-17T23:49:03.853Z
I've compiled and run rc24.04 and confirmed this fix worked. I was able to spend the bitcoin in the taproot multisig address. THANKS!

Here is the signet tx ID
52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125
FractalEncrypt
CC BY-SA 4.0
2024-05-25T11:03:24.610Z
I invoke walletprocesspsbt in each wallet, but output psbt string is still always the same as input with '"complete": false'. Bitcoin Core version v27.0.0 @Ava Chow♦
foolbear
CC BY-SA 4.0
2024-05-25T16:02:02.107Z
@foolbear That means that the wallet doesn't have enough information in order to do anything with the PSBT. You likely have not imported something. Please create a new question containing the details of your setup so that this can be properly diagnosed as just saying that `walletprocesspsbt` doesn't do anything is not enough information to help you with.
Ava Chow
CC BY-SA 4.0
2022-10-28T22:09:31.030Z
2022-10-29T00:12:31.767Z
2022-10-29T00:12:31.767Z
Ava Chow
<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>

<bitcoin-core><multi-signature><taproot><bip174-psbt><output-script-descriptors>
Signing PSBTs to spend from Taproot multisig address
FractalEncrypt
# Signing PSBTs to spend from Taproot multisig address

(Asked by: username_0 on 2022-10-27)

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?

**Tags:** bitcoin-core, multi-signature, taproot, bip174-psbt, output-script-descriptors


---

## 1 answers

### Answer by username_1 on 2022-10-28. Score: 4 | Accepted answer

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](https://github.com/bitcoin/bitcoin/pull/26418) that should fix this issue.

> **Comments:**
> **username_0**: I saw the PR, that's awesome, thanks! I'll test this in rc3 when it's released and report back.  
> **username_0**: I've compiled and run rc24.04 and confirmed this fix worked. I was able to spend the bitcoin in the taproot multisig address. THANKS!  Here is the signet tx ID 52063d0c2ec3f7fc60702e98c0a39e057ee71ae583ddace3d1d68f7a8cb5c125  
> **username_2**: I invoke walletprocesspsbt in each wallet, but output psbt string is still always the same as input with '"complete": false'. Bitcoin Core version v27.0.0 @username_1♦  
> **username_1**: @username_2 That means that the wallet doesn't have enough information in order to do anything with the PSBT. You likely have not imported something. Please create a new question containing the details of your setup so that this can be properly diagnosed as just saying that `walletprocesspsbt` doesn't do anything is not enough information to help you with.  

---

