Was ändert sich bei Smart Contracts bei den „Kettenreorganisationen“?

Kürzlich habe ich von der „Kettenreorganisation“ erfahren.

Was ändert sich bei Smart Contracts bei den „Kettenreorganisationen“?

Zum Beispiel,

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

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

Wenn die Solidity-Funktion aufgerufen wird Increase, die sumvon 0 inkrementiert wird, wenn der Block, der die Transaktion enthält, aufgrund einer 'Kettenreorganisation' verworfen wird, wird sum1 und dann wieder 0? Oder gibt es keine Änderung in 0? Und was ist mit LOG_Increase-Ereignissen?

Ich kann nicht gut Englisch sprechen und bekam Hilfe von einem Übersetzer. Danke für Ihr Verständnis.

Antworten (1)

Nur um das klarzustellen: Kettenreorganisation ist ein Begriff, der in Geth verwendet wird. Es bedeutet das Ereignis, wenn eine andere (Verzweigung der) Kette als kanonische Kette akzeptiert wird – so dass die Blockchain einen Konsens erreicht und einige bereits abgebaute Blöcke verworfen werden.

Wenn sich die Kette also neu organisiert, gehen alle Transaktionen in den „verlorenen“ Blöcken effektiv verloren. Es ist, als hätte die Transaktion nie stattgefunden. In Ihrem Fall wird also das sumwird 0und das eventwird nie gefeuert.

Dies bedeutet jedoch nicht , dass dieselbe Transaktion möglicherweise nicht in einem anderen Block enthalten und ausgeführt wird – vielleicht in einem Block, der Teil der neuen kanonischen Kette ist. Ihre Transaktion kann also bereits in einem Block ausgeführt werden, der als "gültig" gilt.

Mehr über Kettenreorganisationen können Sie zum Beispiel hier (und dessen Link) lesen: https://ethereum.stackexchange.com/a/19393/31933

Vielen Dank für Ihre Antwort! Sie meinen, dass sich die Smart-Contact-Variable ändert und das Ereignis nach einem Konsens ausgelöst wird?
Sie ändern sich in der aktuellen Kette immer dann, wenn die Transaktion in einem Block ausgeführt wird - es ist nur eine Frage, welche Kette zur "richtigen" Kette wird, und dann werden Transaktionen in dieser Kette als "gültige" Transaktionen betrachtet.
Ich denke ich verstehe. Was ich sehe, wird von den Informationen der Kette beeinflusst, die mit meinem Knoten synchronisiert werden. Mit anderen Worten, das heißt, obwohl die Transaktion vor der Synchronisierung meines Knotens gültig war, könnte es sich um eine ungültige Transaktion handeln, wenn die Ketteninformationen auf meinem Knoten synchronisiert wurden? Ist es richtig?
Es könnte aufgrund von Kettenreorganisationen zu einer ungültigen Transaktion werden . Ihr Knoten sieht möglicherweise die "falsche" Kette an. Sie sollten etwas mehr darüber lesen, wie Ethereum einen Konsens erreicht (z. B. Whitepaper) – es geht nicht darum, Ihren Knoten als solchen zu „synchronisieren“ – Ihr Knoten hat alle richtigen Daten, bis eine andere Kette dominant wird und dann die Kette Ihres Knotens veraltet ist.