關於如何安裝testrpc、truffle,我假設大家都已經熟門熟路了,因為有大量的區塊鏈的教學篇有詳細介紹如何在單機上同時安裝部署eth、truffle,並且在本地進行的合約測試。
這裡,我們嘗試做點更有意思的工作,把整個測試環境從單點機器變成鬆散的結構,從而探究truffle的工作原理。
接下來,我們陸續做這麼兩個實驗:
實驗一:將testrpc部署到eth-host主機上,並對外啟動eth測試網路服務:http://eth-host:8545
實驗二:以webpack為例在tru-host主機(truffle)上部署智能合約,並對外提供轉賬服務:http://192.168.3.103:8080
完成上述工作後,其實估計大家對於truffle會有更清晰的認識。
今天先完成實驗環境的搭建工作。
1. 部署eth-host虛機
主機功能:搭建以太坊虛機,為智能合約應用伺服器提供賬本、記賬等基礎的以太坊測試網路服務。
(1) 虛機與網路:在vmware上使用最簡版的centos7安裝虛機即可,安裝完成後,為方便區域網路訪問,將虛機網路設定為橋接方式。
虛機準備可參考:http://blog.csdn.net/xc70203/article/details/77983488
該步驟完成後,主機配置為:
IPAddr:192.168.3.102Gateway: 192.168.3.1dns1: 8.8.8.8dns2: 114.114.114.114
(2) 配置主機host:將主機的host名稱定義為eth-host,方法可參考:http://blog.csdn.net/huangyanlong/article/details/45476569
為方便後續主機訪問,在/etc/hosts檔案中增加:
#當前本機名為eth-hostIP eth-host# 準備部署的tru-host主機192.168.3.103 tru-host
(3) 部署ethereumjs-testrpc,執行:
npm install -g ethereumjs-testrpc
安裝好後,直接執行:
testrpc
即可啟動帶有初始化10個賬本的eth測試網路服務。
(4) 後續如果想使用更加靈活的測試網路,可以直接部署geth,具體方法詳見:http://blog.csdn.net/xc70203/article/details/77988473
安裝好geth後,啟動方式:
geth --rpc --dev console 2>> geth.log
對於eth-host主機而言,部署testrpc對於初學者而言是最佳選擇,它簡化了建立rpc服務、accounts、unlock、miner相關的一系列的操作。等後續講到geth的時候,這些操作都是為建立測試網路必不可少的內容。所以,大家先完成(1)~(3)即可。
2. 部署tru-host虛機
主機功能:安裝部署DAPP智能合約應用伺服器,為web服務提供智能合約的執行服務。
(1) 虛機與網路:在vmware上使用帶GNOME視窗的centos7版本安裝虛機,安裝完成後,將虛機網路設定為橋接模式。配置過程可參考上文不在贅述。
注意:
強烈建議在tru-host上部署帶有案頭的centos7,這個會在合約測試中使用瀏覽器帶來極大便利。
配置完成後,網路參數如下:
IPAddr:192.168.3.102Gateway: 192.168.3.1dns1: 8.8.8.8dns2: 114.114.114.114
(2) 配置主機host:
#當前本機名為tru-hostIP tru-host# 已部署的eth-host主機192.168.3.102 eth-host
(3) 部署truffle項目:
安裝truffle。之前不少網站反饋說當前最新truffle在執行truffle serve時會失敗,建議大家降級安裝truffle@3.2.1。但經我的測試發現最新版本的truffle運行webpack時並未出現bug(但執行truffle serve會報錯)。所以大家可以放心的安裝最新版本的truffle來摸索。
安裝方式如下:
npm install -g truffle
安裝好後,在root目錄下建立工作路徑t01,並初始化webpack項目:
cd && mkdir t01 && cd t01truffle unbox webpack
執行完之後,應該可以看到項目目錄結構如下所示。
做完上述工作後,實驗的準備工作就完成了。