Encontré un modo de fallo más desagradable en DUSK que una transacción rechazada: se aceptan los mismos bytes de la transacción, pero luego se interpretan de forma diferente según qué parte de Rusk los toque.

Ese es el desorden que Boreas tuvo que cerrar. Las transacciones en vivo se decodifican contra la versión de protocolo activa. Los sobres Aegis más antiguos aún pueden llegar al borde de la red, pero Rusk los normaliza antes de que se muevan más adentro. Las transacciones selladas localmente se canonizan nuevamente antes de comprometerse en el libro mayor.

Lo complicado es el historial. DUSK no puede simplemente eliminar las reglas antiguas después de una actualización porque los nodos aún necesitan reproducir bloques pre-Aegis y pre-Boreas. Así que el nodo actual tiene que entender formatos de ayer sin permitir que las reglas de ayer se filtren en la producción de bloques de hoy.

Para un operador, la consecuencia es brutalmente simple. Un reinicio, una reconstrucción del archivo o una reproducción completa tiene que reconstruir el mismo estado de la cadena al que llegó el nodo en vivo. Si el mempool lee un significado y la reproducción histórica lee otro, todo puede parecer saludable hasta que un índice, saldo o transición de estado no coincida.

Me importa menos que una actualización cambie las reglas de las transacciones que el hecho de que DUSK pueda cambiarlas sin cambiar el pasado.

#dusk $DUSK @Dusk