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 sendrawtransaction
método RPC primero valida una transacción antes de intentar transmitir la transacción a la red?
Editar: soy consciente de que el decoderawtransaction
mé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.
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
sendrawtransaction
mé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.
satírico
satírico
testmempoolaccept
? Inmediatamente busqué unvalidaterawtransaction
mé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 nombrevalidaterawtransaction
/validatetransaction
aunque apreciotestmempoolaccept
que sea un poco más descriptivo.gran lobo
validaterawtransaction
también pensé que era un nombre más intuitivo.gran lobo
testmempoolaccept
tambié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 registrotestmempoolaccept
o 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.