Как я узнаю, что одна транзакция подтверждена?

Я запускаю свой bitcoindс -zmqpubhashtxнеобязательным, и я получаю уведомление, когда новая транзакция транслируется в общедоступную цепочку! Я также могу разобрать его с помощью getrawtransactionи decoderawtransaction. Но я не мог проверить, подтверждена ли транзакция.

Кроме того, также существует необязательное имя как -zmqpubhashblock, я также могу проанализировать его getblockи прочитать все его транзакции, сравнить все это с моими данными MySQL, если оно существует с тем же самым txid, я обновлю свой столбец (подтверждения плюс один) , но это немного неэффективно.

Скажем, после того, как я побежал getblock <hash>, а затем дайте мне тонны транзакций. и я должен проверить каждый что-то вроде:

UPDATE t_unspent_tx
SET confirmations = confirmations + 1
WHERE addr in (addresses)    

Кстати, могу ли я доверять хешу блока из уведомления? Может быть, это не самая длинная цепь?

PS , я не хочу проверять подтверждение с blockchain.info или какого-либо другого сайта.

Ответы (1)

Если у вас есть txindex=1, вы можете позвонить getrawtransaction <txid> 1, чтобы получить декодированный объект tx, который будет включать количество подтверждений и хэш блока.

Ой! Я точно уверен, что нет confirmationsпосле того, как вы расшифруете hex, что пройти мимо getrawtransaction.
Кажется, работает над chainquery . Какую версию биткойна вы используете?
Я использую V0.16.1версию . Ссылка, которую вы дали, должна быть обработана.
Это также, кажется, в источнике . Не уверен, почему он не будет отображаться на вашем локальном узле. Вы уверены, что используете getrawtransaction, а не decoderawtransaction?
Ой! getrawtransaction возвращает мне только хеш, и я должен использовать decoderawtransactionего для синтаксического анализа.
getrawtransactionимеет подробный режим, как описано в моем ответе, используйте его вместо этого