跳至主要內容

部署你的第一個智能合約

智能合約
remix
solidity
部署
初階
jdourlens
2020年4月3日
6 分鐘閱讀

我想你和我們一樣,對於在以太坊區塊鏈上部署並與你的第一個智能合約互動感到非常興奮。

別擔心,因為這是我們的第一個智能合約,我們將把它部署在本機測試網路上,這樣你就可以免費部署並盡情測試。

撰寫我們的合約

第一步是造訪 Remix (opens in a new tab) 並建立一個新檔案。在 Remix 介面的左上方新增一個檔案,並輸入你想要的檔案名稱。

Adding a new file in the Remix interface

在新檔案中,我們將貼上以下程式碼。

如果你熟悉程式設計,你可以輕易猜出這個程式的作用。以下是逐行說明:

  • 第 4 行:我們定義了一個名為 Counter 的合約。
  • 第 7 行:我們的合約儲存了一個名為 count 的無號整數,初始值為 0。
  • 第 10 行:第一個函式將修改合約的狀態,並 increment() 我們的變數 count
  • 第 15 行:第二個函式只是一個 getter(獲取器),以便能夠在智能合約外部讀取 count 變數的值。請注意,由於我們將 count 變數定義為 public(公開),這其實是不必要的,但在此作為範例展示。

這就是我們第一個簡單智能合約的全部內容。如你所知,它看起來就像 Java 或 C++ 等物件導向程式設計 (OOP) 語言中的類別 (class)。現在是時候來測試我們的合約了。

部署我們的合約

既然我們已經寫好了第一個智能合約,現在我們將把它部署到區塊鏈上,以便能夠與它互動。

在區塊鏈上部署智能合約實際上只是發送一筆包含已編譯智能合約程式碼的交易,而不指定任何接收者。

我們首先點擊左側的編譯圖示來編譯合約

The compile icon in the Remix toolbar

然後點擊編譯 (compile) 按鈕:

The compile button in the Remix solidity compiler

你可以選擇勾選「Auto compile(自動編譯)」選項,這樣當你在文字編輯器中儲存內容時,合約就會自動編譯。

接著導覽至「deploy and run transactions(部署與執行交易)」畫面:

The deploy icon in the Remix toolbar

進入「deploy and run transactions」畫面後,再次確認你的合約名稱有出現,然後點擊 Deploy(部署)。正如你在頁面頂部所見,目前的環境是「JavaScript VM」,這意味著我們將在一個本機測試區塊鏈上部署並與我們的智能合約互動,以便能夠更快速地測試且無需支付任何手續費。

The deploy button in the Remix solidity compiler

點擊「Deploy」按鈕後,你會看到你的合約出現在底部。點擊左側的箭頭將其展開,我們就能看到合約的內容。這包含了我們的變數 counter、我們的 increment() 函式以及 getter getCounter()

如果你點擊 countgetCount 按鈕,它實際上會擷取合約中 count 變數的內容並顯示出來。由於我們尚未呼叫 increment 函式,它應該會顯示 0。

The function button in the Remix solidity compiler

現在讓我們點擊按鈕來呼叫 increment 函式。你會看到已執行交易的日誌出現在視窗底部。你會發現,當你按下按鈕來擷取資料時,日誌與按下 increment 按鈕時是不同的。這是因為在區塊鏈上讀取資料不需要任何交易(寫入)或手續費。因為只有修改區塊鏈的狀態才需要發起交易:

A log of transactions

按下 increment(遞增)按鈕會產生一筆交易來呼叫我們的 increment() 函式,之後如果我們再次點擊 count 或 getCount 按鈕,我們將讀取到智能合約最新更新的狀態,此時 count 變數的值將大於 0。

Newly updated state of the smart contract

在下一個教學中,我們將介紹如何為你的智能合約加入事件。記錄事件日誌是除錯智能合約並了解呼叫函式時發生了什麼事的便利方法。