windows以太坊私有鏈開發環境搭建

若是你不喜歡浪費時間在開發環境的搭建上,可使用匯智網的在線教程:node

1、安裝DApp開發環境

1.1 安裝Node.js

咱們使用官方長期支持的8.10.0LTS版本,點擊這個連接下載32位安裝包,32位安裝包便可用於32位系統,也可用於64位系統。 若是你確認你的系統是64位,也能夠下載64位包裝包。 下載後直接安裝便可。安裝完畢,打開一個控制檯窗口,可使用node了:webpack

C:\Users\hubwiz> node –v
v8.10.0

1.2 安裝Geth

下載64位或32位Geth安裝程序,而後進行安裝。 安裝完畢後打開一個控制檯,執行命令驗證安裝成功:git

C:\Users\hubwiz> geth version
Geth
Version: 1.8.3-stable

1.3 安裝solidity編譯器

solidity是開發以太坊智能合約的編程語言,不熟悉的話能夠查看以太坊solidity開發語言簡介web

C:\Users\hubwiz> npm install –g solc

安裝完畢後,執行命令驗證安裝成功npm

C:\Users\hubwiz> solcjs –version
0.40.2+commit.3155dd80.Emscripten.clang

1.4安裝web3

Web3的安裝過程使用了git,所以須要先安裝windows版的git命令行。下載64位或32位的git安裝程序,本地安裝後在繼續安裝web3。編程

C:\Users\hubwiz> npm install –g web3@0.20.2

安裝驗證:json

C:\Users\hubwiz> node –p 'require("web3")'
{[Function: Web3]
  providers:{…}}

1.5安裝truffle框架

執行如下命令安裝truffle開發框架:ubuntu

C:\Users\hubwiz> npm install –g truffle

驗證安裝:windows

C:\Users\hubwiz> truffle.cmd version
Truffle v4.1.3 (core 4.1.3)

1.6安裝webpack

執行如下命令安裝webpack:跨域

C:\Users\hubwiz> npm install –g webpack@3.11.0

驗證安裝

C:\Users\hubwiz> webpack –v
3.11.0

2、運行私鏈節點

2.1創世塊配置

建立一個節點目錄node1,並在其中建立私鏈的創世塊配置文件:

C:\Users\hubwiz> mkdir node1
C:\Users\hubwiz> cd node1
C:\Users\hubwiz\node1> notepad private.json

而後編輯內容以下:

{
    "config": {
        "chainId": 7878,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "200",
    "gasLimit": "2100000",
    "alloc": {
        "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
        "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
    }
}
  • config.chainId用來聲明以太坊網絡編號,選擇一個大於10的數字便可。
  • difficulty用來聲明挖礦難度,越小的值難度越低,也就能更快速地出塊。

2.2初始化私鏈節點

執行geth的init命令初始化私鏈節點:

C:\Users\hubwiz\node1> geth --datadir .\data init private.json

這會在當前目錄下建立data目錄,用來保存區塊數據及帳戶信息:

C:\Users\hubwiz\node1> dir
data private.json

能夠上述命令寫到一個腳本init.cmd裏,這樣避免每次都輸入那麼多記不住的東西。文件內容以下:

geth --datadir .\data init private.json

在部署下一個節點時,就能夠直接執行這個腳本進行初始化了。例如,在另外一臺機器上:

C:\Users\hubwiz\node1> init.cmd

2.3啓動私鏈節點

從指定的私鏈數據目錄啓動並設定一個不一樣的網絡編號來啓動節點:

C:\Users\hubwiz\node1> geth --rpc --datadir .\data --networkid 7878 console

一樣,你能夠用一個腳本console.cmd來簡化啓動節點時的輸入,文件內容以下:

geth --rpc \
      --rpcaddr 0.0.0.0 \
      --rpccorsdomain "*" \
      --datadir ./data \
      --networkid 7878 \
      console
  • rpcaddr參數用來聲明節點RPC API的監聽地址,設爲0.0.0.0就能夠從其餘機器訪問API了;
  • rpccorsdomain參數是爲了解決web3從瀏覽器中跨域調用的安全限制問題。 之後啓動節點,只要直接執行這個腳本便可:
C:\Users\hubwiz\node1> console.cmd

2.4 帳戶管理

2.4.1 查看帳戶列表

在geth控制檯,使用eth對象的accounts屬性查看目前的帳戶列表:

> eth.accounts
[]

由於咱們尚未建立帳戶,因此這個列表仍是空的。

2.4.2建立新帳戶

在geth控制檯,使用personal對象的newAccount()方法建立一個新帳戶,參數爲你本身選擇的密碼:

> personal.newAccount('78787878')
0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49

輸出就是新建立的帳戶地址(公鑰),你的輸出不會和上面的示例相同。geth會保存到數據目錄下的keystore文件中。密碼要本身記住,之後還須要用到。

2.4.3查詢帳戶餘額

在geth控制檯,使用personal對象的getBalance()方法獲取指定帳戶的餘額,參數爲帳戶地址:

> eth.getBalance(eth.accounts[0])
0

或者直接輸入帳戶地址:

> eth.getBalance('0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49')
0

新建立的帳戶,餘額果真爲0。

2.4.4挖礦

沒錢的帳戶什麼也幹不了,須要挖礦來掙點錢。 在geth控制檯執行miner對象的start()方法來啓動挖礦:

> miner.start(1)

等幾分鐘之後,檢查帳戶餘額:

> eth.getBalance(eth.accounts[0])
2.695e+21

錢很多了,2695ETH了,目前市值將近500萬人民幣了,哈。 執行miner對象的stop()方法中止挖礦:

> miner.stop()

2.4.5解鎖帳戶

在部署合約時須要一個解鎖的帳戶。在geth控制檯使用personal對象的unlockAccount()方法來解鎖指定的帳戶,參數爲帳戶地址和帳戶密碼(在建立帳戶時指定的那個密碼):

> eth.unlockAccount(eth.accounts[0],'78787878')
true

3、構建示例項目

3.1 新建DApp項目

執行如下命令建立項目目錄並進入該目錄:

C:\Users\hubwiz> mkdir demo
C:\Users\hubwiz> cd demo

而後用webpack模版初始化項目骨架結構:

C:\Users\hubwiz\demo> truffle.cmd unbox webpack
Downloading…
Unpacking…
Setting up…
Unbox successful. Sweet!

3.2 安裝項目依賴的NPM包

執行如下命令安裝nmp包:

C:\Users\hubwiz\demo$ npm install

3.3 修改truffle配置

若是你使用圖形版的ganache,不須要修改truffle.js配置文件。不然,須要在truffle.js中,修改port爲8545,由於ganache-cli在8545端口監聽:

module.exports = {
  networks:{
    development: {
      port: 8545
    }
  }
}

3.4 啓動節點

執行如下命令啓動節點仿真器,以便部署合約並執行交易:

C:\Users\hubwiz\node1> console.cmd

注意:爲了在節點上部署合約,別忘了啓動geth後先解鎖帳戶:

> personal.unlockAcount(eth.accounts[0],'78787878')
true

3.5 編譯合約

執行如下命令編譯項目合約:

C:\Users\hubwiz\demo> truffle.cmd compile

3.6 部署合約

執行如下命令來部署合約:

C:\Users\hubwiz\demo> truffle.cmd migrate

若是你以前忘了在geth控制檯解鎖帳戶,會看到以下錯誤,參考前面說明進行解鎖便可:

Error: authentication needed: password or unlock

若是已經正確地解鎖了帳戶,你會看到部署過程中止在以下狀態:

Replacing Migrations…
… 0x3088762a5bc9…

這是由於truffle在等待部署交易提交,可是咱們在私鏈中尚未啓動挖礦。 如今切換回geth終端窗口,查看交易池的狀態:

> txpool.status
{
  pending:1,
  queued:0
}

果真有一個掛起的交易!啓動挖礦就是了:

> miner.start(1)

稍等小會兒,再查看交易池的狀態:

> txpool.status
{
  pending:0,
  queued:0
}

交易已經成功提交了。咱們能夠中止挖礦了,由於它太佔CPU了:

> miner.stop()

如今切換回truffle那個終端,部署過程也正確地執行完了。

3.7 啓動DApp

執行如下命令來啓動DApp:

C:\Users\hubwiz\demo> npm run dev

在瀏覽器裏訪問http://localhost:8080便可

若是你但願從別的機器也能夠訪問你的DApp應用,修改一下package.json:

{
  scripts:{
    "dev": "webpack-dev-server –-host 0.0.0.0"
  }
}

相關教程

相關文章
相關標籤/搜索