listsinceblock help
возвращает:
listsinceblock ( "blockhash" target-confirmations )
Get all transactions in blocks since block [blockhash], or all transactions if omitted
Arguments:
1. "blockhash" (string, optional) The block hash to list transactions since
2. target-confirmations: (numeric, optional) The confirmations required, must be 1 or more
Я отправил монету на свой кошелек и через несколько секунд выполнил listsinceblock 1
. Моя транзакция только что транслировалась, поэтому, как и ожидалось, у нее было 0 подтверждений. Обратите внимание на target-confirmations
параметр выше, который должен быть больше 0, несмотря ни на что.
Итак, для моего теста я выполнил bitcoin-cli listsinceblock 0000000008eb5d53efbb39d2cb9f595e5bd567c295936de5c2282bbb8ef46cf0 1
, который вернул:
{
"transactions" : [
{
"account" : "",
"address" : "mzE6DJMHPghYpVg4GCurMbxSSXBfW1KCFH",
"category" : "receive",
"amount" : 1.00000000,
"confirmations" : 0,
"txid" : "917248d57293a7fd3a88aa3a26026d2e4d6a1d4eef898519b20419f2339c265c",
"walletconflicts" : [
],
"time" : 1399200157,
"timereceived" : 1399200157
}
],
"lastblock" : "0000000004ba22e9f8cea2e843b34f7eeaa2c3b7004ddcf19bfd8af0215fc0cc"
}
Обратите внимание, что вышеуказанная транзакция имеет 0 подтверждений, однако предполагается, что listsinceblock работает после 1 подтверждения (что странно, поскольку я опрашиваю listsinceblock
, чтобы получить новые транзакции, которые всегда не подтверждены, после подсказки Гэвина: как узнать, что есть новая транзакция? ).
Что мне здесь не хватает?
Согласно: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
У нас есть,
[target-confirmations] намеренно не влияет на список возвращаемых транзакций, а влияет только на возвращаемое значение lastblock.
Что это значит? Это означает, что lastblock
запись в вашем возвращенном объекте является последним блоком, который вы видите в блокчейне (поскольку это блок, который в настоящее время имеет ровно 1 подтверждение, как указано в аргументе, который вы передали). Запись lastblock
— это единственное поле, на которое вы можете повлиять, изменив target-confirmations
аргумент.
Это означает, что если вы хотите, чтобы все транзакции имели хотя бы 1 подтверждение, вам необходимо отфильтровать этот список. Возникает вопрос, почему target-confirmations
аргумент не используется для этой фильтрации?
Это связано с тем, что способ работы функции в настоящее время допускает вариант использования, в котором вы можете постоянно вызывать listsinceblock
значение lastblock
, которое было возвращено в вашем последнем вызове. Сделав это, ваш transactions
список будет содержать транзакции, которые достигают X или более подтверждений в блокчейне ровно в одном из этих вызовов (где X в данном случае равно 1).
компакт-диск