geth 搭建 私有鏈節點

搭建 私有鏈節點

安裝 geth:節點指令工具

操作

# Mac OS
brew tap ethereum/ethereum
brew install ethereum
geth --help # 檢查是否安裝成功

其他系統的 geth 安裝操作:點擊此處

初始化:節點啓動準備

操作

# 創建節點工程, data0 存放區塊鏈數據
mkdir $HOME/Desktop/private_chain
mkdir $HOME/Desktop/private_chain/data0

# 創建兩個賬戶, 因測試,密碼可爲 123
geth --datadir $HOME/Desktop/private_chain/data0 account new
geth --datadir $HOME/Desktop/private_chain/data0 account new

我們得到兩個公鑰。例如 公鑰1公鑰2

零點:配置 創世區塊

作用

作爲區塊鏈的起始區塊,其他區塊直接或間接引用到創世區塊。因此要運行以太坊私有鏈,需要定義自己的創世區塊,創世區塊信息寫在一個 JSON 格式的配置文件中。

操作

將下面的內容保存到一個 json 文件中,例如 genesis.json。保存在 $HOME/Desktop/private_chain/

{
  "config": {
        "chainId": 10,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc"      : {
    "公鑰1": {
        "balance": "20000000000000000000"
    },
    "公鑰2": {
        "balance": "0"
    }
  }, 
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000", 
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8", 
  "nonce"      : "0x0000000000000042",
  "mixHash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

解釋

├── config: 鏈配置,新區塊的出塊規則依賴鏈配置。
├────── chainId: 即區塊鏈網絡 id,用於連接其他節點,不同 id 網絡的節點無法相互連接。以太坊公網 id 爲 1。
├── alloc: 即分配,創世初始賬戶的資產配置,直接將賬戶資產寫入區塊中。
├── coinbase: 即「生成交易」中的 from。
├── difficulty: 挖礦難度係數,與出塊速度成負相關。
├── extraData: 額外數據。
├── gasLimit: 十六進制,燃料上限。
├── nonce: 隨機數。
├── parentHash: 母區塊的哈希值。
└── timestamp: UTC 時間戳。

結構

此時的目錄結構應該是這樣的:

private_chain
├── data0
└── genesis.json

玩轉 私有鏈節點

創世:寫入創世區塊

操作

# 進入工程目錄
cd $HOME/Desktop/private_chain

# 寫入創世區塊
geth --datadir data0 init genesis.json

返回的信息中看到 Successfully wrote genesis state,寫入創世區塊成功。

入世:啓動節點

操作

# 啓動節點並進入交互式控制檯
geth --datadir data0 --networkid 10086 console

返回的信息中看到 Welcome to the Geth JavaScript console!,啓動節點成功。

交互:賬戶查詢

操作

# 交互式控制檯中

# 查詢賬戶
> eth.accounts

# 查詢賬戶餘額
> eth.getBalance(eth.accounts[0])
> eth.getBalance(eth.accounts[1])

查詢到第一個賬戶有餘額 20000000000000000000,第二個賬戶有餘額 0

交互:賬戶轉賬

操作

# 交互式控制檯中

# 向第二個賬戶轉賬 5000 wei。報錯 authentication needed: password or unlock。
eth.sendTransaction({'to': eth.accounts[1], 'from': eth.accounts[0], 'value': 5000})

# 轉賬前解鎖
personal.unlockAccount(eth.accounts[0])

# 再轉賬則成功
eth.sendTransaction({'to': eth.accounts[1], 'from': eth.accounts[0], 'value': 5000})

# 開啓挖礦對交易進行打包。打包一個區塊之後就停止挖礦。
miner.start(1);admin.sleepBlocks(1);miner.stop();

經過上述操作,查看第二個賬戶餘額,就會發現爲 5000,即轉賬成功。

參考

發佈了82 篇原創文章 · 獲贊 103 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章