¿Por qué 6 es el número de confirmaciones que se considera seguro?

¿Por qué 6 es el número de confirmaciones que se considera seguro? No he encontrado ninguna explicación matemática o de otro tipo que explique por qué es 6 y no 5 o 7. ¿Hay una razón histórica para 6? ¿Hay una forma específica de calcularlo para que 6 sea solo un número que se eligió?

Respuestas (5)

Creo que esto se aborda en la página 8 del documento de Bitcoin de Satoshi cuando muestra la probabilidad de que un atacante se ponga al día.

La wiki dice:

"Solo 6 bloques o 1 hora son suficientes para que la reversión no sea práctica desde el punto de vista computacional".

La palabra clave es "poco práctico".

La oración importante en el artículo de Satoshi es:

"Asumiendo que los bloques honestos tomaron el tiempo promedio esperado por bloque, el progreso potencial del atacante será una distribución de Poisson ".

Entonces, no es que alguien no pueda crear el mundo primero y poseer una granja ASIC de $ 50 millones, para tener la capacidad de superar la cadena de bloques desde una bifurcación seis bloques antes, pero hacerlo sería a.) una empresa enorme , b.) obvio para todos y c.) tremendamente improductivo para el atacante.

También es digno de mención que se entiende en gran medida como "6 cuadras o 1 hora" , lo que sea mayor . Uno de los grandes conceptos erróneos contra los que hemos luchado durante mucho tiempo (especialmente en el caso de cadenas de bloques alternativas) es la idea de que las confirmaciones más rápidas cambian todo. Una red con un tiempo de bloqueo de un minuto requeriría 60 confirmaciones para considerarse segura, no 6.
Eso ayuda a algunos, pero abre otra pregunta. ¿Por qué se espera que 1 hora sea suficiente para que la reversión no sea práctica desde el punto de vista computacional?
Hay muchas matemáticas detrás de esto, pero en mi comprensión (limitada) la clave es el bit de distribución de Poisson . Las posibilidades de que un atacante modestamente armado tenga "suerte" y doble el gasto sin tener al menos el 51% de la red se encuentran en esa distribución, y 60 minutos de tiempo de cómputo es el punto en el que es suficientemente improbable que una transacción pueda ser deshecho (es decir, el punto donde comienza la "cola larga" de la distribución).
David, me temo que eres tú el que tiene una idea equivocada. Las partes matemáticas que se relacionan con la distribución de Poisson y otras hablan de la cantidad de bloques, no del tiempo. 6 bloques es lo que garantiza que alguien con, digamos, el 10% del hashrate, tiene una posibilidad insignificante de tener éxito con el doble gasto. Si cada bloque es de 1 minuto, entonces son 6 minutos. El tiempo (1 hora) solo importa si asumimos que el atacante no puede mantener su tasa de hash alta durante tanto tiempo.
¿Debo suponer que David tiene razón en lugar de Meni ya que ha recibido más votos?
@Griffin: Eche un vistazo a bitcoil.co.il/Doublespend.pdf y juzgue usted mismo.
@MeniRosenfeld ¡Gracias Meni Rosenfeld! Estaba trazando las tasas de confirmación de alta confianza sugeridas relativas para bitcoin y litecoin, y extrapolando logarítmicamente, llegué a la conclusión de que la verificación de una transacción de 1 segundo podría confirmarse con la misma confianza en 2,3 minutos. Por vanidad, asumiré que me diste la razón. ;))

Muchas personas citan erróneamente el papel de Satoshi y asumen que 6 es un valor duro.

El documento de Satoshi describe la cantidad de confirmaciones necesarias para estar 99,9% seguro (menos de 1 en 1000 de probabilidad de éxito) de que un atacante no pudo construir una cadena más larga para revertir la transacción.

http://bitcoin.org/bitcoin.pdf

P < 0.001
q=0.10   z=5
q=0.15   z=8
q=0.20   z=11
q=0.25   z=15
q=0.30   z=24
q=0.35   z=41
q=0.40   z=89
q=0.45   z=340

p es la posibilidad de que el atacante finalmente obtenga una cadena más larga y revierta una transacción (0.1% en este caso). q es el % del poder de hashing que controla el atacante. z es el número de bloques para poner el riesgo de reversión por debajo de p (0,1%).

Entonces puede ver si el atacante tiene un pequeño% del poder de hashing 6 bloques es suficiente. Recuerde que el 10 % de la red en el momento de escribir este artículo es de ~100 GH/s. Sin embargo, si el atacante tuviera un mayor porcentaje de poder de hash, tomaría cada vez más tiempo asegurarse de que una transacción no se pueda revertir.

Si el atacante tuviera significativamente más poder de hash, digamos el 25% de la red, requeriría 15 confirmaciones para estar seguro (99,9% de probabilidad) de que un atacante no puede revertirlo.

Si el atacante tiene una q > 50 % ("el ataque del 51 %"), dado un tiempo ilimitado, el atacante inevitablemente terminará con la cadena más larga.

En edición: para aclarar el "tiempo ilimitado", la cadena con el hashrate más alto inevitablemente terminará siendo la más larga, sin embargo, la probabilidad aún entra en juego. No podemos decir con 100% de certeza cuánto tiempo tomará, en el mejor de los casos podemos proporcionar un intervalo de confianza. Si el atacante es apenas un poco más rápido que los buenos mineros (51 % frente a 49 %), entonces un atacante puede tardar mucho en superar un déficit de 6 bloques. Cuanto más domina el atacante (es decir, 70 % frente a 30 %), más rápido y más corto se alcanza el intervalo de confianza del 95 %.

Si el atacante tiene un aq> 50%, no necesita tiempo ilimitado, sino solo el tiempo suficiente para producir más hashes que los que contribuyeron a la cadena de bloques "honesta".
Mi punto con el tiempo ilimitado es que no sabemos exactamente cuánto tiempo le tomará a un atacante avanzar. Incluso con >50% del hashpower, el atacante aún se ve afectado por la suerte (buena o mala). Lo más que se puede decir es con un cierto intervalo de confianza. es decir, "Con un 95 % de confianza, un atacante con un x % del hashrate tendrá la cadena más larga después de y bloques". Justo por encima del 50% de hashrate, la cantidad de tiempo para tener una confianza del 95% es muy larga e incluso eso no es una garantía. La cadena con una tasa de hash superior al 50% inevitablemente terminará siendo la más larga, pero el tiempo requerido es probabilístico.
¿Se basan en observaciones de prueba o en una teoría educada?
Es probabilidad básica, lo llamaría matemáticas más que una teoría, sin embargo, uno podría observarlo usando una simulación de Monte Carlo.

Estas son algunas de las secciones relevantes del artículo de Satoshi: http://bitcoin.org/bitcoin.pdf

"11. Cálculos Consideramos el escenario de un atacante que intenta generar una cadena alternativa más rápido que la cadena honesta... La carrera entre la cadena honesta y una cadena atacante se puede caracterizar como un paseo aleatorio binomial. El evento de éxito es el la cadena honesta se extiende en un bloque, aumentando su ventaja en +1, y el evento de falla es que la cadena del atacante se extiende en un bloque, reduciendo la brecha en -1... La probabilidad de que un atacante alcance un déficit dado es análogo al problema de la ruina del jugador. ...

p = probabilidad de que un nodo honesto encuentre el siguiente bloque q = probabilidad de que el atacante encuentre el siguiente bloque qz = probabilidad de que el atacante alguna vez lo alcance desde z bloques atrás

ecuación

Dada nuestra suposición de que p > q, la probabilidad cae exponencialmente a medida que aumenta el número de bloques que el atacante tiene que alcanzar. Con las probabilidades en su contra, si no hace una arremetida afortunada desde el principio, sus posibilidades se vuelven cada vez más pequeñas a medida que se queda más atrás... el progreso potencial del atacante será una distribución de Poisson... Para obtener la probabilidad, el atacante todavía podría ponerse al día ahora, multiplicamos la densidad de Poisson por cada cantidad de progreso que podría haber hecho por la probabilidad de que pudiera ponerse al día desde ese punto.

Convirtiendo a código C..

include <math.h>
double AttackerSuccessProbability(double q, int z)
{
    double p = 1.0 - q;
    double lambda = z * (q / p);
    double sum = 1.0;
    int i, k;
    for (k = 0; k <= z; k++)
    {
        double poisson = exp(-lambda);
        for (i = 1; i <= k; i++)
            poisson *= lambda / i;
        sum -= poisson * (1 - pow(q / p, z - k));
    }
    return sum;
}

Ejecutando algunos resultados, podemos ver que la probabilidad cae exponencialmente con z. "

¿Podría resumir la parte relevante?
La conclusión es que la probabilidad de que alguien sea capaz de generar bloques cae exponencialmente. Sabemos que, de hecho, pueden hacer esto si tienen el 51% de la red. Entonces, parece que si alguien tuviera, digamos, el 10 % de la red, podría realizar un gasto doble a veces con 0 confirmaciones, y las probabilidades de que obtengan 2 bloques, o 3 o más... disminuyen exponencialmente. Así es como estoy interpretando esto, no entiendo en detalle las matemáticas que resuelve. Todavía no veo ningún racional para 6 bloques, a diferencia de 4 u 8. Tal vez no lo haya, y este fue solo un buen número que se eligió.
Con 30% y 6 bloques, la probabilidad de éxito es mucho mayor que 1/2000, está más cerca del 13% (estoy interpolando a partir de los resultados de Satoshi).
@MeniRosenfeld Mierda a la derecha. Busqué un valor incorrecto. Borro mi comentario anterior porque es erróneo.

La cifra de 6 bloques es completamente arbitraria. Se basa en la suposición de que el atacante no acumulará más del 10 % de la tasa de hash de la red y que es aceptable una posibilidad insignificante del 0,1 % de duplicar el gasto con éxito.

Un análisis más detallado de esto está disponible en Análisis del doble gasto basado en hashrate

Con más confirmaciones probabilidad de hacer una exitosa disminución de doble gasto. Si bien es posible realizar un doble gasto con menos del 51% del poder de hash, se requiere que uno tenga más suerte que el resto de los mineros, es decir. resolver bloques más rápido que otros. Esto continuará para siempre (para ser correcto: es muy poco probable), por lo que el atacante no podrá bifurcar toda la cadena. Con los pools hasta hace muy poco controlando el 30-40% del poder total de hash, la regla de las 6 confirmaciones no habría sido segura si el operador del pool hubiera decidido cometer un acto maligno.