Estoy brindando un servicio que acepta Bitcoin. Para acelerar un poco las cosas, planeo reducir el número de confirmaciones que necesito antes de considerar que ha llegado el dinero.
He leído que es bastante seguro trabajar incluso con una sola confirmación si se toman algunas medidas de precaución. ¿Que son esos?
Más específicamente, ¿con qué opciones debo ejecutar bitcoind?
Por el momento, hay muy pocos bloques huérfanos y casi ninguna aparición de cadenas laterales de dos bloques. A menos que esté tratando con grandes cantidades (probablemente, más de dos bloques de recompensas), sus posibilidades de ataque son increíblemente bajas. Si está tratando con montos inferiores a unos pocos BTC, personalmente me complacería aceptar transacciones de una sola confirmación.
No hay banderas específicas bitcoind
que pueda usar para controlar las confirmaciones, todo está en el lado de su software. En general, si es un comerciante, debe evitar tener un nodo de escucha (set listen=0
) solo para estar seguro. Asegúrese de utilizar el almacenamiento en frío si su servidor acumula una cantidad de moneda digna de un objetivo, enviándolo a una dirección de la que el servidor no conoce la clave privada.
Si no está utilizando walletnotify
para controlar su sistema contable interno, probablemente debería hacerlo.
Hay un aumento significativo en el riesgo de ser estafado cuando el comerciante acepta el pago 0/sin confirmar y al mismo tiempo tiene configurado bitcoind para las transacciones entrantes. En esa situación, el atacante puede alcanzar un éxito cercano al 100% en el gasto doble contra el comerciante simplemente haciendo una conexión directa al nodo de ese comerciante y transmitiendo una transacción a él y luego al resto de la red transmitiendo una transacción de gasto doble.
Pero cuando el comerciante espera hasta que haya al menos una confirmación, el riesgo de ataque de esta raza esencialmente desaparece.
Para deshabilitar la escucha, la configuración es "escuchar = 0".
Piotr Kula