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?
En general, no, no hasta que sea demasiado tarde.
Un ataque típico del 51% se vería así:
El atacante comienza a minar de forma privada su propia cadena, que diverge de la cadena principal en algún bloque N.
El atacante deposita monedas en su empresa y las envía desde la dirección A. Llame a esta transacción X.
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.
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.
Una vez que ha habido suficientes confirmaciones para satisfacerlo, entrega bienes o servicios al atacante.
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.
muro