以太坊作為領先的智能合約平臺,其公鏈雖然功能強大,但在開發、測試和學習階段,搭建一個本地或私有的以太坊網絡(私鏈)往往更為便捷和高效,本文將詳細介紹如何在Ubuntu操作系統上從零開始搭建一個以太坊私鏈,涵蓋環境準備、Geth安裝、創世區塊配置、節點啟動以及常用交互命令。
環境準備
在開始之前,確保你的Ubuntu系統已經滿足以下基本條件:
- 操作系統:推薦使用Ubuntu 20.04 LTS或更高版本,本文以Ubuntu 20.04為例。
- 硬件要求:私鏈對硬件要求不高,普通PC即可,建議至少2GB內存,10GB以上可用磁盤空間。
- 網絡連接:雖然私鏈可以離線運行,但初始安裝和更新軟件需要網絡連接。
- 用戶權限:建議使用具有sudo權限的用戶進行操作,避免直接使用root用戶。
更新系統軟件包列表并安裝必要的工具:

sudo apt update sudo apt upgrade -y sudo apt install -y build-essential curl git wget
安裝Geth
Geth(Go-Ethereum)是以太坊官方的Go語言實現客戶端,是最常用的以太坊節點軟件之一,我們將通過二進制文件方式安裝Geth,這是最簡單快捷的方法。
-
下載Geth: 訪問Geth官方發布頁面:https://geth.ethereum.org/downloads/,選擇適合Ubuntu系統的最新穩定版amd64二進制文件,或者使用以下命令直接下載(請替換為最新版本號):
# 假設最新版本為1.13.6,請自行替換 GETH_VERSION="1.13.6" wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.6-4e9e9586.tar.gz
-
解壓并安裝:
tar -xzf geth-linux-amd64-${GETH_VERSION}-4e9e9586.tar.gz sudo cp geth-linux-amd64-${GETH_VERSION}-4e9e9586/geth /usr/local/bin/ -
驗證安裝:
geth version
如果看到Geth的版本信息,則表示安裝成功。
創建創世區塊文件
每個以太坊網絡都有一個創世區塊(Genesis Block),它是區塊鏈的起點,私鏈需要自定義創世區塊配置。
-
創建創世配置文件: 在你的用戶目錄下創建一個名為
ethereum的文件夾,并在其中創建一個genesis.json文件:mkdir -p ~/ethereum cd ~/ethereum nano genesis.json
-
編輯創世配置文件: 在
genesis.json文件中輸入以下內容(這是一個基本的私鏈創世配置示例):
{ "config": { "chainId": 15, // 私鏈的ID,必須是唯一的,避免與公鏈和其他私鏈沖突 "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc": {}, // 預分配的賬戶,這里留空,后續手動創建 "coinbase": "0x0000000000000000000000000000000000000000", "difficulty": "0x4000", // 初始難度,私鏈可以設置得很低以便快速挖礦 "extraData": "", "gasLimit": "0xffffffff", "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp": "0x00" }chainId:非常重要,確保你的私鏈ID是唯一的。difficulty:初始難度值越低,挖出區塊越容易。
保存并退出
nano編輯器(Ctrl X,然后Y,回車)。
初始化創世區塊
使用Geth的init命令,使用我們剛創建的genesis.json文件來初始化數據目錄。
-
創建數據目錄(可選,Geth會自動創建):
mkdir -p ~/ethereum/data
-
初始化:
geth --datadir ~/ethereum/data init ~/ethereum/genesis.json
如果看到
Successfully initialised new Ethereum-style chain.的輸出,表示創世區塊已成功初始化,在~/ethereum/data目錄下會生成geth和keystore等文件夾。
啟動私鏈節點
現在可以啟動我們的私鏈節點了。
-
基本啟動命令:
geth --datadir ~/ethereum/data console
--datadir:指定數據目錄。console:啟動JavaScript交互控制臺,方便后續操作。
啟動后,你會看到類似Geth版本、節點信息、網絡信息等的日志輸出,節點會開始監聽RPC端口(默認8545)和P2P端口(默認30303)。

-
常用啟動參數:
--networkid:指定網絡ID,應與genesis.json中的chainId一致。--nodiscover:禁止節點自動發現其他節點,適用于私鏈,避免連接到公鏈。--maxpeers 0:限制最大連接節點數為0,即完全獨立運行,不與其他節點連接(純私鏈場景)。--rpc:啟用HTTP-RPC服務。--rpcaddr "0.0.0.0":允許任何IP連接RPC服務(默認只允許本地連接)。--rpcport "8545":指定RPC端口。--rpccorsdomain "*": 允許所有來源的CORS請求(開發時方便,生產環境需謹慎)。--mine:啟用挖礦。--minerthreads 1:指定挖礦線程數。--etherbase "0xYourAccountAddress":指定挖礦收益賬戶地址(需要先創建賬戶)。
一個更完整的啟動命令(包含RPC和挖礦):
geth --datadir ~/ethereum/data --networkid 15 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpccorsdomain "*" --mine --minerthreads 1 console
私鏈常用交互命令
啟動console后,你可以使用JavaScript API與私鏈進行交互。
-
查看賬戶信息:
// 查看所有賬戶 eth.accounts // 查看當前默認賬戶(coinbase) eth.coinbase
-
創建新賬戶:
// 會提示輸入密碼,請妥善保存 personal.newAccount("your_password") // 創建后,可以用 eth.accounts[0] 等方式訪問 -
解鎖賬戶(在進行交易或挖礦前可能需要):
personal.unlockAccount(eth.accounts[0], "your_password")
-
開始/停止挖礦:
// 開始挖礦 miner.start(1) // 1是線程數 // 停止挖礦 miner.stop()
-
查看余額:
// 查看第一個賬戶的余額,單位是Wei eth.getBalance(eth.accounts[0]) // 轉換為Ether eth.getBalance(eth.accounts[0]) / 1e18
-
轉賬(發送交易): 假設我們要從
eth.accounts[0]向eth.accounts[1]轉賬1個Ether。// 首先確保賬戶0有足夠余額且已解鎖 personal.unlockAccount(eth.accounts[0], "your_password") // 發送交易 eth.sendTransaction({ from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。



