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控制台上有十個測試地址,複製一個地址在頁面轉賬。