Dapps
如果合約儲存在區塊鏈上,我如何更改合約的狀態
這是否與儲存在那裡的數據是不可變的區塊鏈的整個想法相矛盾。如果有人可以更改儲存在合約狀態中的數據,那麼它與任何其他數據庫有什麼不同。
合約有一個數據儲存空間。雖然程式碼可能確實是不可變的,但不可變的過程可能包括設置和更新數據。正如@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()
任何區塊高度並發現它當時是什麼。總是可以恢復解釋為什麼它具有特定價值的交易歷史。這是_
因為_
來自地址的交易_
將其設置為在塊_
,即它是可審計的。希望能幫助到你。