Dapps

如果合約儲存在區塊鏈上,我如何更改合約的狀態

  • March 20, 2020

這是否與儲存在那裡的數據是不可變的區塊鏈的整個想法相矛盾。如果有人可以更改儲存在合約狀態中的數據,那麼它與任何其他數據庫有什麼不同。

合約有一個數據儲存空間。雖然程式碼可能確實是不可變的,但不可變的過程可能包括設置和更新數據。正如@goodvibration 所觀察到的,在新事務更改後舊狀態仍然存在。

contract State {

 uint public x; // state variable. inspect with State.x()

 function setX(uint newX) public {
   x = newX; // overwrite old value
 }
}

這個人為的小例子讓你可以x通過簽署交易並將交易發送到合約的函式來改變 的價值setX(uint)。該交易是有序變更歷史的一部分,它以特定的區塊高度執行。

我們通常對最新/最新的區塊感興趣,但可以訪問x()任何區塊高度並發現它當時是什麼。總是可以恢復解釋為什麼它具有特定價值的交易歷史。這是_因為_來自地址的交易_將其設置為在塊_,即它是可審計的。

希望能幫助到你。

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