Parameter listinceblock: Zielbestätigungen

listsinceblock helpkehrt zurück:

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

Ich schickte eine Münze an meine Brieftasche und ein paar Sekunden später führte ich sie aus listsinceblock 1. Meine Transaktion wurde gerade gesendet, also hatte sie wie erwartet 0 Bestätigungen. Beachten Sie den target-confirmationsobigen Parameter, der auf jeden Fall größer als 0 sein muss.

Also habe ich für meinen Test ausgeführt bitcoin-cli listsinceblock 0000000008eb5d53efbb39d2cb9f595e5bd567c295936de5c2282bbb8ef46cf0 1, was zurückgegeben wurde:

{
    "transactions" : [
        {
            "account" : "",
            "address" : "mzE6DJMHPghYpVg4GCurMbxSSXBfW1KCFH",
            "category" : "receive",
            "amount" : 1.00000000,
            "confirmations" : 0,
            "txid" : "917248d57293a7fd3a88aa3a26026d2e4d6a1d4eef898519b20419f2339c265c",
            "walletconflicts" : [
            ],
            "time" : 1399200157,
            "timereceived" : 1399200157
        }
    ],
    "lastblock" : "0000000004ba22e9f8cea2e843b34f7eeaa2c3b7004ddcf19bfd8af0215fc0cc"
}

Beachten Sie, dass die obige Transaktion 0 Bestätigungen hat, listinceblock jedoch über 1 Bestätigungen hinaus funktionieren soll (was seltsam ist, da ich abfrage listsinceblock, um neue Transaktionen zu erhalten, die immer unbestätigt sind, nach Gavins Tipp: Woher weiß ich, dass es eine neue Transaktion gibt? ).

Was fehlt mir hier?

Antworten (1)

Gemäß: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

Wir haben,

[target-confirmations] wirkt sich absichtlich nicht auf die Liste der zurückgegebenen Transaktionen aus, sondern nur auf den zurückgegebenen Wert „lastblock“.

Was bedeutet das? Dies bedeutet, dass der lastblockEintrag in Ihrem zurückgegebenen Objekt der letzte Block ist, den Sie in der Blockchain sehen können (da es sich um den Block handelt, der derzeit genau 1 Bestätigung hat, wie durch das von Ihnen übergebene Argument angegeben). Der lastblockEintrag ist das einzige Feld, das Sie durch Ändern des target-confirmationsArguments beeinflussen können.

Das bedeutet, dass Sie diese Liste filtern müssen, wenn Sie alle Transaktionen mit mindestens 1 Bestätigung wünschen. Dies wirft die Frage auf, warum das target-confirmationsArgument nicht für diese Filterung verwendet wird.

Dies liegt daran, dass die Funktionsweise der Funktion derzeit einen Anwendungsfall zulässt, in dem Sie ständig listsinceblockmit dem Wert aufrufen können lastblock, der bei Ihrem letzten Aufruf zurückgegeben wurde. Auf diese Weise enthält Ihre transactionsListe Transaktionen, die X oder mehr Bestätigungen auf der Blockchain in genau einem dieser Aufrufe erreichen (wobei X in diesem Fall 1 ist).

Als Autor des Patches, der diesen Befehl eingeführt hat, +1. Dies ist die richtige Antwort. (Siehe meinen Kommentar zu GitHub , der die Begründung erläutert.) Der Punkt ist, Ihrer Anwendung zu ermöglichen, auf Transaktionen unterhalb Ihres Bestätigungsziels aufmerksam zu werden (vielleicht zeigen Sie sie Ihrem Benutzer als unbestätigt an), aber dennoch zu bemerken, wenn sie dieses Ziel später erreichen .