以太坊智慧合約開發例項(二)開發環境搭建

買賣虛擬貨幣

為了方便讀者閱讀,開發環境搭建這一章節會以Windows、Ubuntu和MacOS三節的形式進行講解。使用特定系統的讀者可以直接跳到相應的章節開始閱讀、操作,不會因為跳過某種系統的開發環境搭建產生不連貫感。

2.1 Windows開發環境搭建

在搭建開發環境之前,建議使用“適用於 Linux 的 Windows 子系統”或者 VirtualBox 來建立 Ubuntu 系統來進行操作。相比 Windows ,Ubuntu 更適合使用做區塊鏈的開發。不過筆者使用的 Windows 10 專業版,命令也以 Windows 平臺上為主,在教程中如果出現不同平臺命令不同的情況,我會予以說明。

安裝 nodejs

nodejs也有專門的 Windows 安裝包,可以到 nodejs 的官方網站 https://nodejs.org/zh-cn/ 上下載。筆者寫作時 Windows (x64) 的長期支援版為 10.15.1,筆者使用的就是這個版本。一般情況下,nodejs的版本不同,不會影響後續安裝和使用。直接下載程式,安裝,一路下一步即可。

安裝完成後可以開啟命令列工具(CMD或PowerShell)輸入node -vnpm -v檢視版本號,筆者的nodejs版本為10.15.1,npm的版本為6.4.1。

安裝 Ganache

Ganache是以太坊節點模擬器,可以方便開發者快速進行以太坊DApp的開發與測試。安裝Ganache之後,會在你的電腦上執行一個以太坊的私鏈,自動建立10個賬號,每個賬號中有100.00 ETH

Ganache有專門針對 Windows 系統的圖形化的應用程式,可以在官方網站 https://truffleframework.com/ganache 中下載到。由於常年使用 Windows 所以比較習慣圖形化的介面,所以本文後面都以圖形化的介面使用 Ganache。

開啟 Ganache 官方網站,下載 Windows 安裝包,基本一路下一步就可以完成安裝,安裝後執行介面如下:

安裝 Truffle

Truffle是針對基於以太坊的Solidity語言的一套開發框架。

這麼說可能大家沒有什麼直觀印象,給大家介紹一下Truffle的功能,大家一下子就明白了。以我的理解(本文中主要使用的功能):

  • Truffle將Solidity程式設計中很多細節都封裝起來,讓使用者可以專注於智慧合約的開發,而不用關注其他細節。
  • Truffle將很多通用的例項封裝起來,利於使用者引用,修改。

關於Truffle更多的細節可以參考《Truffle - 以太坊Solidity程式語言開發框架》,本文不作詳細介紹。

安裝Truffle需要透過命令列工具(CMD 或 PowerShell),在命令列工具中執行以下命令:

npm install -g truffle

安裝完成後可以透過truffle version來檢視版本號。筆者安裝完成後truffle的版本為:

Truffle v5.0.7 (core: 5.0.7)
Solidity v0.5.0 (solc-js)
Node v8.10.0

是的,你沒有看錯,Solidity也一起安裝了,這是由於Truffle基於Solidity。

這樣,Windows系統的開發環境就搭建好了。當然,也有讀者想知道我用的什麼編輯器編輯程式碼。實際上,你即使使用記事本,也是可以編輯程式碼的。但我選用的是 Visual Studio Coder,安裝了 ESLint 和 solidity 外掛。大家也可以選用自己喜歡的編輯器。

2.2 Ubuntu 開發環境搭建

本文以Ubuntu 18.04 LTS為基礎環境。在開始前,先執行sudo apt update更新系統元件。系統基本沒有安裝任何新軟體,系統自己帶的Python的版本為Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)。

安裝nodejs

nodejs是後續安裝的基礎之一,必須安裝。可以透過以下命令安裝nodejs和npm:

sudo apt install nodejs npm

由於國內網路問題,此步驟可能需要一點時間。

安裝之後可以透過node -vnpm -v來檢視nodejs和npm的版本,筆者安裝之後nodejs版本為8.10.0,npm版本為3.5.2。

安裝Ganache

Ganache是以太坊節點模擬器,可以方便開發者快速進行以太坊DApp的開發與測試。安裝Ganache之後,會在你的電腦上執行一個以太坊的私鏈,自動建立10個賬號,每個賬號中有100.00 ETH。

在 Ubuntu 系統中,也有還圖形化的介面的 Ganache,可以在其實官方網站 https://truffleframework.com/ganache 中下載安裝。安裝過程和一般的程式安裝沒有任何區別,介面和 Windows 也是一樣的。

在Ubuntu中,你可能也想嘗試一下命令列。可以透過以下命令安裝Ganache:

sudo npm install -g ganache-cli

注:

  1. ganache-cli是Ganache的一個命令列工具,在Ubuntu中使用特別方便。
  2. 安裝Ganache後,在後面的開發時,所有的智慧合約都不會在以太坊上實際部署。具體如何部署,會在後文第6章專案釋出中具體闡述。

透過命令ganache-cli命令就可以檢視安裝好的Ganache CLI的具體資訊,筆者安裝的版本為Ganache CLI v6.4.1 (ganache-core: 2.5.3)。

安裝Truffle

Truffle是針對基於以太坊的Solidity語言的一套開發框架。

這麼說可能大家沒有什麼直觀印象,給大家介紹一下Truffle的功能,大家一下子就明白了。以我的理解(本文中主要使用的功能):

  • Truffle將Solidity程式設計中很多細節都封裝起來,讓使用者可以專注於智慧合約的開發,而不用關注其他細節。
  • Truffle將很多通用的例項封裝起來,利於使用者引用,修改。

關於Truffle更多的細節可以參考《Truffle - 以太坊Solidity程式語言開發框架》,本文不作詳細介紹。

安裝Truffle可以透過以下命令:

sudo npm install -g truffle

安裝完成後可以透過truffle version來檢視版本號。筆者安裝完成後truffle的版本為:

Truffle v5.0.7 (core: 5.0.7)
Solidity v0.5.0 (solc-js)
Node v8.10.0

是的,你沒有看錯,Solidity也一起安裝了,這是由於Truffle基於Solidity。

2.3 MacOS開發環境搭建

筆者使用的是最新版的MacOS系統(macOS Mojave 10.14.1),在開始之前,基本沒有安裝任何的與以太坊相關的軟體。由於macOS和 Ubuntu 比較像,所以大家可以看到,下面的安裝與上一節在 Ubuntu 中開發環境的搭建比較像。

安裝 nodejs

nodejs也有專門的 macOS 安裝包,可以到 nodejs 的官方網站 https://nodejs.org/zh-cn/ 上下載。筆者寫作時 macOS (x64) 的長期支援版為 10.15.3,筆者使用的就是這個版本。一般情況下,nodejs的版本不同,不會影響後續安裝和使用。直接下載程式,安裝,一路下一步即可。

安裝完成後可以開啟命令列工具(CMD或PowerShell)輸入node -vnpm -v檢視版本號,筆者的nodejs版本為10.15.3,npm的版本為6.4.1。

安裝 Ganache

Ganache是以太坊節點模擬器,可以方便開發者快速進行以太坊DApp的開發與測試。安裝Ganache之後,會在你的電腦上執行一個以太坊的私鏈,自動建立10個賬號,每個賬號中有100.00 ETH。

Ganache有專門針對 macOS 系統的圖形化的應用程式,可以在官方網站 https://truffleframework.com/ganache 中下載到。由於常年使用 Windows 所以比較習慣圖形化的介面,所以本文後面都以圖形化的介面使用 Ganache。如果你常年使用 macOS 應該也會對圖形介面比較熟悉,那麼後面的教程對你來說也會比較順手。

開啟 Ganache 官方網站,下載 macOS 安裝包,基本一路下一步就可以完成安裝,安裝後執行介面如下:

安裝 Truffle

Truffle是針對基於以太坊的Solidity語言的一套開發框架。

這麼說可能大家沒有什麼直觀印象,給大家介紹一下Truffle的功能,大家一下子就明白了。以我的理解(本文中主要使用的功能):

  • Truffle將Solidity程式設計中很多細節都封裝起來,讓使用者可以專注於智慧合約的開發,而不用關注其他細節。
  • Truffle將很多通用的例項封裝起來,利於使用者引用,修改。

關於Truffle更多的細節可以參考《Truffle - 以太坊Solidity程式語言開發框架》,本文不作詳細介紹。

安裝Truffle需要透過命令列工具(CMD 或 PowerShell),在命令列工具中執行以下命令:

npm install -g truffle

安裝完成後可以透過truffle version來檢視版本號。筆者安裝完成後truffle的版本為:

Truffle v5.0.7 (core: 5.0.7)
Solidity v0.5.0 (solc-js)
Node v8.10.0

是的,你沒有看錯,Solidity也一起安裝了,這是由於Truffle基於Solidity。

這樣,Windows系統的開發環境就搭建好了。當然,也有讀者想知道我用的什麼編輯器編輯程式碼。實際上,你即使使用記事本,也是可以編輯程式碼的。但我選用的是 Visual Studio Coder,安裝了 ESLint 和 solidity 外掛。大家也可以選用自己喜歡的編輯器。

2.4 常見問題

使用“適用於 Linux 的 Windows 子系統”相對於 VirtualBox/VMware 有什麼優勢?

相對於 VirtualBox/VMware 來說,“適用於 Linux 的 Windows 子系統”佔用硬碟空間少、佔用系統記憶體少、速度快等特點。但穩定性、完整性差。

由於很多元件在 Windows 安裝並不方便,所以本書在寫作過程中實際上使用的主要是在 Windows 系統下安裝了 VMware ,然後在 VMware 上安裝了 Ubuntu 系統進行開發的。

所以,“適用於 Linux 的 Windows 子系統”一般用於開發環境。實際生產環境請使用 VirtualBox/VMware 或者直接在電腦上安裝 Ubuntu。

初學者應該從 Truffle 入門還是從頭學起?

從前方的開發環境配置大家就能看出我是支付從 Truffle 開始的。

因為我認為一開始掌握大量的細節會使學習成本大大增加。我更傾向於拋開細節,先把程式碼跑起來。然後從專案中一點一點的瞭解各種細節。這樣非有利於開發者快速入門。

但從 Truffle 開始也有很大弊端,那就是開發者有可能基礎不牢,可能開發一段時間後需要從新開始學習Solidity的基礎。

使用apt及npm安裝元件時,國內下載速度非常慢怎麼辦?

這是一個國內開發者經常遇到的問題,國內已經有很不錯的解決方案:對於教育網使用者,建議大家使用清華大學的源替換原有的源,請參照Ubuntu | 映象站使用幫助 | 清華大學開源軟體映象站 | Tsinghua Open Source Mirror,其他使用者建議使用阿里雲的源,請參照阿里巴巴開源映象站(點選 Ubuntu 後面的幫助按鈕獲取幫助)

在進行開發時使用哪種程式碼編輯器?

前面已經說過了,其實使用哪一種編輯器並不重要,但如果有程式碼高亮顯示及程式碼提示肯定會提高我們和程式設計效率。所以我選用了自己用著比較順手的 Visual Studio Coder,大家可以根據自己的喜好選擇 IDE 。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;