Как получить комиссию за транзакцию с неподтвержденными входами в bitcoinj?

Я пытаюсь получить комиссию за входящие транзакции в кошельке с биткойнами. Иногда это было комиссионное использование Transaction.getFee(), но это был бросок NullPointerException. Мне пришлось провести еще немного исследований, и я понял, что это происходит, когда транзакция имеет неподтвержденные входные данные. Я пытался сложить стоимость всех входов и вычесть стоимость всех выходов, чтобы вы получили комиссию, но в этих случаях сумма входов равна 0 BTC. Есть ли другой способ получить комиссию?

Оставляю пример вывода одной из транзакций (тестнет):

04f570fdd0cb8c973d8c9b3adf09b803ef70941ec239685d479a93b089e4d621: Seen by 1 peer. Pending/unconfirmed.
   in   PUSHDATA(72)[3045022100fe750e43c3bc46eddb390dad98acd6ef0646e00386770de542e7e5c581f8118102206924cd243b459645ae8626e948e1d33404d29c651a8a59c24ed5cd902d7e939201] PUSHDATA(33)[02a40db91b59058375fe7f13810beb6609e63a8974ce355b76d01692058eaac9f9]
        outpoint:7cd4378560d2b36f53b3d492afa815c5ae615d18bff9611c3081f591a1c0c156:0
   out  DUP HASH160 PUSHDATA(20)[49d2661baf33597c6dc3dbdbb9e7a8835fdb76b4] EQUALVERIFY CHECKSIG 0.00126081 BTC
   out  DUP HASH160 PUSHDATA(20)[372fb0d8affe634b369af9722cc48c63ad90e9df] EQUALVERIFY CHECKSIG 0.001 BTC
   prps UNKNOWN

Ответы (1)

В случае узла SPV у вас нет значений входов транзакции, так как у вас нет полной цепочки блоков и, следовательно, всех UTXO.

Сама транзакция не имеет значений входов!

У вас есть следующие варианты:

  • Запросите доверенный сервер для UTXO (например, серверы Electrum)
  • Запросить веб-сервис (например, blockcypher)
  • конечно, у вас есть полная копия блокчейна, вы можете использовать привязки Java для запроса локального биткойна.