1. 程式人生 > >以太坊最詳細私鏈搭建教程

以太坊最詳細私鏈搭建教程

第1步 - 建立datadir資料夾

      執行專用區塊鏈時,強烈建議使用特定資料夾來儲存專用區塊鏈的資料(資料庫和錢包),而不會影響用於儲存來自公共區塊鏈的資料的資料夾。在您的計算機上,建立將託管您的第一個礦工的資料夾:

命令:mkdir -p ~/ChainSkills/miner1

對第二個礦工重複操作

命令:mkdir -p ~/ChainSkills/miner2

第2步 - 建立Genesis檔案

       每個區塊鏈都以一個創世塊開頭,用於初始化區塊鏈並定義加入網路的條款和條件。

我們的genesis塊叫做“ genesis.json”  ,儲存在“ 〜/ ChainSkills ”資料夾下。

在〜/ ChainSkills下建立一個名為genesis.json的文字檔案,其中包含以下內容:

{
 "nonce": "0x0000000000000042",
 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "difficulty": "0x400",
 "alloc": {}, 
 "coinbase": "0x0000000000000000000000000000000000000000",
 "timestamp": "0x00",
 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "extraData": "0x436861696e536b696c6c732047656e6573697320426c6f636b",
 "gasLimit": "0xffffffff",
 "config": {
    "chainId": 42,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
 }
}

第3步 - 初始化私有區塊鏈

是時候用genesis塊初始化私有區塊鏈了此操作將建立儲存在專用於每個礦工的資料目錄下的初始資料庫。

步驟3.1 - 初始化礦工#1

輸入以下命令為第一個礦工建立區塊鏈:

命令:

cd ~/ChainSkills

geth --datadir ~/ChainSkills/miner1 init genesis.json

步驟3.2 - 初始化礦工#2

重複相同的操作,通過指定自己的目標資料夾(〜/ ChainSkills / miner2)來初始化第二個礦工:

命令:

cd ~/ChainSkills

geth --datadir ~/ChainSkills/miner2 init genesis.json

第4步 - 建立帳戶

讓我們為我們的礦工建立一些賬戶。

步驟4.1 - 礦工#1的賬戶

建立將用於執行節點的預設帳戶。該帳戶將接收礦工在私人區塊鏈中建立的所有醚類。這些醚用於通過支付處理每筆交易所需的氣體來測試我們的解決方案。要為礦工#1建立預設帳戶,請鍵入以下命令。將密碼儲存在安全的地方:

命令:geth --datadir ~/ChainSkills/miner1 account new (可以新增多個賬戶測試)

這些帳戶的錢包就在這裡:ls -al ~/ChainSkills/miner1/keystore

要列出節點的所有帳戶,請使用以下命令:

geth --datadir ~/ChainSkills/miner1 account list

步驟4.2 - 礦工#2的賬戶

重複相同的操作為第二個礦工建立預設帳戶。區別在於目標資料夾(〜/ ChainSkills / miner2)。

geth --datadir ~/ChainSkills/miner2 account new

ls -al ~/ChainSkills/miner2/keystore

geth --datadir ~/ChainSkills/miner2 account list

步驟5.1 - 礦工#1:設定

讓我們首先建立一個包含預設帳戶密碼的檔案,這是我們為每個礦工建立的第一個帳戶。在〜/ ChainSkills / miner1 /下建立一個password.sec檔案,其中包含您在miner1上為第一個帳戶配置的密碼,以純文字格式顯示。

要啟動礦工#1,我們需要執行以下命令:

geth --identity "miner1" --networkid 42 --datadir "~/ChainSkills/miner1" --nodiscover --mine --rpc --rpcport "8042" --port "30303" --unlock 0 --password ~/ChainSkills/miner1/password.sec --ipcpath "~/Library/Ethereum/geth.ipc"

主要引數的含義如下:

  • identity:我們節點的名稱
  • networkid:此網路識別符號是一個任意值,用於配對同一網路的所有節點。該值必須不同於0到3(已經被活鏈使用)
  • datadir:我們的私有區塊鏈儲存其資料的資料夾
  • rpc和rpcport:啟用HTTP-RPC伺服器並提供其偵聽埠號
  • port:網路偵聽埠號,節點彼此連線以傳播新的事務和塊
  • nodiscover:禁用發現機制(稍後我們將配對節點)
  • 我的:礦井和交易
  • unlock:預設帳戶的ID
  • password:包含預設帳戶密碼的檔案的路徑
  • ipcpath:儲存IPC套接字/管道檔名的路徑

啟動礦工後 :

開啟礦工控制檯: geth attach

可以在控制檯 執行 geth命令了:

常用geth命令:

1、檢視當前有哪些賬戶

eth.accounts

2、建立一個新賬戶

personal.newAccount(‘密碼')

3、user1向user2轉移以太幣

eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

4、檢視賬戶餘額

> eth.getBalance(eth.accounts[ ])

5、解鎖賬戶

> personal.unlockAccount(eth.accounts[], <password>) 

6、檢視挖礦速率

> miner.getHashrate()

7、檢視區塊高度

 > eth.blockNumber

8、檢視挖礦賬戶

> eth.coinbase

9、設定挖礦賬戶

> miner.setEtherbase(eth.accounts[0]) 

10、挖礦

> miner.start(8)

11、結束挖礦

> miner.stop()

到此為止一個私鏈就搭建完成了。下期將釋出 2個礦工直接的轉賬交易。

學如逆水行舟,不進則退。心似平原跑馬,易放難收。全棧工程師是指掌握多種技能,並能利用多種技能獨立完成產品的人。 也叫全端工程師(同時具備前端和後臺能力),英文Full Stack engineer。【人工智慧】【區塊鏈】【系統/網路/運維】【雲端計算/大資料】【資料庫】【移動開發】【後端開發】【遊戲開發】【UI設計】【微服務】【爬蟲】【Java】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。歡迎各位大神萌新一起專研分享技術。。。

歡迎加入 IT全棧工程師技術交流群:593674370