執行智能合約時,會產生狀態(state)改變,我會在之後更深入介紹以太坊區塊鏈時提到,現在我們先用一個例子讓大家認識一下狀態(state)改變,一樣是簡單儲存的例子,但是我們多加入increment和decrement函數,increment是增加,decrement是減少,那讓我們開始吧!
pragma solidity >=0.4.0 <0.7.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}
function get() public view returns (uint) {
return storedData;
}
function increment(uint n) public {
storedData = storedData + n;
return;
}
function decrement(uint n) public {
storedData = storedData - n;
return;
}
}
執行智能合約時為初始狀態(狀態1),跟前一個例子一樣,我們將值設置為525,狀態變為狀態2。
接下來,增加50得到值575變成狀態3,最後減遞減75得到500,再次轉換到下一個狀態。
智能合約發布在以太坊區塊鏈上,當有人執行合約中的函數時,會修改合約狀態,為什麼修改後區塊鏈中所有人看到的合約狀態是一致的? 我將用下面這個例子說明。
首先,我們把剛建立的智能合約,複製一份,現在我有兩個智能合約,且這兩份合約有相同的地址,現在我將其中一份設置為1000,你會發現兩份智能合約都會得到1000這個值,這就是讓全世界的智能合約都處於一致狀態的方法。
目前我們Solidity的code先講到這裡(未來還有!),接著我們要回到以太坊和智能合約的內容,下一篇我會繼續解釋以太坊區塊鏈和智能合約,那我們明天見~