部署你的第一個智能合約
我想你和我們一樣興奮,都想在以太坊區塊鏈上部署並與你的第一個智能合約互動。
別擔心,因為這是我們的第一個智能合約,我們會在本地測試網上部署它,所以你部署和盡情操作它都不需要任何費用。
撰寫我們的合約
第一步是訪問 Remix (opens in a new tab) 並建立一個新檔案。 在 Remix 介面的左上角新增一個新檔案,並輸入你想要的檔案名稱。
在新檔案中,我們將貼上以下程式碼:
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // 公開的無正負號整數,用來記錄次數7 uint256 public count = 0;89 // 遞增計數器的函式10 function increment() public {11 count += 1;12 }1314 // 取得計數值的 getter,非必要15 function getCount() public view returns (uint256) {16 return count;17 }1819}顯示全部如果你習慣寫程式,你應該可以輕易猜出這個程式的功能。 以下是逐行說明:
- 第 4 行:我們定義了一個名為
Counter的合約。 - 第 7 行:我們的合約儲存一個名為
count的無正負號整數,初始值為 0。 - 第 10 行:第一個函式會修改合約的狀態,並透過
increment()遞增我們的count變數。 - 第 15 行:第二個函式只是一個 getter,用來從智能合約外部讀取
count變數的值。 請注意,因為我們將count變數定義為 public (公開),所以這不是必要的,只是作為範例展示。
這就是我們第一個簡單的智能合約。 你可能知道,它看起來像 Java 或 C++ 等物件導向程式設計 (OOP) 語言中的類別 (class)。 現在可以來操作我們的合約了。
部署我們的合約
既然我們寫好了第一個智能合約,現在就要將它部署到區塊鏈上,以便進行操作。
在區塊鏈上部署智能合約,實際上只是傳送一筆交易,其中包含已編譯智能合約的程式碼,而無須指定任何接收者。
首先,我們要點擊左側的編譯圖示來編譯合約:
然後點擊編譯按鈕:
你可以選擇「自動編譯」(Auto compile) 選項,這樣每當你在文字編輯器中儲存內容時,合約就會自動編譯。
然後前往「部署及執行交易」(deploy and run transactions) 畫面:
進入「部署及執行交易」畫面後,再次確認你的合約名稱是否出現,然後點擊「部署」(Deploy)。 如你在頁面頂端所見,目前環境是「JavaScript VM」(JavaScript 虛擬機),這代表我們將在一個本地測試鏈上部署我們的智能合約並與之互動,以便能更快地測試,且無須支付任何費用。
點擊「部署」(Deploy) 按鈕後,你會在底部看到你的合約。 點擊左邊的箭頭將它展開,我們便能看到合約的內容。 這就是我們的 count 變數、increment() 函式和 getCounter() getter。
如果你點擊 count 或 getCount 按鈕,它會實際擷取合約的 count 變數內容並顯示出來。 因為我們還沒呼叫 increment 函式,所以它應該會顯示 0。
現在讓我們點擊按鈕來呼叫 increment 函式。 你會在視窗底部看到所執行交易的紀錄。 你會發現,當你按下擷取資料的按鈕時,紀錄會與按下 increment 按鈕時不同。 這是因為在區塊鏈上讀取資料不需要任何交易 (寫入) 或費用。 因為只有修改區塊鏈的狀態才需要進行交易:
按下 increment 按鈕會產生一筆交易來呼叫我們的 increment() 函式,之後如果我們回頭點擊 count 或 getCount 按鈕,我們就會讀取到智能合約已更新的狀態,其中 count 變數的值會大於 0。
在下一篇教學中,我們將介紹如何在你的智能合約中新增事件。 記錄事件是個便利的方法,可以對你的智能合約進行除錯,並了解呼叫函式時發生了什麼事。
頁面最後更新時間: 2024年4月26日







