以太坊作為全球第二大加密貨幣平臺,不僅支持以太幣(ETH)的交易,更重要的是,它提供了一個去中心化的、可編程的區塊鏈平臺,使得智能合約和去中心化應用(DApps)的開發成為可能,許多開發者和愛好者希望能夠親自搭建一個屬于自己的以太坊區塊鏈,無論是用于學習、測試還是特定應用場景,本文將為您提供一份詳細的以太坊區塊鏈搭建教程,主要側重于使用Geth(Go-ethereum)客戶端搭建一個私有鏈或測試鏈。
搭建前的準備工作

在開始之前,請確保您的計算機滿足以下基本要求:
- 操作系統:推薦使用 Linux(如 Ubuntu)或 macOS,Windows 用戶可以通過 WSL2(Windows Subsystem for Linux 2)或虛擬機來模擬 Linux 環境,本教程以 Ubuntu 20.04 為例。
- 硬件配置:
- CPU:至少雙核,推薦四核及以上。
- 內存:至少 4GB RAM,推薦 8GB 或以上,尤其是在運行節點和編譯智能合約時。
- 硬盤:至少 50GB 可用空間,用于存儲區塊鏈數據,隨著區塊增長,空間需求會增加,SSD 能顯著提升同步速度。
- 網絡:穩定的互聯網連接,尤其是在初始同步區塊鏈數據時。
- 軟件環境:
- Go 語言環境:Geth 是用 Go 語言編寫的,需要安裝 Go,推薦安裝最新穩定版(如 Go 1.18 )。
- Git:用于下載 Geth 源碼(如果選擇從源碼編譯)。
安裝 Geth 客戶端
Geth 是以太坊最常用的客戶端之一,它是一個命令行工具,可以用來連接以太坊網絡、管理賬戶、挖礦、運行智能合約等。
使用包管理器安裝(推薦新手)
對于 Ubuntu/Debian 系統:
# 安裝 Geth sudo apt install geth
安裝完成后,可以通過以下命令驗證版本:
geth version
從源碼編譯安裝(適合需要最新功能或自定義編譯的用戶)
-
安裝 Go 和 Git:

# 安裝 Git sudo apt install git # 下載并安裝 Go(以 Go 1.19 為例) wget https://go.dev/dl/go1.19.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz # 配置 Go 環境變量 echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc source ~/.bashrc
-
下載 Geth 源碼并編譯:
# 克隆 Geth 倉庫 git clone https://github.com/ethereum/go-ethereum.git # 進入項目目錄 cd go-ethereum # 切換到最新穩定分支(release/1.13.x,請根據實際情況選擇) git checkout release/1.13.x # 編譯 Geth make geth
編譯完成后,geth 可執行文件會位于 go-ethereum/build/bin/ 目錄下,您可以將該目錄添加到 PATH 環境變量中,方便全局調用。
初始化創世區塊
每個獨立的區塊鏈都需要一個“創世區塊”(Genesis Block),它是區塊鏈的起點,我們需要創建一個創世區塊配置文件。
-
創建創世配置文件:
創建一個名為
genesis.json的文件,內容如下,這是一個自定義的創世區塊配置,用于私有鏈:{ "config": { "chainId": 15, // 鏈ID,用于區分不同的以太坊鏈,私有鏈可以自定義,不要與主網(1)、測試網(3,4,5等)沖突 "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "berlinBlock": 0, "londonBlock": 0, "mergeNetsplitBlock": 0, "terminalTotalDifficulty": 0, "terminalTotalDifficultyPassed": true, "ethash": {} }, "alloc": {}, // 預分配賬戶,這里留空,后續手動創建 "coinbase": "0x0000000000000000000000000000000000000000", "difficulty": "0x400000", // 初始難度,私有鏈可以設低一些方便挖礦 "extraData": "", "gasLimit": "0xffffffff", // gas限制 "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp": "0x00" }您可以根據需要調整
chainId和difficulty等參數。 -
初始化創世區塊:

假設您的
genesis.json文件位于/home/user/ethereum/genesis.json,運行以下命令:geth --datadir /home/user/ethereum/data init /home/user/ethereum/genesis.json
--datadir:指定區塊鏈數據存儲的目錄。init:初始化命令,后面跟著創世配置文件的路徑。
執行成功后,您會在指定的
datadir目錄下看到geth和keystore等文件夾。
啟動私有鏈節點
現在可以啟動您的以太坊私有鏈節點了。
geth --datadir /home/user/ethereum/data --networkid 15 console
--datadir:與初始化時指定的數據目錄一致。--networkid:網絡 ID,必須與genesis.json中的chainId保持一致,用于節點之間的識別。console:啟動 JavaScript 控制臺,方便與節點交互。
啟動后,節點會開始加載區塊數據(如果是第一次啟動,會從創世區塊開始),您會看到類似以下的日志信息:
INFO [01-01|12:00:00] Maximum peer count ETH=25 LES=0 total=25
INFO [01-01|12:00:00] Starting peer-to-peer node instance=Geth/v1.13.0/linux-amd64/go1.19
INFO [01-01|12:00:00] Allocated cache and file descriptors cache=512MB handles=4096
INFO [01-01|12:00:00] Blockchain engine started chainconfig={"chainId":15,"homestead":0,"eip150":0,"eip155":0,"eip158":0,"byzantium":0,"constantinople":0,"petersburg":0,"istanbul":0,"berlin":0,"london":0,"mergeNetsplit":0,"terminalTotalDifficulty":0,"terminalTotalDifficultyPassed":true}
INFO [01-01|12:00:00] Disk storage enabled for ancient blocks limit=512MB
INFO [01-01|12:00:00] Mapped base state in=~/.ethereum/geth/chaindata hash=0xc337f1…a0d9b7
INFO [01-01|12:00:00] Loaded most recent local header number=0 hash=c337f1…a0d9b7 td=400000
INFO [01-01|12:00:00] Loaded most recent local full block number=0 hash=c337f1…a0d9b7 td=400000
INFO [01-01|12:00:00] Loaded most recent local fast block number=0 hash=c337f1…a0d9b7 td=400000
INFO [01-01|12:00:00] Starting P2P networking
進入控制臺后,您會看到 > 提示符。
私有鏈基本操作
在 Geth 控制臺中,您可以執行以下常用命令:
-
查看賬戶信息:
// 查看當前賬戶列表 eth.accounts // 初始為空 []
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。



