Validiere Rohtransaktions-Hex ohne Broadcasting

Ich möchte die Gültigkeit einer Rohtransaktion prüfen (dh ob sie von Netzwerkknoten akzeptiert würde), ohne die Transaktion an das Netzwerk zu senden. Mich interessiert, was der beste Weg ist, dies zu erreichen 1) mit der RPC-API von Bitcoin Core 2) auf andere Weise (z. B. Open-Source-Tool).

Habe ich Recht, wenn ich behaupte, dass die sendrawtransactionRPC-Methode zuerst eine Transaktion validiert, bevor versucht wird, die Transaktion an das Netzwerk zu senden?

Bearbeiten - Mir ist bewusst, dass die decoderawtransactionMethode verwendet werden kann, um die Details einer Transaktion manuell/visuell zu bewerten, aber ich möchte 100% sicher sein, dass die Transaktionssignaturen und -parameter korrekt sind, ohne die Transaktion tatsächlich übertragen zu müssen.

Antworten (1)

Der gesuchte RPC ist testmempoolaccept. Es prüft, ob eine Rohtransaktion in den lokalen Mempool aufgenommen würde, ohne dies tatsächlich zu tun. Nur Transaktionen, die alle Konsensregeln sowie verschiedene Richtlinienregeln erfüllen, werden in den Mempool aufgenommen.

Bin ich richtig, wenn ich behaupte, dass die sendrawtransactionRPC-Methode zuerst eine Transaktion validiert, bevor sie versucht, die Transaktion an das Netzwerk zu senden.

Ja, das Senden ungültiger Transaktionen wäre gleichzeitig schlecht für die Privatsphäre und riskiert, von Ihren Peer-Knoten gesperrt zu werden.

Vielen Dank, dass Sie sich die Zeit genommen haben, so schnell mit einer so hilfreichen Antwort zu antworten, Pieter. Du bist absolut unverzichtbar.
Was ist der Grund für die Benennung der Methode testmempoolaccept? Ich habe sofort in den RPC-Dokumenten nach einer validaterawtransactionMethode gesucht, und da es keine gab, habe ich ein cmd + f zum Validieren ausgeführt, was offensichtlich auch nicht geholfen hat. Es scheint intuitiver zu sein, es zu benennen validaterawtransaction/ validatetransactionobwohl ich es schätze, testmempoolacceptist es etwas beschreibender.
Ich habe das Gleiche wie @satirn gemacht, ich dachte, validaterawtransactiones wäre auch ein intuitiverer Name.
Ich gehe davon aus, dass testmempoolacceptauch berücksichtigt wird, ob sich die Ausgabeneingaben im gültigen Utxo-Set befinden. Wenn ja, gibt es eine Möglichkeit, dieses Einchecken testmempoolacceptoder einen anderen Befehl ebenfalls auszuschließen? Sie möchten beispielsweise prüfen, ob eine vorab unterzeichnete Transaktion gültig ist, aber die ausgegebenen Eingabegelder noch nicht zugesagt wurden.