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命令列的詳細用法,可以檢視
如果你是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去學習區塊鏈)
執行以下命令建立專案目錄並進入該目錄
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,自己嘗試在網頁上新增查詢餘額的功能,來更深的瞭解網頁與合約的呼叫。