Tangem Wallet Pack of 2 - Secure Crypto Wallet - Trusted Cold Storage for Bitcoin, Ethereum, NFT's &

Tangem Wallet Pack of 2 - Secure Crypto Wallet - Trusted Cold Storage for Bitcoin, Ethereum, NFT's &
Key item features Ultimate Security: Generates a private key that remains on the card, safeguarding crypto and NFTs from hackers with EAL6+ certification and audited firmware. Versatile Compatibility: Manages over 13,000 tokens across 70+ blockchains, supporting DeFi, NFTs, and DeEx without wires, Bluetooth, or USB. Effortless Operation: Utilizes NFC for secure transactions via a mobile device and the Tangem app, enabling buying and selling crypto with various payment methods. Smart Backup: Features a second Tangem Wallet as a backup, eliminating the need for paper, pictures, or seed phrases for recovery. Durable Design: Boasts IP68 protection against environmental conditions, ensuring longevity and robust physical security. Comprehensive Support: Compatible with Bitcoin, Ethereum, Solana, XRP, USDT, and over 6,000 cryptocurrencies, integrating with dApps and WalletConnect.

LBANK

How to Sign a Musig with Bitcoin Core

Today I was back at trying to sign a transaction spending a musig UTXO in Bitcoin Core. Last time around, Pieter W. gave me two pieces of advice.

  1. Use PSBTs, as they're more likely to work on modern stuff like Musig than raw transactions.
  2. He asked how I was generating my private/public keys, which made me realize I'd probably calculated my pubkey incorrectly.

So today I took a new swing, using the same methodology I use for signing regular multisigs in Bitcoin Core, but now I can't get the PSBT to process correctly.

I. Capturing the Individual Keys

I used the simplest method possible to generate a musig address: grab addresses from two different wallets and capture their pubkeys. (The private keys should then be sitting in those wallets.)

Here's the address & pubkey capture:

musigaddress1=$(bitcoin-cli -rpcwallet=musig1 getnewaddress)
musigaddress2=$(bitcoin-cli -rpcwallet=musig2 getnewaddress)

musigpubkey1=$(bitcoin-cli -rpcwallet=musig1 -named getaddressinfo address=$musigaddress1 | jq -r '.pubkey')
musigpubkey2=$(bitcoin-cli -rpcwallet=musig2 -named getaddressinfo address=$musigaddress2 | jq -r '.pubkey')

Here's the descriptor creation:

musigdesc="tr(musig($musigpubkey1,$musigpubkey2))"
musigcs=$(bitcoin-cli getdescriptorinfo $musigdesc | jq -r '.checksum')
musigdescwithcs=$musigdesc#$musigcs

echo $musigdescwithcs
tr(musig(031e4be4d329cb508f5b424564d23bb07f4f3e00b52797df607eabe25ebf7ff6ba,0269cd634538d451c95b1e9211605677542b19c813fc7a46795e39a19fd3053d59))#f56zcuwx

II. Creating a Watch Only Wallet

Next step: creating a watch-only wallet and generating a musig address

bitcoin-cli createwallet "musigwatchonly" true true
{
  "name": "musigwatchonly"
}

bitcoin-cli -rpcwallet=musigwatchonly importdescriptors '''[{ "desc": "'$musigdescwithcs'", "timestamp": "now" }]'''
[
  {
    "success": true
  }
]

bitcoin-cli -rpcwallet=musigwatchonly getaddressesbylabel ""
{
  "tb1pp29jj0t4wfanctzsrvaz28l6ptamhqy7e8gmyuh8tv43ynra2dkqsskyne": {
    "purpose": "receive"
  }
}

Then, fund the address from a handy faucet.

III. Spend the Funds

Here's where I run into troubles. I can create a PSBT and process it through all three wallets. musigwatchonly should provide the descriptor, while musig1 and musig2 should provide signatures. They all seem to do something! But analyzepsbt continues to report that an Updater is needed!

Making the PSBT:

split1=$(bitcoin-cli -rpcwallet=musig1 getnewaddress)
split2=$(bitcoin-cli -rpcwallet=musig2 getnewaddress)

utxo_txid=$(bitcoin-cli -rpcwallet=musigwatchonly listunspent | jq -r '.[0] | .txid')
utxo_vout=$(bitcoin-cli -rpcwallet=musigwatchonly listunspent | jq -r '.[0] | .vout')

psbt=$(bitcoin-cli -named createpsbt inputs='''[ { "txid": "'$utxo_txid'", "vout": '$utxo_vout' } ]''' outputs='''{ "'$split1'": 0.0000498,"'$split2'": 0.0000498 }''')

bitcoin-cli analyzepsbt $psbt
{
  "inputs": [
    {
      "has_utxo": false,
      "is_final": false,
      "next": "updater"
    }
  ],
  "next": "updater"
}

It seems to find the UTXO OK.

psbt=$(bitcoin-cli -rpcwallet="musigwatchonly" walletprocesspsbt $psbt | jq -r '.psbt')

bitcoin-cli analyzepsbt $psbt
{
  "inputs": [
    {
      "has_utxo": true,
      "is_final": false,
      "next": "updater"
    }
  ],
  "estimated_vsize": 130,
  "estimated_feerate": 0.00000307,
  "fee": 0.00000040,
  "next": "updater"
}

Lots of info has been filled in:

bitcoin-cli decodepsbt $psbt
{
  "tx": {
    "txid": "6b752ed99150f6cde71de6b9a5ea728bc2d908289744262b569da23eea60896f",
    "hash": "6b752ed99150f6cde71de6b9a5ea728bc2d908289744262b569da23eea60896f",
    "version": 2,
    "size": 113,
    "vsize": 113,
    "weight": 452,
    "locktime": 0,
    "vin": [
      {
        "txid": "d376a2461fdba2198d070794224cdc5dd4c1f3f8bcef7a9bd8cdd254494476bf",
        "vout": 0,
        "scriptSig": {
          "asm": "",
          "hex": ""
        },
        "sequence": 4294967293
      }
    ],
    "vout": [
      {
        "value": 0.00004980,
        "n": 0,
        "scriptPubKey": {
          "asm": "0 801f6ab23569c477fecf5ef7fb7568c208185200",
          "desc": "addr(tb1qsq0k4v34d8z80lk0tmmlkatgcgyps5sq67nv2g)#52328mds",
          "hex": "0014801f6ab23569c477fecf5ef7fb7568c208185200",
          "address": "tb1qsq0k4v34d8z80lk0tmmlkatgcgyps5sq67nv2g",
          "type": "witness_v0_keyhash"
        }
      },
      {
        "value": 0.00004980,
        "n": 1,
        "scriptPubKey": {
          "asm": "0 0afe9ffb4f071020ed6f657c97881081f2b36c2c",
          "desc": "addr(tb1qptlfl760qugzpmt0v47f0zqss8etxmpvpvgj5p)#9fgy0vvy",
          "hex": "00140afe9ffb4f071020ed6f657c97881081f2b36c2c",
          "address": "tb1qptlfl760qugzpmt0v47f0zqss8etxmpvpvgj5p",
          "type": "witness_v0_keyhash"
        }
      }
    ]
  },
  "global_xpubs": [
  ],
  "psbt_version": 0,
  "proprietary": [
  ],
  "unknown": {
  },
  "inputs": [
    {
      "witness_utxo": {
        "amount": 0.00010000,
        "scriptPubKey": {
          "asm": "1 0a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c",
          "desc": "rawtr(0a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c)#wrut38c9",
          "hex": "51200a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c",
          "address": "tb1pp29jj0t4wfanctzsrvaz28l6ptamhqy7e8gmyuh8tv43ynra2dkqsskyne",
          "type": "witness_v1_taproot"
        }
      },
      "taproot_bip32_derivs": [
        {
          "pubkey": "1e4be4d329cb508f5b424564d23bb07f4f3e00b52797df607eabe25ebf7ff6ba",
          "master_fingerprint": "cb218d03",
          "path": "m",
          "leaf_hashes": [
          ]
        },
        {
          "pubkey": "69cd634538d451c95b1e9211605677542b19c813fc7a46795e39a19fd3053d59",
          "master_fingerprint": "03f07354",
          "path": "m",
          "leaf_hashes": [
          ]
        },
        {
          "pubkey": "b285c0aeabaf9104034deb39b57443a7ae6763b28c608bd9d5d1f52c8474f9cb",
          "master_fingerprint": "5a124770",
          "path": "m",
          "leaf_hashes": [
          ]
        }
      ],
      "taproot_internal_key": "b285c0aeabaf9104034deb39b57443a7ae6763b28c608bd9d5d1f52c8474f9cb",
      "musig2_participant_pubkeys": [
        {
          "aggregate_pubkey": "02b285c0aeabaf9104034deb39b57443a7ae6763b28c608bd9d5d1f52c8474f9cb",
          "participant_pubkeys": [
            "0269cd634538d451c95b1e9211605677542b19c813fc7a46795e39a19fd3053d59",
            "031e4be4d329cb508f5b424564d23bb07f4f3e00b52797df607eabe25ebf7ff6ba"
          ]
        }
      ]
    }
  ],
  "outputs": [
    {
    },
    {
    }
  ],
  "fee": 0.00000040
}

But why isn't it now ready for a Signer? I think this is the point where something's not clicking.

Nonetheless, I pass to the other wallets for signing:

psbt1=$(bitcoin-cli -rpcwallet="musig1" walletprocesspsbt $psbt | jq -r '.psbt')
psbt2=$(bitcoin-cli -rpcwallet="musig2" walletprocesspsbt $psbt | jq -r '.psbt')

It gets bigger each time as expected:

echo $psbt
cHNidP8BAHECAAAAAb92RElU0s3Ym3rvvPjzwdRd3EwilAcHjRmi2x9GonbTAAAAAAD9////AnQTAAAAAAAAFgAUgB9qsjVpxHf+z173+3VowggYUgB0EwAAAAAAABYAFAr+n/tPBxAg7W9lfJeIEIHys2wsAAAAAAABASsQJwAAAAAAACJRIAqLKT11cns8LFAbOiUf+gr7u4CeydGycudbKxJMfVNsIRYeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugUAyyGNAyEWac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkFAAPwc1QhFrKFwK6rr5EEA03rObV0Q6euZ2OyjGCL2dXR9SyEdPnLBQBaEkdwARcgsoXArquvkQQDTes5tXRDp65nY7KMYIvZ1dH1LIR0+csiGgKyhcCuq6+RBANN6zm1dEOnrmdjsoxgi9nV0fUshHT5y0ICac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkDHkvk0ynLUI9bQkVk0juwf08+ALUnl99gfqviXr9/9roAAAA=

echo $psbt1
cHNidP8BAHECAAAAAb92RElU0s3Ym3rvvPjzwdRd3EwilAcHjRmi2x9GonbTAAAAAAD9////AnQTAAAAAAAAFgAUgB9qsjVpxHf+z173+3VowggYUgB0EwAAAAAAABYAFAr+n/tPBxAg7W9lfJeIEIHys2wsAAAAAAABASsQJwAAAAAAACJRIAqLKT11cns8LFAbOiUf+gr7u4CeydGycudbKxJMfVNsIRYeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugUAyyGNAyEWac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkFAAPwc1QhFrKFwK6rr5EEA03rObV0Q6euZ2OyjGCL2dXR9SyEdPnLBQBaEkdwARcgsoXArquvkQQDTes5tXRDp65nY7KMYIvZ1dH1LIR0+csiGgKyhcCuq6+RBANN6zm1dEOnrmdjsoxgi9nV0fUshHT5y0ICac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkDHkvk0ynLUI9bQkVk0juwf08+ALUnl99gfqviXr9/9rpDGwMeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugIKiyk9dXJ7PCxQGzolH/oK+7uAnsnRsnLnWysSTH1TbEIDUW0NpPynpLb9EXN8T2YvnwqTD3pCQ7UprBoOTpfeyAUCSwTI/x0Xt4jSD/2/CwfC4nunxxiH5l3Bg9MkPuJO9IYAIgIDxMqMXLVL9Es9WxXOuTQqMT1pp/KQksHu2z5P3E8U1o8YIdUHUVQAAIABAACAAAAAgAAAAAAEAAAAAAA=

echo $psbt2
cHNidP8BAHECAAAAAb92RElU0s3Ym3rvvPjzwdRd3EwilAcHjRmi2x9GonbTAAAAAAD9////AnQTAAAAAAAAFgAUgB9qsjVpxHf+z173+3VowggYUgB0EwAAAAAAABYAFAr+n/tPBxAg7W9lfJeIEIHys2wsAAAAAAABASsQJwAAAAAAACJRIAqLKT11cns8LFAbOiUf+gr7u4CeydGycudbKxJMfVNsIRYeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugUAyyGNAyEWac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkFAAPwc1QhFrKFwK6rr5EEA03rObV0Q6euZ2OyjGCL2dXR9SyEdPnLBQBaEkdwARcgsoXArquvkQQDTes5tXRDp65nY7KMYIvZ1dH1LIR0+csiGgKyhcCuq6+RBANN6zm1dEOnrmdjsoxgi9nV0fUshHT5y0ICac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkDHkvk0ynLUI9bQkVk0juwf08+ALUnl99gfqviXr9/9rpDGwJpzWNFONRRyVsekhFgVndUKxnIE/x6RnleOaGf0wU9WQIKiyk9dXJ7PCxQGzolH/oK+7uAnsnRsnLnWysSTH1TbEIDZOz5xPC+llfCjYxmcE7DQJaPvc6oCPMi8fljIPAS/7gCIYc1WFqSDDm3qtvYJY5yAa5OeSTpIZp/ninkCYZGsWcAACICAy4i+I2kVFm1W9ULY9/+ssHe6VkymFBX7NgkxBgff6unGLFWOEVUAACAAQAAgAAAAIAAAAAAAgAAAAA=

So I combine them:

psbt_complete=$(bitcoin-cli combinepsbt '''["'$psbt1'", "'$psbt2'"]''')

Here's that "complete" PSBT:

cHNidP8BAHECAAAAAb92RElU0s3Ym3rvvPjzwdRd3EwilAcHjRmi2x9GonbTAAAAAAD9////AnQTAAAAAAAAFgAUgB9qsjVpxHf+z173+3VowggYUgB0EwAAAAAAABYAFAr+n/tPBxAg7W9lfJeIEIHys2wsAAAAAAABASsQJwAAAAAAACJRIAqLKT11cns8LFAbOiUf+gr7u4CeydGycudbKxJMfVNsIRYeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugUAyyGNAyEWac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkFAAPwc1QhFrKFwK6rr5EEA03rObV0Q6euZ2OyjGCL2dXR9SyEdPnLBQBaEkdwARcgsoXArquvkQQDTes5tXRDp65nY7KMYIvZ1dH1LIR0+csiGgKyhcCuq6+RBANN6zm1dEOnrmdjsoxgi9nV0fUshHT5y0ICac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkDHkvk0ynLUI9bQkVk0juwf08+ALUnl99gfqviXr9/9rpDGwJpzWNFONRRyVsekhFgVndUKxnIE/x6RnleOaGf0wU9WQIKiyk9dXJ7PCxQGzolH/oK+7uAnsnRsnLnWysSTH1TbEIDZOz5xPC+llfCjYxmcE7DQJaPvc6oCPMi8fljIPAS/7gCIYc1WFqSDDm3qtvYJY5yAa5OeSTpIZp/ninkCYZGsWdDGwMeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugIKiyk9dXJ7PCxQGzolH/oK+7uAnsnRsnLnWysSTH1TbEIDUW0NpPynpLb9EXN8T2YvnwqTD3pCQ7UprBoOTpfeyAUCSwTI/x0Xt4jSD/2/CwfC4nunxxiH5l3Bg9MkPuJO9IYAIgIDxMqMXLVL9Es9WxXOuTQqMT1pp/KQksHu2z5P3E8U1o8YIdUHUVQAAIABAACAAAAAgAAAAAAEAAAAACICAy4i+I2kVFm1W9ULY9/+ssHe6VkymFBX7NgkxBgff6unGLFWOEVUAACAAQAAgAAAAIAAAAAAAgAAAAA=

It still thinks it's waiting for an updater:

bitcoin-cli analyzepsbt $psbt_complete
{
  "inputs": [
    {
      "has_utxo": true,
      "is_final": false,
      "next": "updater"
    }
  ],
  "estimated_vsize": 130,
  "estimated_feerate": 0.00000307,
  "fee": 0.00000040,
  "next": "updater"
}

Here's what the final PSBT looks like:

bitcoin-cli decodepsbt $psbt_complete
{
  "tx": {
    "txid": "6b752ed99150f6cde71de6b9a5ea728bc2d908289744262b569da23eea60896f",
    "hash": "6b752ed99150f6cde71de6b9a5ea728bc2d908289744262b569da23eea60896f",
    "version": 2,
    "size": 113,
    "vsize": 113,
    "weight": 452,
    "locktime": 0,
    "vin": [
      {
        "txid": "d376a2461fdba2198d070794224cdc5dd4c1f3f8bcef7a9bd8cdd254494476bf",
        "vout": 0,
        "scriptSig": {
          "asm": "",
          "hex": ""
        },
        "sequence": 4294967293
      }
    ],
    "vout": [
      {
        "value": 0.00004980,
        "n": 0,
        "scriptPubKey": {
          "asm": "0 801f6ab23569c477fecf5ef7fb7568c208185200",
          "desc": "addr(tb1qsq0k4v34d8z80lk0tmmlkatgcgyps5sq67nv2g)#52328mds",
          "hex": "0014801f6ab23569c477fecf5ef7fb7568c208185200",
          "address": "tb1qsq0k4v34d8z80lk0tmmlkatgcgyps5sq67nv2g",
          "type": "witness_v0_keyhash"
        }
      },
      {
        "value": 0.00004980,
        "n": 1,
        "scriptPubKey": {
          "asm": "0 0afe9ffb4f071020ed6f657c97881081f2b36c2c",
          "desc": "addr(tb1qptlfl760qugzpmt0v47f0zqss8etxmpvpvgj5p)#9fgy0vvy",
          "hex": "00140afe9ffb4f071020ed6f657c97881081f2b36c2c",
          "address": "tb1qptlfl760qugzpmt0v47f0zqss8etxmpvpvgj5p",
          "type": "witness_v0_keyhash"
        }
      }
    ]
  },
  "global_xpubs": [
  ],
  "psbt_version": 0,
  "proprietary": [
  ],
  "unknown": {
  },
  "inputs": [
    {
      "witness_utxo": {
        "amount": 0.00010000,
        "scriptPubKey": {
          "asm": "1 0a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c",
          "desc": "rawtr(0a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c)#wrut38c9",
          "hex": "51200a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c",
          "address": "tb1pp29jj0t4wfanctzsrvaz28l6ptamhqy7e8gmyuh8tv43ynra2dkqsskyne",
          "type": "witness_v1_taproot"
        }
      },
      "taproot_bip32_derivs": [
        {
          "pubkey": "1e4be4d329cb508f5b424564d23bb07f4f3e00b52797df607eabe25ebf7ff6ba",
          "master_fingerprint": "cb218d03",
          "path": "m",
          "leaf_hashes": [
          ]
        },
        {
          "pubkey": "69cd634538d451c95b1e9211605677542b19c813fc7a46795e39a19fd3053d59",
          "master_fingerprint": "03f07354",
          "path": "m",
          "leaf_hashes": [
          ]
        },
        {
          "pubkey": "b285c0aeabaf9104034deb39b57443a7ae6763b28c608bd9d5d1f52c8474f9cb",
          "master_fingerprint": "5a124770",
          "path": "m",
          "leaf_hashes": [
          ]
        }
      ],
      "taproot_internal_key": "b285c0aeabaf9104034deb39b57443a7ae6763b28c608bd9d5d1f52c8474f9cb",
      "musig2_participant_pubkeys": [
        {
          "aggregate_pubkey": "02b285c0aeabaf9104034deb39b57443a7ae6763b28c608bd9d5d1f52c8474f9cb",
          "participant_pubkeys": [
            "0269cd634538d451c95b1e9211605677542b19c813fc7a46795e39a19fd3053d59",
            "031e4be4d329cb508f5b424564d23bb07f4f3e00b52797df607eabe25ebf7ff6ba"
          ]
        }
      ],
      "musig2_pubnonces": [
        {
          "participant_pubkey": "0269cd634538d451c95b1e9211605677542b19c813fc7a46795e39a19fd3053d59",
          "aggregate_pubkey": "020a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c",
          "pubnonce": "0364ecf9c4f0be9657c28d8c66704ec340968fbdcea808f322f1f96320f012ffb802218735585a920c39b7aadbd8258e7201ae4e7924e9219a7f9e29e4098646b167"
        },
        {
          "participant_pubkey": "031e4be4d329cb508f5b424564d23bb07f4f3e00b52797df607eabe25ebf7ff6ba",
          "aggregate_pubkey": "020a8b293d75727b3c2c501b3a251ffa0afbbb809ec9d1b272e75b2b124c7d536c",
          "pubnonce": "03516d0da4fca7a4b6fd11737c4f662f9f0a930f7a4243b529ac1a0e4e97dec805024b04c8ff1d17b788d20ffdbf0b07c2e27ba7c71887e65dc183d3243ee24ef486"
        }
      ]
    }
  ],
  "outputs": [
    {
      "bip32_derivs": [
        {
          "pubkey": "03c4ca8c5cb54bf44b3d5b15ceb9342a313d69a7f29092c1eedb3e4fdc4f14d68f",
          "master_fingerprint": "21d50751",
          "path": "m/84h/1h/0h/0/4"
        }
      ]
    },
    {
      "bip32_derivs": [
        {
          "pubkey": "032e22f88da45459b55bd50b63dffeb2c1dee95932985057ecd824c4181f7faba7",
          "master_fingerprint": "b1563845",
          "path": "m/84h/1h/0h/0/2"
        }
      ]
    }
  ],
  "fee": 0.00000040
}

Unsurprisingly, I can't complete it:

bitcoin-cli finalizepsbt $psbt_complete
{
  "psbt": "cHNidP8BAHECAAAAAb92RElU0s3Ym3rvvPjzwdRd3EwilAcHjRmi2x9GonbTAAAAAAD9////AnQTAAAAAAAAFgAUgB9qsjVpxHf+z173+3VowggYUgB0EwAAAAAAABYAFAr+n/tPBxAg7W9lfJeIEIHys2wsAAAAAAABASsQJwAAAAAAACJRIAqLKT11cns8LFAbOiUf+gr7u4CeydGycudbKxJMfVNsIRYeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugUAyyGNAyEWac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkFAAPwc1QhFrKFwK6rr5EEA03rObV0Q6euZ2OyjGCL2dXR9SyEdPnLBQBaEkdwARcgsoXArquvkQQDTes5tXRDp65nY7KMYIvZ1dH1LIR0+csiGgKyhcCuq6+RBANN6zm1dEOnrmdjsoxgi9nV0fUshHT5y0ICac1jRTjUUclbHpIRYFZ3VCsZyBP8ekZ5Xjmhn9MFPVkDHkvk0ynLUI9bQkVk0juwf08+ALUnl99gfqviXr9/9rpDGwJpzWNFONRRyVsekhFgVndUKxnIE/x6RnleOaGf0wU9WQIKiyk9dXJ7PCxQGzolH/oK+7uAnsnRsnLnWysSTH1TbEIDZOz5xPC+llfCjYxmcE7DQJaPvc6oCPMi8fljIPAS/7gCIYc1WFqSDDm3qtvYJY5yAa5OeSTpIZp/ninkCYZGsWdDGwMeS+TTKctQj1tCRWTSO7B/Tz4AtSeX32B+q+Jev3/2ugIKiyk9dXJ7PCxQGzolH/oK+7uAnsnRsnLnWysSTH1TbEIDUW0NpPynpLb9EXN8T2YvnwqTD3pCQ7UprBoOTpfeyAUCSwTI/x0Xt4jSD/2/CwfC4nunxxiH5l3Bg9MkPuJO9IYAIgIDxMqMXLVL9Es9WxXOuTQqMT1pp/KQksHu2z5P3E8U1o8YIdUHUVQAAIABAACAAAAAgAAAAAAEAAAAACICAy4i+I2kVFm1W9ULY9/+ssHe6VkymFBX7NgkxBgff6unGLFWOEVUAACAAQAAgAAAAIAAAAAAAgAAAAA=",
  "complete": false
}

So that's the pretty complete rundown of where I got the keys from, how I created my MuSig2 descriptor, and how I tried to make the PSBT.

Where did I go wrong in this? Why can't I get the PSBT past the Updater stage? What are the wallets with the private keys doing if not offering signatures?

Hoping to get this documented for the next person!

Thanks!



from Recent Questions - Bitcoin Stack Exchange https://ift.tt/kiERuFS
via IFTTT

Popular posts from this blog

Crypto Exec Warns Tokenization Is Moving Faster Than Expected

Bitcoin Mining Could Be Strengthening The Ruble, Russian Central Bank Says

Nigerian SEC Partners With Police To Tackle Crypto Ponzi Schemes – Details