truffle是本地的用來編譯、部署智能合約的工具,而testrpc不同於geth,geth是真正的以太坊環境,testrpc是在本地使用記憶體類比的一個以太坊環境,對於開發調試來說,更為方便快捷,當你的合約在testrpc中測試通過後,再可以部署到geth中去。所以可以說truffle和testrpc就是兩大殺器。
1.安裝node.js
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - #若未安裝curl,通過sudo apt install curl安裝#必須root下執行,預設root使用者未設定密碼不可用,通過sudo passwd設定root使用者密碼; (apt: advance package tool)apt-get install -y nodejs #查看安裝成功後的版本nodejs -v #v6.13.1 #安裝nodejs,npm會一併安裝; (npm: nodejs package management)npm -version #3.10.10
2.安裝truffle
sudo -E npm install truffle -gtruffle version #truffle@4.1.3,該版本有問題,後面提供解決方案
3.安裝testrpc
sudo -E npm install ethereumjs-testrpc -g testrpc -v
4.部署並測試truffle預設項目
truffle inittruffle compile
部署合約之前: (1)修改項目目錄下truffle.js檔案,內容如下:
module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*" // 匹配任何network id } }};
(2)啟動rpctest
以上內容修改後才能部署合約,啟動服務:
truffle migratetruffle serve
服務啟動時報錯:TypeError: fsevents is not a constructor
解決方案,降低版本到 truffle@3.4.5:
npm uninstall -g truffle npm install -g truffle@3.4.5 #之前安裝的truffle@4.1.3版本,降低到truffle@3.4.5mkdir truffle-webpack cd truffle-webpack truffle init webpack truffle compile npm run dev #替代truffle serve
通過以上方案還是會報錯:
終極解決方案:
npm uninstall -g trufflenpm config set registry https://registry.npm.taobao.orgsudo -E npm install truffle@2.0.8 -g
參考: http://blog.csdn.net/vinsuan1993/article/details/77427537