Verificación de transacciones

Ejecuto una herramienta de confirmación 0. Para rastrear nuevas transacciones que uso:

  1. bitcoin y getrawmempool
  2. nuevas transacciones en un nuevo bloque no disponible en mempool (parece que no recibo todas las transacciones en mempool antes de que mi cliente acepte un nuevo bloque)

Confío en el proceso de verificación de transacciones de mi cliente bitcoin (reglas de protocolo). (Espero que haga todos los pasos en: https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages )

Supongo que no tengo la garantía de que el cliente/persona que creó el nuevo bloque haya seguido las reglas del protocolo para las transacciones incluidas, por lo que quiero verificar la transacción 'faltante' de mi mempool.

Sé que se espera que 6 confirmaciones sean 'seguras', pero me gustaría hacer una confirmación 0 (o una confirmación relativa a un nuevo bloque) lo más segura posible.

1: ¿Mi cliente bitcoind verifica cada transacción antes de aceptar un nuevo bloque (local)? (para asegurarme de que cada transacción disponible en mempool y blockchain de mi cliente (oficial) cumpla con las reglas del protocolo)

2: Si 1. no es cierto: ¿Qué API de bitcoind o programa (python) está disponible para verificar las transacciones incluidas en un nuevo bloque si cumplen con las reglas del protocolo (oficial)?

Respuestas (1)

Sí, su cliente verificará completamente cada bloque que reciba.

Su mayor problema al aceptar transacciones de confirmación 0 es asegurarse de que un atacante no pueda enviar a su(s) nodo(s) una transacción que el resto de la red descartará como un gasto doble. Básicamente, deseará deshabilitar las conexiones directas a su(s) nodo(s) y conectarlos a nodos confiables, como grandes mineros.

Esto no elimina el riesgo, pero lo reduce un poco a los ataques de Finney y un atacante que tiene suerte de obtener la transacción incorrecta a través de un gran minero que termina sin poner esa transacción en un bloque antes de que se extraiga la transacción en conflicto.

¡Gracias! Ahora entiendo el riesgo si los nodos de mi cliente son rastreables y/o usan nodos que no son de confianza.
Para obtener más información sobre los riesgos que implica aceptar transacciones no confirmadas, consulte los artículos recientes de Karame et al. y Bamert et al. (descargo de responsabilidad: soy autor del segundo). Proporcionan un análisis en profundidad de las causas y las contramedidas.