BlockChain-在一臺電腦上部署多個節點

這裏分享的是關於在是在私有鏈中,用一臺電腦去建立多個節點,並進行節點連接html

1. 準備創世塊文件
node

本身建立一個創世塊文件或是稱爲根節點是爲了區分公有鏈和私有鏈。同一個網絡下只有一個創世塊,並且只有處於相同的創世塊才能夠正常進行通訊。創世塊文件是一個json文件。格式以下:web

{
  "nonce": "0x0000000000000042",
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x0",
  "gasLimit": "0x80000000",
  "difficulty": "0x1",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {     }
}

其中:json

   nonce:  64位隨機數,用於合格區塊的判斷api

   timestamp:創世塊的時間戳微信

   parentHash: 上一個節點的hash值,因爲是創世塊,爲第一個節點,因此他不存在parent節點網絡

   extraData:附加信息,能夠加入個性信息等cors

   gasLimit: gas消耗總量限制,限制區塊能包含的交易信息總和dom

   difficulty: 區塊難度,若是這個值設置的越大,挖礦就越難ide

   mixhash:與nonce配合使用,用於挖礦

   coinbase:礦工的帳號信息

   alloc:用於預置帳號和帳號的以太幣數量

首先,建立一個genesis.json 文件。而後把上面的內容複製,根據本身的需求修改相應的參數。

cd到這個json所在的目錄,運行:

geth --datadir "node1/" init genesis.json

 運行以後,會在該目錄下生成一個node1的文件夾,同時在node1文件夾下生成geth 和 keystore兩個文件夾。keystore裏存放的就是你後續建立帳號的信息

2. 啓動節點

 初始化節點後,須要啓動這個節點。

 

geth --identity "node1" --rpc --rpcport 8000 --rpccorsdomain "*" --datadir  "./"  --port 30303 --rpcapi "db,eth,net,web3" --networkid 999 console 2>>geth.log

 

 這裏就啓動了改節點,默認的啓動端口是 30303.啓動以後,輸入admin.nodeInfo 查看節點信息:

 

{
  enode: "enode://2ef126e63de43500ae36fd1783251919a1f94ce0a3ee79d008530750efc3a19962f6c06cb92c397586d41a444fd1667190acf035e3a45c816fe0a4b904b9727a@[::]:30303?discport=0",
  id: "2ef126e63de43500ae36fd1783251919a1f94ce0a3ee79d008530750efc3a19962f6c06cb92c397586d41a444fd1667190acf035e3a45c816fe0a4b904b9727a",
  ip: "::",
  listenAddr: "[::]:30303",
  name: "Geth/v1.5.9-stable-a07539fb/darwin/go1.8",
  ports: {
    discovery: 0,
    listener: 30303
  },
  protocols: {
    eth: {
      difficulty: 1,
      genesis: "0x6099b65e564bd511f49e8f39ba27b6a68b6b78fd1481592257f06bbf93abe624",
      head: "0x6099b65e564bd511f49e8f39ba27b6a68b6b78fd1481592257f06bbf93abe624",
      network: 1
    }
  }
}

 

 enode裏就是節點的address 

3. 建立第二個節點  

 單獨的一個節點,是能夠建立不一樣的帳號的,以後能夠用不一樣的帳號進行交易。若是要實現多個節點,那就須要再從新建立節點。

 1) cd 到 genesis.json 目錄下

 2) 運行 一樣的初始化命令

geth --datadir "node2/" init genesis.json

 3) 用下面的命令啓動第二個節點

 

geth --identity "node2" --rpc --rpcport 8001 --rpccorsdomain "*" --datadir  "./"  --port 30306 --rpcapi "db,eth,net,web3" --networkid 999 console 2>>geth.log

 

 rpc端口和節點端口都要和第一個節點不一樣,節點端口默認的port是 30303,rpc端口默認爲8545,若是node2節點的rpc端口或是節點端口採樣默認值,就會出現端口被第一個佔用的狀況。

4. 把兩個節點鏈接起來

   經過admin.addPeer(「節點的enode」)添加。如上面第一個節點和第二個節點鏈接

admin.addPeer("enode://2ef126e63de43500ae36fd1783251919a1f94ce0a3ee79d008530750efc3a19962f6c06cb92c397586d41a444fd1667190acf035e3a45c816fe0a4b904b9727a@[::]:30303?discport=0")

 控制檯會返回一個true

這個時候,隨便在哪一個節點的控制檯上,輸入 admin.peers 就能夠查看鏈信息了

5.驗證是否鏈接成功

 隨便在哪一個節點上進行挖礦操做,看另一個節點是否會同步信息。好比我這裏再第一個節點上進行挖礦操做。注意:要進行挖礦必定要先有帳號。咱們上面提到的全部的操做都只是節點操做,沒有涉及到帳號的操做。

 首先用命令建立一個帳號:

personal.newAccount("xxx")

xxx是表示該帳號的密碼,後面再進行交易的時候須要用到。

建立帳號後,就能夠進行挖礦處理了。

miner.start()

在挖礦的過程當中如何查看是否有進行同步操做呢?

 在第一個挖礦的期間,cd到第二個節點目錄下,執行 

tail -f geth.log

 在控制檯上你若是看到block信息不斷的更新,那就說明鏈接成功了。

注意:這裏的創世塊文件必定要用同一個,不然addPeer雖然返回成功,可是admin.peers查看是沒有的。

  


歡迎你們關注微信號:蝸牛講技術。掃下面的二維碼

  

相關文章
相關標籤/搜索