Valide el hexadecimal de transacciones sin procesar sin transmitir

Me gustaría verificar la validez de una transacción sin procesar (es decir, si los nodos de la red la aceptarían), sin transmitir la transacción a la red. Estoy interesado en saber cuál es la mejor manera de lograr esto 1) utilizando la API RPC de Bitcoin Core 2) por cualquier otro medio (por ejemplo, una herramienta de código abierto).

¿Estoy en lo correcto al afirmar que el sendrawtransactionmétodo RPC primero valida una transacción antes de intentar transmitir la transacción a la red?

Editar: soy consciente de que el decoderawtransactionmétodo se puede usar para evaluar manualmente/visualmente los detalles de una transacción, pero me gustaría estar 100% seguro de que las firmas y los parámetros de la transacción son correctos sin tener que transmitir la transacción.

Respuestas (1)

El RPC que está buscando es testmempoolaccept. Comprueba si una transacción sin procesar se aceptaría en el mempool local, sin hacerlo realmente. Solo las transacciones que cumplen con todas las reglas de consenso, además de varias reglas de política, se aceptan en el mempool.

¿Estoy en lo correcto al afirmar que el sendrawtransactionmétodo RPC primero valida una transacción antes de intentar transmitir la transacción a la red?

Sí, la transmisión de transacciones no válidas sería al mismo tiempo perjudicial para la privacidad y correría el riesgo de ser prohibida por sus nodos pares.

Gracias por tomarte el tiempo de responder con una respuesta tan útil y tan rápida, Pieter. Eres absolutamente indispensable.
¿ Cuál es la razón detrás de nombrar el método testmempoolaccept? Inmediatamente busqué un validaterawtransactionmétodo en los documentos de RPC, luego, como no había ninguno, hice un cmd + f para validar, lo que obviamente tampoco ayudó. Parece más intuitivo que se nombre validaterawtransaction/ validatetransactionaunque aprecio testmempoolacceptque sea un poco más descriptivo.
Estaba haciendo lo mismo que @satirn, validaterawtransactiontambién pensé que era un nombre más intuitivo.
Supongo que testmempoolaccepttambién considera si las entradas de gasto están en el conjunto utxo válido. Si es así, ¿hay alguna manera de excluir también ese registro testmempoolaccepto algún otro comando? Por ejemplo, desea verificar si una transacción prefirmada es válida pero los fondos de entrada que se gastan aún no se han comprometido.