centos 以太坊多節點私鏈搭建


環境  centos 7   搭建 3 個節點的 私鏈.

 

 

 

第一步 安裝 一些依賴的 工具 

yum update -y && yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs cmake -y

 

第二步 安裝 Go  ,以太坊的區塊鏈是GO寫的

下載go:   wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz
解壓:     tar -C /usr/local -xzf go1.10.linux-amd64.tar.gz

 

然后配置環境變量
echo 'export GOROOT=/usr/local/go' >> /etc/profile
echo 'export PATH=$PATH:$GOROOT/bin' >> /etc/profile
echo 'export GOPATH=/root/go' >> /etc/profile
echo 'export PATH=$PATH:$GOPATH/bin' >> /etc/profile
source /etc/profile

 

檢查 go 是否正確安裝 : go version

 

第三步: 下載 geth 源碼 ,並且編譯安裝.

  下載源碼:  git clone https://github.com/ethereum/go-ethereum.git

  進入源碼根路徑 cd go-ethereum

  編譯源碼: make all

 

  備注編譯 后的文件在 源文件的 根目錄下面的 build 目錄下面.

  配置 geth 的環境變量 :echo 'export PATH=$PATH:/你源碼的路徑/go-ethereum/build/bin' >> /etc/profile

  刷新配置文件: source /etc/profile

 

  檢查:geth version 

 

 

安裝工具完成,下面開始創建節點.

1 在 每台機子上都 創建初始化創世區塊的文件 genesis.json

    

{
  "config": {
        "chainId": 22,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x400",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000032",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

  

 

 

備注:因為后面節點要相互連接,所以創世區塊配置文件要相同,不讓無法連接.

 

 

2 關閉防火牆,並且設置時間為同一時區,然后把時間和網絡時間對對齊,並且設置為自動和網絡時間同步.

 

  上面這部 很重要.不然節點無法同步,不管是防火牆,還是 時間不同步,都不能同步區塊,時間差異不大,會同步,但是會不停的跑異常.

 

3 初始化

  geth --datadir  放區塊的文件夾路徑 init  genesis.json(創世區塊配置文件)

  

  初始成功以后啟動節點: geth --networkid 1234 --nodiscover --datadir d1  --rpc --rpcaddr 192.168.1.111 --rpcport 9001 --port 30001  console 2    --dev.period 1 --allow-insecure-unlock

 

  備注上面定義了 網絡id 是  1234 ,必須一樣,並且不能是1 .

  --datadir d1  放區塊的文件夾路徑 d1

   --rpc --rpcaddr 192.168.1.111 --rpcport 9001  指定啟動 rpc 服務,端口  9001 ,這個是給 java 通過  web3j 來 調用鏈數據的接口.不寫不會開啟.

  -port 30001 是 指定 賬本數據節點之間 數據同步的端口.

  console  會一命令的方式啟動,不帶,啟動以后只能看,不能交互式的敲命令.

  --dev.period 和生成區塊有關,有了它 miner.start() 再回挖礦.沒有不會

  --nodiscover  關閉自用發現

 

 

4 三個節點都啟動以后  查看他們的連接碼: admin.nodeInfo.enode 

 

 

  備注:上面連接碼 使用的時候需要把127.0.0.1 改成真實的ip 

5 然后通過 admin.addPeer("連接碼"); 來連接 

 

6 通過 admin.peers 查看 當前節點連接了那些節點.

  

 

 

    備注: abc 三節點 ,只要 要 a 連接 b,a連接 c,然后 b連接c ,就可實現三節點的互聯,並且 geth 或記住上次連接的 節點,下次 啟動會自動連接.  公鏈上 應該是通過相互自動發現的機制.

 

 

 

7 私鏈搭建完成,但是 eth.accounts 只能看到本地創建的錢包, 但是這個錢包的余額 ,在別的節點上依舊可以查到. 挖礦產區塊的 信息也會同步到別的節點.

 

 

 

 

8 如果 節點挖礦 太慢,並且修改挖礦難度無效,這時候可能是 網絡 id 的問題,換個  networkid  就可以了.

    

 

   挖礦難度的最小值 是  16進制的  0x20000 ,也就是  13 W 多 ,只能 幣這個大,不能比這個小,小於這個值會用默認值. 0x20000

 

9 啟動時指定礦工賬號

     --etherbase 0xad27e0a42831ee84700f612035da59826041abf9 

  備注:據說加上 --mine 或自動挖礦 ,但是實測無效.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM