Ejecuto una herramienta de confirmación 0. Para rastrear nuevas transacciones que uso:
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)?
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.
pvz
cdecker