1. 程式人生 > >windows 以太坊開發框架Truffle環境搭建

windows 以太坊開發框架Truffle環境搭建

truffle框架搭建的教程網上也有好多,但是隨著truffle版本的更新,truffle.js改名truffle-config.js、truffle命令升級、truffle與testrpc埠不一致、瀏覽器錢包外掛等問題,導致原有的教程不再適用。

包括nodejs、truffle、solc、web3js、ganache的環境搭建。

windows8.1 x64

Truffle是一個世界級的開發環境,測試框架,以太坊的資源管理通道,致力於讓以太坊上的開發變得簡單。

Truffle有以下功能:

內建的智慧合約編譯,連結,部署和二進位制檔案的管理。

快速開發下的自動合約測試。

指令碼化的,可擴充套件的部署與釋出框架。

部署到不管多少的公網或私網的網路環境管理功能

使用EthPM&NPM提供的包管理,使用ERC190標準。

與合約直接通訊的直接互動控制檯(寫完合約就可以命令列裡驗證了)。

可配的構建流程,支援緊密整合。

在Truffle環境裡支援執行外部的指令碼。

一、安裝DApp開發環境

1.1 安裝Node.js

我們使用官方長期支援的8.10.0LTS版本,下載64位包裝包。 

下載後直接安裝即可。安裝完畢,開啟一個控制檯視窗,可以使用node了:

C:\Users\Administrator> node -v

v8.10.0

1.2 安裝節點模擬器

為了快速開發和測試以太坊DApp,我們通常使用以太坊節點模擬器來模擬區塊鏈,最流行的節點模擬器就是Ganache,之前被稱為TeseRPC。

在控制檯執行以下命令:

C:\Users\Administrator> npm install -g ganache-cli

安裝完畢後,執行命令驗證安裝成功:

C:\Users\Administrator>ganache-cli --version

Ganache CLI v6.1.6 (ganache-core: 2.1.5)

要了解ganache命令列的詳細用法,可以檢視

以太坊ganache CLI命令列引數詳解

如果你是Win10,也可以下載預編譯的Win10軟體包,安裝圖形版的ganache。

1.3 安裝solidity編譯器

solidity是開發以太坊智慧合約的程式語言,不熟悉的話可以檢視以太坊solidity開發語言簡介

C:\Users\Administrator> npm install -g solc

安裝完畢後,執行命令驗證安裝成功

C:\Users\Administrator > solcjs -version

0.40.2+commit.3155dd80.Emscripten.clang

1.4安裝web3

C:\Users\Administrator> npm install -g [email protected]

安裝驗證:

C:\Users\Administrator>node -p 'require("web3")'

require(web3)

1.5安裝truffle框架

執行以下命令安裝truffle開發框架:

C:\Users\Administrator> npm install -g truffle

驗證安裝:

C:\Users\Administrator> truffle version

Truffle v4.1.13 (core 4.1.13)

1.6安裝webpack

執行以下命令安裝webpack:

C:\Users\Administrator > npm install -g [email protected]

驗證安裝:

C:\Users\Administrator > webpack -v

3.11.0

二、構建示例專案 (往下坑比較多,搭建成功否,都得隨緣,所以不建議windows去學習區塊鏈)

2.1 新建DApp專案

執行以下命令建立專案目錄並進入該目錄

d:\work\geth> mkdir hello

d:\work\geth > cd hello

然後用webpack模版初始化專案骨架結構:新版本truffle引入了box的概念,所有的示例程式碼都以box的形式提供。

老版本的是truffle init,預設會生成一個MetaCoin的demo,可以從這個demo中學習truffle的架構。

d:\work\geth\hello> truffle unbox webpack

Downloading…

Unpacking…

Setting up…

Unbox successful. Sweet!

注意:此處在setup處比較慢,需要從網上下載東西,持續10-20分鐘左右。

2.2 修改truffle配置

如果你使用圖形版的ganache,不需要修改truffle.js配置檔案。否則,需要將truffle.js修改為truffle-config.js中,修改galance:為development:,修改port為8545,因為ganache-cli在8545埠監聽:

注意:老的教程是truffle.js。由於版本升級需要變更為truffle-config.js。如果是在git的bash shell下仍然是可用truffle.js的。

2.3 啟動節點

執行以下命令啟動節點模擬器,以便部署合約並執行交易:

d:\work\geth\hello> ganache-cli

成功之後如圖:會給自動建立10個賬戶,必須先啟動這個之後才能合約的編譯與部署。否則部署不成功。

或者直接啟動9545埠的truffle自帶的以太坊環境。(需要在專案路徑裡啟動,集d:\work\geth\hello)

2.4 安裝專案依賴的NPM包

執行以下命令安裝nmp包:

d:\work\geth\hello> npm install

2.5 編譯合約

執行以下命令編譯專案合約:

d:\work\geth\hello> truffle compile

注意:這個命令必須在hello專案下執行。不返回錯誤即是成功

2.6 部署合約:

執行以下命令來部署合約:

d:\work\geth\hello> truffle migrate

2.7 啟動DApp

執行以下命令來啟動DApp:

d:\work\geth\hello> npm run dev

啟動比較慢,上圖給出了瀏覽器地址 http://locaohost:8081/,一致等到最後才提示成功,如下圖:

如果你希望從別的機器也可以訪問你的DApp應用,修改一下package.json:

{

  scripts:{

    "dev": "webpack-dev-server –-host 0.0.0.0"

  }

}

執行成功

請求合約的埠9545和testrpc監聽埠8545不一致,只要把兩者改成一致就行,解決辦法以下二選一即可 :

1. 修改合約呼叫程式碼。helloworld\app\javascripts\app.js,把window.web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:9545"));的埠號9545改為8545

 

2.    testrpc監聽埠改為8545。

啟動testrpc時用命令列 testrpc –p 9545。

truffle部署合約的埠也改為9545,在truffle-config.js把port引數改為9545。

執行truffle compile、truffle migrate、npm run dev重新編譯、部署、啟動。

二、如果要讓別的機器訪問Dapp應用

在package.json修改

 儲存後,重新啟動Dapp 把防火牆關閉

在另一臺機器的瀏覽器開啟

訪問成功

=============以上採用的是ganache-cli 預設8545埠生產的以太坊私鏈========

也可以採用truffle develop自帶的預設9545埠的以太坊私鏈

執行 truffle develop,會生成十個測試賬號,同時進入truffle控制檯(可以在此控制檯,編譯和部署,執行合約)

編譯合約,使用:compile,migrate

後面操作同上。

truffle 指令指南

可以使用 geth attach http://127.0.0.1:9545 連線evm. 

寫到這裡就基本結束了,總結一下:

truffle 是目前來說比較受歡迎的一個框架,掌握它會讓開發以太坊DAPP變得方便。雖然現在很多教程都是truffle和Ethereumjs-testrpc配合,但truffle官方推薦的是Ganache,所以建議用Ganache,文件會新一點。無論是Ethereumjs-testrpc、Ganache還是Truffle Develop,都是基於本地測試的以太坊客戶端,只需要選一個就好,當然為了體驗測試也可以跟我一樣每個都試試。

技術貼的更新迭代很快,有些命令可能在文章釋出之後就被更新了,最好還是查詢相關文件用最新的命令。

MetaCoin的demo網頁只提供了傳送MetaCoin,自己嘗試在網頁上新增查詢餘額的功能,來更深的瞭解網頁與合約的呼叫。