以太坊Truffle框架搭建一氣呵成無坑版教程

      Truffle框架搭建的教程網上也有好多,但是隨著truffle版本的更新,truffle.js改名truffle-config.js、truffle命令升級、truffle與testrpc埠不一致、瀏覽器錢包外掛等問題,導致原有的教程不再適用,在踩過一個又一個的坑後,打算寫一篇無坑版本,讓廣大初學者可以一氣呵成搭建完環境。
一、安裝Node.js

https://nodejs.org/en/下載安裝包,選擇LTS版本下載。

寫文章時最新版本是8.11.1,安裝後在windows命令cmd視窗,輸入node -v,能顯示node的版本就成功第一步了

二、安裝Truffle

truffle是本地的用來編譯、部署智慧合約的工具。
在windows命令列視窗輸入npm -g install truffle。
沒有報錯資訊就是成功第二步

三、安裝Ethereum TestRPC

命令列視窗輸入npm install -g ethereumjs-testrpc

安裝後再輸入testrpc看是否成功啟動,testrpc預設是監聽8545埠

四 、啟動Dapp

第三步啟動的testrpc視窗不要關閉,新建立開發目錄helloworld,開啟一個新的命令視窗。進入到helloword目錄。
truffle 初始化
輸入
truffle unbox webpack執行完後,再輸入dir看本地有沒有下載到新的檔案。網上很多老的教程是truffle init webpack命令,但是truffle新的版本不支援,只能是truffle unbox webpack
 

編譯合約
輸入命令truffle compile出現下面的錯誤,這也是舊的教程的一個坑。

把helloworld目錄的truffle.js改名為truffle-config.js,再執行命令。

部署合約

部署智慧合約成功的前提就是testrpc已經在執行,輸入命令truffle migrate。

啟動服務

輸入命令npm run dev.

開啟瀏覽器,輸入 http://localhost:8080/,出現“Couldn’t get any accounts! Make sure yourEthereum client is configured correctly.”

原因是chrome瀏覽器裡安裝MetaMask-以太坊錢包外掛,把外掛移除掉或者使用其他瀏覽器。

移除外掛再開啟,提示“There was an error fetching your accounts.”。

F12開啟開發者工具,js程式碼是請求testrpc的9545埠。

請求合約的埠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重新編譯、部署、啟動。

合約呼叫

testrpc控制檯上有十個測試地址,複製一個地址在頁面轉賬。