¿Puedo detectar un ataque del 51 % como desarrollador?

Soy un desarrollador que crea una aplicación que acepta pagos en criptomonedas.

¿Es posible, en caso de un ataque del 51 %, crear un script que detecte esto, de modo que podamos suspender los retiros automáticamente?

Respuestas (1)

En general, no, no hasta que sea demasiado tarde.

Un ataque típico del 51% se vería así:

  1. El atacante comienza a minar de forma privada su propia cadena, que diverge de la cadena principal en algún bloque N.

  2. El atacante deposita monedas en su empresa y las envía desde la dirección A. Llame a esta transacción X.

  3. El atacante inserta en su propia cadena una transacción X' que entra en conflicto con X; típicamente X' envía las monedas desde la dirección A a otra dirección que pertenece al atacante.

  4. El atacante espera varias confirmaciones de la transacción X, en los bloques N+1, ..., N+6 (reemplace 6 con la cantidad de confirmaciones que desee su empresa) de la cadena principal.

  5. Una vez que ha habido suficientes confirmaciones para satisfacerlo, entrega bienes o servicios al atacante.

  6. El atacante lanza su propia cadena, que ahora tiene bloques hasta, digamos, N+50. Al ser más larga, esta cadena es aceptada por la red. Esta cadena no contiene la transacción X sino X', por lo que no tiene las monedas que pensaba que tenía.

Tenga en cuenta que hasta el Paso 6, todo en la red parece completamente normal; sólo el atacante sabe lo que está pasando.

Después del paso 6, ¿sabrían todos la dirección IP del atacante?
@AlexMillar Sí, a menos que haya usado una VPN.
@NickODell: No creo que todos lo sepan, con o sin VPN. El atacante expondrá su dirección (o la de su VPN, o el nodo de salida de Tor) a todos los demás nodos a los que envía su cadena, pero podría afirmar plausiblemente que la recibió de otra persona y solo la estaba retransmitiendo. Del mismo modo, un nodo inocente que transmite los bloques no necesariamente puede probar que no es el atacante que generó esos bloques.