¿Posible error en la sección Cálculos del libro blanco?

La sección 11 presenta los cálculos de la probabilidad de duplicar el gasto, P(z, q), dada una tasa de hash relativa del atacante q y un recuento de bloques z .

Cálculos

P(z, q) solo puede entenderse sabiendo exactamente qué representa z. Desde la sección Cálculos:

El destinatario espera hasta que la transacción se haya agregado a un bloque y los bloques z se hayan vinculado después. No sabe la cantidad exacta de progreso que ha hecho el atacante, pero asumiendo que los bloques honestos tomaron el tiempo promedio esperado por bloque, el progreso potencial del atacante será una distribución de Poisson con valor esperado... [énfasis mío]

Claramente, la transacción tiene una confirmación. La transacción "se ha agregado a un bloque" y cero bloques se han vinculado después de ella. En otras palabras, la transacción está alojada en la punta de la cadena activa.

Sin embargo, la probabilidad de que esta transacción se gaste dos veces es del 100 %, independientemente del poder de hash del atacante. De hecho, la probabilidad es del 100 % incluso sin un atacante activo.

Esta contradicción se ve reforzada por la ecuación que da Satoshi:

ingrese la descripción de la imagen aquí

Cuando z = 0, P = 1,0.

¿Qué me estoy perdiendo?

Hay al menos una respuesta a esta pregunta que afirma que z=0 significa que la transacción no está confirmada. Eso es inconsistente con el párrafo que cité.

Parece que hay un error en algún lugar de la sección Cálculos que conduce a una contradicción. Estoy buscando una respuesta que señale el error o explique lo que estoy malinterpretando.

EDITAR

Una respuesta ofrece la sugerencia de que Satoshi pudo haber estado hablando de un ataque de Finney. En otras palabras, el atacante ya ha minado previamente un bloque antes de intentar el doble gasto. Suponiendo que el atacante pueda propagar bloques más rápido que la red, habría un 100 % de posibilidades de éxito. En este escenario, el atacante y la red están vinculados en z=0, y dada una propagación de bloques más rápida, la ventaja va para el atacante.

Sin embargo, la sección de Cálculos prohíbe explícitamente un ataque de Finney. En particular, el atacante no ha minado ningún bloque antes del ataque:

El receptor genera un nuevo par de claves y entrega la clave pública al remitente poco antes de firmar. Esto evita que el remitente prepare una cadena de bloques con anticipación trabajando en ella continuamente hasta que tenga la suerte de avanzar lo suficiente y luego ejecutar la transacción en ese momento. Una vez que se envía la transacción, el remitente deshonesto comienza a trabajar en secreto en una cadena paralela que contiene una versión alternativa de su transacción.

Creo que al menos parte del problema es matemático. Específicamente, Satoshi da el valor de λ como:

ingrese la descripción de la imagen aquí

Cuando z =0, λ=0.

Volviendo a la derivación original de Satoshi de la probabilidad de doble gasto P(z, q):

ingrese la descripción de la imagen aquí

λ=0 significa que cada término es cero, independientemente de la tasa de hash. En otras palabras, el atacante nunca puede gastar dos veces.

Esto contradice la forma "reorganizada" de la ecuación, que da una probabilidad del 100% como se indicó anteriormente.

No soy un especialista en matemáticas, pero por lo que puedo decir, las dos formas de P(z, q) que da Satoshi no son equivalentes para z =0. De hecho, dan la respuesta opuesta:

  • en un caso, el atacante siempre falla, P(z, q) = 0
  • en el otro caso, el atacante tiene éxito con un 100% de probabilidad, P(z, q) = 1.

De cualquier manera, la tasa de hash relativa del atacante no se tiene en cuenta en el análisis cuando z = 0.

Me doy cuenta de que han aparecido otros tratamientos de este problema. Por ahora, solo estoy interesado en solucionar el problema aparente con el análisis del libro blanco para z =0.

¿Es esto posible, y si es así, cómo puedo hacer eso?

Respuestas (2)

Una forma de interpretar esto es que, de hecho, hay un error.

Una interpretación más caritativa es que hay dos suposiciones no declaradas:

  1. El atacante está realizando un ataque similar al de Finney , es decir, ya ha extraído previamente un bloque antes incluso de intentar la transacción. Entonces, mientras que z=0 significa que la red honesta tiene 1 bloque, también lo tiene el atacante.

  2. El atacante gana carreras de propagación. Entonces, si hay un bloque de atacante de hoja con la transacción de doble gasto y un bloque honesto de hoja de la misma altura con la transacción original, se aceptará la transacción del atacante.

Juntos, dan un 100% de posibilidades de éxito para el atacante si solo hay 1 confirmación.

En mi propio artículo sobre el tema , establecí explícitamente la suposición de que el atacante ya tiene un bloque (al tiempo que eliminé una suposición simplificadora diferente).

Esto tiene sentido, gracias. En ese caso, ¿no debería tenerse en cuenta la probabilidad de que el atacante ya haya minado el bloque? En otras palabras, un atacante con una tasa de hash relativa baja muy a menudo no estará en condiciones de iniciar el ataque en primer lugar.
@RichApodaca: La probabilidad de que el atacante ya haya minado un bloque es del 100%, dado que ya ha minado un bloque. Es decir, un minero de baja tasa de hash no tendrá muchas oportunidades para realizar un ataque, pero ni siquiera intentará comprarle al comerciante hasta que tenga la oportunidad, y cuando lo haga, será cuando haya encontrado un bloquear. Entonces, el ataque definitivamente tendrá éxito si el comerciante no espera las confirmaciones.
@RichApodaca: El atacante también deberá completar la compra de inmediato, antes de que el bloque que acaba de encontrar quede huérfano, al igual que en el ataque de Finney. Es un poco exagerado, por lo que argumentar que Satoshi fue simplemente descuidado con sus cálculos es igual de razonable.
La sección de Cálculos descarta explícitamente un ataque de Finney: "Una vez que se envía la transacción, el remitente deshonesto comienza a trabajar en secreto en una cadena paralela que contiene una versión alternativa de su transacción". En otras palabras, el ataque comienza sin bloques extraídos por el atacante.

¿Z = 0 significa que una transacción aún no ha sido confirmada, o que ha sido confirmada pero su bloqueo aún no ha sido extendido?

Z = 0 significa que la transacción aún no ha sido confirmada. La probabilidad es 1 porque, según las suposiciones hechas para estos cálculos, las transacciones no confirmadas siempre pueden ser consideradas inseguras y doblemente gastables por el atacante, independientemente de su tasa de hash.

z=0 significa claramente que la transacción tiene una confirmación: "El destinatario espera hasta que la transacción se haya agregado a un bloque y los bloques z se hayan vinculado después". En otras palabras, la transacción se ha agregado a la punta de la cadena activa.
@RichApodaca z=0 representa claramente el punto donde comienza la carrera (cadena honesta frente a cadena atacante). Si quiere ser pedante al respecto, suponga que ambas cadenas tienen un bloque cada una (misma altura).