Web3js
“鏈重組”時智能合約有何變化?
最近我了解了“鏈重組”。
“鏈重組”時智能合約有何變化?
例如,
contract Contract{ event LOG_Increase(); uint sum = 0; function Increase() public { sum++; emit LOG_Increase(); } }
當呼叫從 0
Increase
遞增的solidity 函式sum
時,如果包含該交易的區塊因“鏈重組”而被丟棄,是否sum
變為1,然後再次變為0?還是0沒有變化?那麼 LOG_Increase 事件呢?我英語說得不好,我得到了翻譯的幫助。感謝您的理解。
需要明確的是:鏈重組是 Geth 中使用的一個術語。這意味著當不同的(分叉)鏈被接受為規範鏈時的事件 - 因此區塊鏈達成共識並且一些已經開采的塊被丟棄。
因此,如果鏈重組,“失去”塊中的所有交易都將有效失去。就像交易從未發生過一樣。所以,在你的情況下,
sum
變得0
和event
永遠不會被解僱。但是,這並不意味著同一交易可能不會包含在不同的區塊中並不會在不同的區塊中執行——可能是在作為新規範鏈一部分的區塊中。因此,您的交易可能已經在一個被認為“有效”的區塊中執行。
您可以在這裡閱讀更多關於鏈重組的資訊(及其連結):https ://ethereum.stackexchange.com/a/19393/31933