Transactions

乙太坊中是否有任何類型的鎖定協議?

  • December 18, 2018

乙太坊中是否有任何類型的鎖定協議,例如兩個事務可以同時更新狀態變數?,如果是,那麼您將如何避免這種情況?

部署了智能合約 XYZ,兩個人想要更新 XYZ 中的一個變數,所以他們將交易推送到交易池中。現在,如果兩個事務同時執行會怎樣。假設事務 1 想給變數加 5,事務 2 想給變數加 10,在快樂路徑中,xyz 狀態變數中的值必須是 15(Trx 1 + trx 2),但是如果兩者都讀取同時值,其中一個添加一個塊,然後添加 5(Trx 1) 或添加 10(Trx 2)。

從智能合約的角度來看,交易永遠不會同時執行。它們按照它們在開採區塊中出現的順序執行。您不必使用互斥鎖來防止同時執行兩個或多個事務,因為預設情況下不會發生這種情況。

您確實必須考慮是否希望您的智能合約功能可重入,但這是一個不同的問題。

每次交易後,您的智能合約應始終處於有效狀態。您永遠不能依賴一個呼叫者能夠在另一個呼叫者之前執行事務。

引用自:https://ethereum.stackexchange.com/questions/64238