¿Cuál es el cambio en el contrato inteligente cuando la 'reorganización de la cadena'?

Recientemente aprendí sobre la 'reorganización de la cadena'.

¿Cuál es el cambio en el contrato inteligente cuando la 'reorganización de la cadena'?

Por ejemplo,

contract Contract{
    event LOG_Increase();
    uint sum = 0;

    function Increase() public {
        sum++;
        emit LOG_Increase();
    }    
}

Cuando llame a la función de solidez Increaseque se incrementa sumdesde 0, si el bloque que contiene la transacción se descarta debido a la 'reorganización de la cadena', ¿se sumconvierte en 1 y luego en 0 nuevamente? ¿O no hay cambio en 0? ¿Y qué pasa con los eventos LOG_Increase?

No puedo hablar bien inglés y recibí ayuda de un traductor. Gracias por su comprensión.

Respuestas (1)

Para que quede claro: la reorganización de la cadena es un término que se usa en Geth. Significa el evento cuando se acepta una cadena diferente (bifurcación de la) como la cadena canónica, por lo que la cadena de bloques llega a un consenso y algunos bloques ya extraídos se descartan.

Entonces, si la cadena se reorganiza, todas las transacciones en los bloques "perdidos" se pierden efectivamente. Es como si la transacción nunca hubiera ocurrido. Entonces, en su caso, se sumvuelve 0y eventnunca se dispara.

Sin embargo, esto no significa que la misma transacción no pueda incluirse y ejecutarse en un bloque diferente , tal vez en un bloque que sea parte de la nueva cadena canónica. Por lo tanto, es posible que su transacción ya se haya ejecutado en un bloque que se considera "válido".

Puede leer más sobre reorganizaciones de cadenas, por ejemplo, aquí (y su enlace): https://ethereum.stackexchange.com/a/19393/31933

¡Gracias por su respuesta! ¿Quiere decir que la variable de contacto inteligente cambia y el evento se dispara después de un consenso?
Cambian en la cadena actual cada vez que la transacción se ejecuta en un bloque; es solo una cuestión de qué cadena se convierte en la cadena "correcta" y luego las transacciones en esa cadena se consideran transacciones "válidas".
Creo entender. Lo que veo se ve afectado por la información de la cadena que está sincronizada con mi nodo. En otras palabras, eso significa que aunque la transacción era válida antes de que mi nodo se sincronizara, ¿podría ser una transacción no válida si la información de la cadena se sincronizó en mi nodo? ¿Es correcto?
Podría convertirse en una transacción no válida debido a reorganizaciones de la cadena. Su nodo puede estar mirando la cadena "incorrecta". Debería leer un poco más sobre cómo Ethereum alcanza el consenso (documento técnico, por ejemplo): no se trata de "sincronizar" su nodo como tal; su nodo tiene todos los datos correctos hasta que alguna otra cadena se vuelve dominante y luego la cadena de su nodo se vuelve obsoleta.