Ошибки с `walletcreatefundedpsbt` и неразрешимыми UTXO - Биткойнер
Винтажный Клуб для гитаристов
0 голосов
/

Я пытаюсь использовать walletcreatefundedpsbt с кошельком только для часов.

Имея 2.0 BTC в кошельке только для часов, я пытаюсь создать psbt, отправляющую 0.2 BTC без указания входных данных, и получаю ошибку «Недостаточно средств»:

$ bitcoin-cli -regtest -rpcwallet=watchonly getbalance "*" 0 true
2.00000000

$ bitcoin-cli -regtest -rpcwallet=watchonly walletcreatefundedpsbt '[]' '[{"bcrt1qnv3tl3z9cll9faqf79ppfn3rrp7pn9wwmq04p5gqgqtxg55xfxuslkyk94": "0.20000000"}]' 0 '{"includeWatching": true, "changeAddress": "bcrt1qa4h6amsgyc878k094grqh6ktmgvp97dt6et9cy5hjmyxlgd9q63q3p6hch"}' true
error code: -4
error message:
Insufficient funds

Когда я указываю входные данныек тому же вызову RPC я получаю (сбивающую с толку) ошибку «Ошибка подписания транзакции»:

$ bitcoin-cli -regtest -rpcwallet=watchonly walletcreatefundedpsbt '[{"txid": "1d76879500aecafde541770b5d44ccec5955b4c1a455fae446bf1df7b5ea43e9", "vout": 0}, {"txid": "e5a8dfa9459ac154fe62652e1d43049dae13f11815da36cc32881e27917a0dff", "vout": 1}]' '[{"bcrt1qnv3tl3z9cll9faqf79ppfn3rrp7pn9wwmq04p5gqgqtxg55xfxuslkyk94": "0.20000000"}]' 0 '{"includeWatching": true, "changeAddress": "bcrt1qa4h6amsgyc878k094grqh6ktmgvp97dt6et9cy5hjmyxlgd9q63q3p6hch"}' true
error code: -4
error message:
Signing transaction failed

Эти входные данные видны в listunspent, но они не «разрешимы».

$ bitcoin-cli -regtest -rpcwallet=watchonly listunspent
[
  {
    "txid": "1d76879500aecafde541770b5d44ccec5955b4c1a455fae446bf1df7b5ea43e9",
    "vout": 0,
    "address": "bcrt1qupu3f9ekx2jpu9adgnrckkuh60d0x5zunmrxla34cwc5z79lajrs52gcpu",
    "label": "",
    "scriptPubKey": "0020e07914973632a41e17ad44c78b5b97d3daf3505c9ec66ff635c3b14178bfec87",
    "amount": 1.00000000,
    "confirmations": 205,
    "spendable": false,
    "solvable": false,
    "safe": true
  },
  {
    "txid": "e5a8dfa9459ac154fe62652e1d43049dae13f11815da36cc32881e27917a0dff",
    "vout": 1,
    "address": "bcrt1qz9xlsapracexvk7gwjd8ytf9c5ckyeg6v64lmuun8j9x6l2770cs42f7kl",
    "label": "",
    "scriptPubKey": "0020114df87423ee32665bc8749a722d25c53162651a66abfdf3933c8a6d7d5ef3f1",
    "amount": 1.00000000,
    "confirmations": 103,
    "spendable": false,
    "solvable": false,
    "safe": true
  }
]

Эти UTXO соответствуют экзотическим сценариям, которые не могут быть выражены на языке дескриптора, и были импортированы с помощью importmulti RPC. Во время импорта отображалось следующее предупреждение:

$ bitcoin-cli -regtest -rpcwallet=watchonly importmulti '[{"scriptPubKey": "0020e07914973632a41e17ad44c78b5b97d3daf3505c9ec66ff635c3b14178bfec87", "witnessscript": "63522102a7451395735369f2ecdfc829c0f774e88ef1303dfe5b2f04dbaab30a535dfdd62102303cc8dc4e50bb574899b4715c0ddcd63268137b2d95011ff0e71db0968d819d2103d9dcfae4253ef1dd7b2401f82f79b1e739e76ad22ad30cd6a58a04076a033e5a53ae6702f401b1755221033defb46605b0bf90e99821150926daabc0a909ae4d7e09ddd9cc691735896709210245449f5d5cb7cd0d299fcbfd7a3bf2e46a5ae43bdc75289f5ab1e0c7654cc057210299f94c03fc71ae8ced4d3a4f739cc2f227687885b8d1a5184ad1de14faa6c71c53ae68", "internal": false, "keypool": false, "timestamp": "now", "watchonly": true}]'
[
  {
    "success": true,
    "warnings": [
      "All private keys are provided, outputs will be considered spendable. If this is intentional, do not specify the watchonly flag.",
      "Importing as non-solvable: unrecognized script. If this is intentional, don't provide any keys, pubkeys, witnessscript, or redeemscript."
    ]
  }
]

Обе эти ошибки вызваны одной и той же проблемой - отсутствием "разрешимых" utxos?

1 Ответ

1 голос
/

Да. Ядро Биткойн не сможет выбрать монеты, которые нельзя решить. Это связано с тем, что для оценки сборов он должен знать, насколько большой будет конечная транзакция, но он не может этого сделать, не зная всего, что необходимо для построения последней транзакции.

Выходные данные не должны быть расходуемыми (т. Е. Вам не нужно иметь закрытые ключи для них), потому что Core знает, насколько большой будет подпись, поэтому он создает фиктивную подпись. Но для этого нужно иметь все остальное, например скрипты и открытые ключи. Без них выходные данные не разрешимы и не могут быть использованы при выборе монет.

Добро пожаловать на сайт Биткойнер, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...