No estoy preguntando si todos los nodos ejecutan cada transacción. Estoy pidiendo una secuencia de tiempo aproximada de eventos. Por ejemplo, en el caso de un intento de gasto doble, y el gastador doble está coludido con el minero que está agregando el siguiente bloque. ¿En qué momento un nodo aleatorio en la red, que participa en la minería, verifica que esto fue incorrecto y marca el problema?
- ¿Es solo el próximo minero que llega a agregar un bloque el que detecta este problema?
- ¿Cada nodo solo verifica/ejecuta la transacción la próxima vez que participa en la minería o solo cuando resuelve el PoW y puede agregar un nuevo bloque?
- ¿La próxima vez que estén en línea?
- ¿Existe un disparador tal que un nodo completo que pueda estar inactivo necesite ejecutar el código del contrato y verificarlo?
¿Qué pasa si los próximos N mineros también están coludidos? ¿Se requiere solo un minero para marcar la transacción como incorrecta o N+1?
Obviamente, todos los nodos no pueden ejecutar esa transacción antes de que se construya otro bloque, por lo que espero que haya una línea de tiempo aproximada de eventos.
Cuando un minero resuelve el rompecabezas de prueba de trabajo en el bloque que está extrayendo, lo coloca en el encabezado del bloque y lo propaga a los otros nodos que conoce. Podrían ser otros mineros u otros nodos completos no mineros.
El nuevo bloque ahora se está propagando. Los nodos que reciben el nuevo bloque tienen que validarlo.
Los nodos completos no mineros harán lo siguiente:
Los nodos de minería hacen lo mismo, pero en un orden ligeramente diferente, lo que les permite comenzar a minar más rápidamente en el siguiente bloque:
Verificar las transiciones de estado en un bloque completo de 8Mgas toma del orden de 100-200ms en una máquina decente.
Sobre sus preguntas específicas.
No estoy preguntando si todos los nodos ejecutan cada transacción.
Lo hacen, para garantizar que su estado sea internamente consistente. (En realidad, hay un argumento teórico del juego que va en contra de esto. Escuché que algunos mineros en realidad no están verificando que el contenido del bloque sea válido, y solo están asumiendo que es para permitirles comenzar a extraer el siguiente bloque).
¿En qué momento un nodo aleatorio en la red, que participa en la minería, verifica que esto fue incorrecto y marca el problema?
Debe ser marcado por el primer grupo de pares del minero, quienes deben validar las transiciones de estado.
¿Es solo el siguiente minero que agrega un bloque el que detecta este problema?
No, como arriba.
¿Cada nodo solo verifica/ejecuta la transacción la próxima vez que participa en la minería o solo cuando resuelve el PoW y puede agregar un nuevo bloque?
No, cuando reciben un bloque recién propagado.
¿La próxima vez que estén en línea?
Si se desconectan, cuando vuelven a conectarse y antes de que comiencen a minar nuevamente, deberán sincronizarse nuevamente con el cabezal de la cadena. La validación es parte de esta sincronización.
¿Existe un disparador tal que un nodo completo que pueda estar inactivo necesite ejecutar el código del contrato y verificarlo?
El desencadenante es que tendrá el nuevo bloque empujado hacia él.
Obviamente, todos los nodos no pueden ejecutar esa transacción antes de que se construya otro bloque, por lo que espero que haya una línea de tiempo aproximada de eventos.
En teoría lo hacen, de lo contrario no saben que están construyendo sobre un estado válido.
La transacción solo se verifica durante la minería, por lo tanto, por los nodos que extraen. Todos los demás nodos, cuando reciben el bloque, comprueban si la solución, según la dificultad, es correcta para el bloque. Entonces solo verifican la solución proporcionada por el minero. Si es correcto, lo aceptan, si no, lo rechazan.
Puede encontrar más información sobre la validez del bloque en el papel amarillo, parte 4.4.2: http://yellowpaper.io/
En cuanto a la orden de ejecución, no estoy nada seguro, pero prefiero no decir nada. También debería echar un vistazo al papel amarillo al respecto: http://yellowpaper.io/
ismael
kevin larson
ismael
ismael
kevin larson
ismael
ismael
Rob Hitchens