區塊鏈淺談11 - 建置乙太坊私有鏈上的Ethereum Network Status

建置於乙太坊私有鏈上的Ethereum Network Status

Etherum Network Status是一個非常方便,能及時查看乙太坊網路整體狀態的一個網頁,本篇會介紹如何自己架一個可以看自己私有鏈狀態的Etherum Network Status

建置環境

我的環境

  • Ubuntu:16.04
  • nodejs:6.14.1
  • npm :3.10.10
  • geth :1.8.3

建置步驟

底下的建置步驟是我參考兩個Github網頁並自己測試成功

eth-netstats

  • https://github.com/cubedro/eth-netstats
    cd ~
    git clone https://github.com/cubedro/eth-netstats
    cd eth-netstats
    npm install
    sudo npm install -g grunt-cli
    grunt
    

    eth-net-intelligence-api

  • https://github.com/cubedro/eth-net-intelligence-api
    cd ~
    git clone https://github.com/cubedro/eth-net-intelligence-api
    cd eth-net-intelligence-api
    npm install
    sudo npm install -g pm2
    

    複製以下代碼並修改到路徑eth-net-intelligence-api/app.json

    [
      {
    "name"        : "mynode-0",
    "cwd"         : ".",
    "script"      : "app.js",
    "log_date_format"   : "YYYY-MM-DD HH:mm Z",
    "merge_logs"    : false,
    "watch"       : false,
    "exec_interpreter"  : "node",
    "exec_mode"     : "fork_mode",
    "env":
    {
      "NODE_ENV"    : "production",
      "RPC_HOST"    : "10.10.10.10",//GETH running ip
      "RPC_PORT"    : "8545",
      "LISTENING_PORT"    : "30303",
      "INSTANCE_NAME"   : "mynode-0",//節點顯示名字
      "WS_SERVER"     : "http://localhost:3000",//Ethereum Network Status網址
      "WS_SECRET"     : "your_secret",//自定義節點密碼
    }
      },
    ]
    
  • 需要修改RPC_HOST對應IP到你的GETH的IP

Geth私有鏈

geth --identity "Private-chain" --rpc --rpcaddr "0.0.0.0" --rpccorsdomain "*" --datadir "D:\geth\chain" --port "30303" --rpcapi "db,eth,net,web3,personal" --networkid 394 console
  • –datadir後需參數根據自己環境修改

Nodejs

cd ~/eth-net-intelligence-api
pm2 start app.json
pm2 update
cd ../eth-netstats
PORT=3000 WS_SECRET=your_secret npm start &

進入http://localhost:3000,就可以看到私有鏈的狀態了

新增節點

修改eth-net-intelligence-api/app.json,複製大括弧內容並修改IP貼回如下

[
  {
    "name"        : "mynode-0",
    "cwd"         : ".",
    "script"      : "app.js",
    "log_date_format"   : "YYYY-MM-DD HH:mm Z",
    "merge_logs"    : false,
    "watch"       : false,
    "exec_interpreter"  : "node",
    "exec_mode"     : "fork_mode",
    "env":
    {
      "NODE_ENV"    : "production",
      "RPC_HOST"    : "10.10.10.10",//GETH running ip
      "RPC_PORT"    : "8545",
      "LISTENING_PORT"    : "30303",
      "INSTANCE_NAME"   : "mynode-0",//節點顯示名字
      "WS_SERVER"     : "http://localhost:3000",//Ethereum Network Status網址
      "WS_SECRET"     : "your_secret",//自定義節點密碼
    }
  },
  {
    "name"        : "mynode-1",
    "cwd"         : ".",
    "script"      : "app.js",
    "log_date_format"   : "YYYY-MM-DD HH:mm Z",
    "merge_logs"    : false,
    "watch"       : false,
    "exec_interpreter"  : "node",
    "exec_mode"     : "fork_mode",
    "env":
    {
      "NODE_ENV"    : "production",
      "RPC_HOST"    : "10.10.10.11",//GETH running ip
      "RPC_PORT"    : "8545",
      "LISTENING_PORT"    : "30303",
      "INSTANCE_NAME"   : "mynode-1",//節點顯示名字
      "WS_SERVER"     : "http://localhost:3000",//Ethereum Network Status網址
      "WS_SECRET"     : "your_secret",//自定義節點密碼
    }
  }
]

再重新跑pm2 update指令,Console有顯示兩份節點的資訊後,在Geth裡admin.addPeer(“enode://…(請參考之前文章)”),就可以成功把節點都顯示在你自己的Ethereum Network Status了

結語

這是去年研究乙太坊的一個成果,紀錄供需要的人建置,以私有鏈來說這個Ethereum Network Status就是給管理者管理使用,可以了解現在私有鏈的狀態。






Search

    Post Directory