本文從「安裝」,「開發」,「編譯和部署合約」,「測試網頁與合約交互」,「從源代碼構建 Docker 容器」等幾個方面向我們介紹瞭如何在 windows 下搭建以太坊測試服務器。
來源 | 紅地龍的博客
作者 | 紅地龍
前言
這是一篇 在 window 下 搭建以太坊 測試服務 的學習筆記
一、安裝
1.首先安裝 NodeJS(Truffle 依賴它):
- 新建 nodejs 的程序根路徑爲
mkdir /app/software/
cd /app/software/
-
下載 打開 http://nodejs.cn/download/ 確認最新包
-
解壓 (解壓後的文件我這邊將名字改爲了 nodejs,這個地方自己隨意,只要在建立軟連接的時候寫正確就可以)
tar -C nodejs -xvf node-v10.8.0-linux-arm64.tar.xz
確認一下 nodejs 下 bin 目錄是否有 node 和 npm 文件
- 建立軟連接,變爲全局
$ ln -s /app/software/nodejs/bin/npm /usr/local/bin/ $ ln -s /app/software/nodejs/bin/node /usr/local/bin/
- 下載後檢查版本
$ node -v
- 配置 npm 源爲國內源(可選,可加快 node 插件下載速度)
$ npm config set registry http://registry.npm.taobao.org
2. Truffle
- 安裝
> npm install -g truffle
安裝過程自動設置軟鏈接
/usr/bin/truffle -> /usr/lib/node_modules/truffle/build/cli.bundled.js
3. 安裝測試環境
測試環境每次啓動 都是一組新的 用戶 , 所有的測試合約都要發佈 , 下面 3 種測試環境 , 你可以選擇三個中任何一個客戶端來跟 truffle 交互 .
需要特別說明的是 :
所有的測試框架每次啓動後 , 都會在內存中重新生成臨時用戶 , 一旦關閉 , 所有用戶以及部署過的合約都會消失 。
1) ethereumjs-testrpc
> npm install -g ethereumjs-testrpc > testrpc #啓動
2) ganache-cli
ganache-cli 是內存測試環境 , 前身就是 testRPC, 命令版 :
> npm install -g ganache-cli > ganache-cli #啓動
window cmd 環境用 truffle.cmd xxxx
linux shell 環境用 truffle xxxx
Compile:truffle.cmd compile
(linux:truffle complie
)
Migrate:truffle.cmd migrate
Test contracts:truffle.cmd test
Run linter:npm run lint
Run dev server:npm run dev
Build for production:npm run build
一個是帶圖形界面的版本,下載地址:
https://github.com/trufflesuite/ganache/releases
3)truffle develop
這個是 truffle 內置的客戶端,跟命令行版本的 Ganache 基本類似。唯一要注意的是在 truffle develop 裏執行 truffle 命令的時候需要省略前面的「truffle」,比如「truffle compile」只需要敲「compile」就可以了。
> truffle develop
二、開發
1. 建項目目錄 , 在目錄下初始化項目框架
> mkdir 目錄名 # 新建目錄 > cd 目錄 #進入目錄
有兩種方法初始化框架 init 或者 unbox 指令格式如下
> truffle init
#在當前目錄下 , 創建一個空項目
> truffle unbox webpack
#在當前目錄下 , 創建示例項目
主要分爲 3 個部分:
1) contracts 目錄中包含 Solidity 合約代碼,整個目錄被編譯,其中 Migrations.sol 是默認的 , 必須的,其他就是你自己寫的合約代碼了。
2) migrations 目錄中包含合約部署腳本 , 整個目錄被編譯,其中 1_initial_migration.js 就是用來部署 Migrations.sol 的,其他的腳本 最好從 2 開始編號 , 會按照順序依次執行。
3) test 目錄中存放的是測試用例的代碼。
三、編譯和部署合約
3.1. 更改 truffle.js 文件配置
module.exports = { networks: { development: { host: \'localhost\', port: \'7545\', network_id: \'*\' // Match any network id } } };
這裏要注意的是:
Ganache 默認運行在 8545 端口
Ethereumjs-testrpc 默認運行在 8545 端口 Truffle Develop
默認運行在 9545 端口
3.2. 編譯合約
truffle 框架裏已經給我們提供了 demo 代碼,我們暫時不用寫新的合約,我們直接用 demo 進行編譯和部署。
輸入命令:> truffle.cmd compile
3.3. 部署合約
部署合約之前,請開啓之前下載的以太坊客戶端:
Ganache:請打開下載的軟件 , 或者在命令行中輸入 > ganache-cli #啓動
Ethereumjs-testrpc: 在終端輸入 > testrpc
命令,以出現測試賬號爲成功,不要關閉,打開新的終端窗口進行下一步。
Truffle Develop:在終端輸入 > truffle develop
命令,以出現測試賬號爲成功,可直接在此窗口進行下一步。
開啓客戶端之後再輸入命令:
> truffle.cmd migrate
四、測試網頁與合約交互
- 在上面的合約部署成功後,我們就可以在服務器中查看效果了。執行
> npm run dev
- 瀏覽器打開 http://localhost:8080/ 可以看到一個 demo 頁面
- 你也可以用 MetaCoin 瀏覽器 插件 連接 http://llocalhost:8545, 如果你用的以太坊可視客戶端 Ganache 或 Truffle Develop 的話, Custom RPC 添加 http://localhost:7545 或 http://localhost:9545
五、從源代碼構建 Docker 容器 :
1.git 下載
> git clone [https://github.com/trufflesuite/ganache-cli.git&&](https://github.com/trufflesuite/ganache-cli.git&&) cd ganache-cli > docker build -t trufflesuite/ganache-cli
- 運行鏡像
> docker run -d -p 8545:8545 trufflesuite/ganache-cli:latest
六、附
雖然現在很多教程都是 truffle 和 Ethereumjs-testrpc 配合,但 truffle 官方推薦的是 Ganache,所以建議用 Ganache,文檔會新一點。
更多精彩內容,關注鏈聞 ChainNews 公衆號(id:chainnewscom),
或者來微博@ 鏈聞 ChainNews 與我們互動!
轉載請註明版權和原文鏈接!
來源鏈接:blog.csdn.net