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 sum
von 0 inkrementiert wird, wenn der Block, der die Transaktion enthält, aufgrund einer 'Kettenreorganisation' verworfen wird, wird sum
1 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.
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 sum
wird 0
und das event
wird 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
Fehlercode
Lauri Peltonen
Fehlercode
Lauri Peltonen