待字閨中開發(fā)了一門區(qū)塊鏈方面的課程:《深入淺出ETH原理與智能合約開發(fā)》钠绍,馬良老師講授。此簡書文集記錄我的學(xué)習(xí)筆記吞获。
課程共8節(jié)課。其中谚鄙,前四課講ETH原理衫哥,后四課講智能合約。
第六課分為三部分:
- Solidity語法之數(shù)組
- Solidity語法之合約
- Truffle簡介與使用
這篇文章是第六課第三部分的學(xué)習(xí)筆記:Truffle簡介與使用襟锐。
這節(jié)課主要講解了 Truffle 的技術(shù)特性,并演示了 Truffle 的安裝和一個小例子膛锭。
1粮坞、Truffle 簡介
前面介紹的 Remix 作為學(xué)習(xí)工具來用是比較好的,但是不能滿足生產(chǎn)環(huán)境初狰。因為 Remix 不支持 web 前端莫杈、自動化程度不是很高,不方便進行自動化測試奢入。實際工作中用到的是Truffle框架筝闹。
1.1 技術(shù)特性
- Consensys 出品,智能合約開發(fā)測試框架
- 內(nèi)置的編譯 / 鏈接 / 部署
- 快速開發(fā)自動合約測試
- 可以部署到 TESTRPC/ 測試網(wǎng)絡(luò) / 主網(wǎng)(TESTRPC現(xiàn)在更名為ganache)
- 直接可與合約通信的交互 Console
- 調(diào)試合約
- 集成了 web / javascript 組件腥光,可以直接運行 App web 前端
1.2 安裝要求
- ubuntu 16.04
- Nodejs LTS 8.11
- ganache-cli 為測試網(wǎng)絡(luò)(速度快关顷,不需要挖礦。)
2武福、Truffle 開發(fā)演示
馬老師把演示的步驟放在了代碼倉庫:lesson_6/truffle_setup.txt 议双。下面是我的操作記錄。
2.1 Truffle 安裝
- 安裝NVM捉片。Truffle 是基于 Node.js 開發(fā)的平痰,使用時需要node的版本在 8.0 以上,管理版本用的工具是Nvm伍纫。安裝命令如下:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.9/install.sh | bash
- 確認各個軟件都已安裝齊宗雇。我這步出了點問題,重啟了一下終端莹规,好了赔蒲。
sudo apt install build-essential python -y
- 退出終端
exit
,使安裝的 nvm 生效。也可以不退出嘹履,使用如下命令腻扇,生成一個子進程。
exec bash
- 安裝 node.js 的長期穩(wěn)定版砾嫉。我安裝之后是8.11.2版幼苛。
nvm install --lts
- 再把 npm 更新一下。更新后版本是6.0
npm install -g npm
- 安裝 Truffle 和 ganache焕刮,另外還要安裝webpack并指定版本4.0 舶沿。我這步安裝了20多分鐘,電腦發(fā)熱的厲害配并。最后安裝成功括荡,Truffle 的版本是4.1.9
npm install -g truffle ganache-cli webpack@4.0.0
2.2 Truffle 實例
- 在工作目錄新建一個文件夾。我的工作目錄是ETHljx溉旋,新建文件夾是hello_world 畸冲。再進入到文件夾。
cd ~/ETHljx
mkdir hello_world
cd hello_world
- 用Truffle 生成一個自帶的例子观腊。這是一個很簡單的例子邑闲,并不是ERC20的代幣,僅作練習(xí)使用梧油。
truffle unbox webpack
- 編譯
truffle compile
- 編譯后可以看到有三個 .sol 文件苫耸。主要是 MetaCoin.sol 文件。查看文件
vim contracts/MetaCoin.sol
查看完代碼后儡陨,在命令模式下按
:q!
退出vim 褪子。
- 使用 tmux 再開一個窗口,啟動ganache測試網(wǎng)絡(luò)(右邊窗口)骗村。
ganache-cli -h 0.0.0.0
上面的命令是老師的嫌褪,用的是兩臺機器,一個遠程服務(wù)器叙身。我的是在同一臺電腦上練習(xí)渔扎,用下面的命令,即不加后面的參數(shù):
ganache-cli
啟動后信轿,可以看到10個賬號晃痴,和對應(yīng)的私鑰。復(fù)制下來一個賬號财忽。端口號8545要記下來倘核。
- 部署合約(左邊窗口)
truffle migrate
修改 truffle.js 改端口號到 8545, ip 到本機對應(yīng)的外部IP(非 127.0.0.1)。注意:前面這句是馬老師的情況(使用兩臺機器)即彪,我用的一臺機器紧唱,所以活尊,IP還得寫127.0.0.1 。(老師的是192.168.1.12)
修改 package.json漏益,第8行的端口號8008 蛹锰。
修改 app/javascript/app.js 修改ip地址和端口號 否則不能正常運行
vim app/javascript/app.js
window.web3 = new Web3(new Web3.providers.HttpProvider("http://192.168.1.12:8545"));//這是老師的,IP和第13步一樣绰疤;端口號改成8545铜犬。
window.web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));//這是我的。
- 啟動
npm run dev
在瀏覽器地址欄輸入
127.0.0.1:8008
轻庆,打開web前端癣猾。可以看到當前有10000個Meta幣余爆。給剛才復(fù)制的賬號轉(zhuǎn)88個幣纷宇,輸入88,粘貼地址蛾方,點擊Send MetaCoin像捶。之后,余額少了88個幣桩砰。
再回到測試網(wǎng)絡(luò)作岖,可以看到,區(qū)塊號增加了1五芝。演示結(jié)束。
Ctrl + Z
:停止左邊的 web 服務(wù)辕万,Ctrl + B
枢步,→
:切換到右邊窗口,Ctrl + C
:停止測試網(wǎng)絡(luò)渐尿。exit
:關(guān)閉一個tmux窗口醉途,退出 tmux,退出默認的終端砖茸,都是這個命令隘擎。
小結(jié)一下,本節(jié)簡要介紹了Truffle的技術(shù)特性凉夯,演示了Truffle的安裝過程货葬,并運行了一個簡單的實例。
不足之處劲够,請批評指正震桶。