Bitcoin Core 配置文件詳解
bitcoin.conf 選項說明與最佳配置建議。
Bitcoin Core 配置文件詳解:bitcoin.conf 完整指南
bitcoin.conf 是 Bitcoin Core 節點運行的核心配置文件,正確的配置直接影響節點的安全性、效能與功能。正確理解每個選項的用途與風險,是避免運維事故的關鍵一步。
bitcoin.conf 的基本結構
檔案位置與載入順序
Bitcoin Core 按以下順序查找配置文件:
1. /usr/local/bitcoin/etc/bitcoin.conf # 編譯時指定的預設位置
2. ~/.bitcoin/bitcoin.conf # 用戶家目錄(最常使用)
3. $HOME/.bitcoin/bitcoin.conf # 環境變數指定的目錄
4. -conf=<路徑> # 命令列指定
配置文件格式
bitcoin.conf 使用以下語法規則:
# 這是註釋
server=1 # 布林值:1=true, 0=false
rpcuser=admin # 字串值
rpcport=8332 # 數字值
maxconnections=50 # 數字值(可帶單位:k, m)
# 也支援區塊形式
[main]
maxconnections=50
[test]
maxconnections=10
網路連線配置
P2P 網路基本配置
# ===== P2P 網路基本配置 =====
# 啟用節點作為 P2P 伺服器(預設為 1)
listen=1
# 指定綁定的網路介面(預設監聽所有介面)
bind=0.0.0.0:8333
bind=127.0.0.1:8333 # 只監聽本機
# 指定 IPv6 綁定
bind=[::]:8333
# 最大連線數(預設:125,範圍 0-1000)
maxconnections=125
# 最大上傳頻寬(KB/s),0=無限制
maxuploadtarget=5000
網路類型過濾
# ===== 網路類型過濾 =====
# 僅連接到 IPv4 節點
onlynet=ipv4
# 僅連接到 IPv6 節點
onlynet=ipv6
# 僅通過 Tor 匿名網路連接(高度隱私需求)
onlynet=onion
# 啟用 Tor 控制自動配置
torcontrol=127.0.0.1:9051
torpassword=YOUR_TOR_PASSWORD
節點發現與連接
# ===== 節點發現 =====
# 使用 DNS 種子和節點發現(預設為 1)
dns=1
# 指定自訂節點(可在命令列多次使用)
addnode=123.45.67.89:8333
addnode=seed.bitcoin.sipa.be:8333
# 添加固定節點,節點會始終嘗試連接
seednode=123.45.67.89:8333
# 連接特定節點一次(不持久)
connect=123.45.67.89:8333
連接管理進階選項
# ===== 連接管理 =====
# 最小對等節點數量,低於此數值會觸發新連接
minconnections=8
# 連接超时(毫秒)
timeout=5000
# 啟用套接字 linger
so linger=0
# 對等節點優先級(白名單)
whitebind=0.0.0.0:8333,1000
# 對等節點權重控制
white list=127.0.0.1
whitelistrelay=1 # 允許轉發白名單節點的庫存
whitelistforcerelay=1 # 強制轉發白名單節點的交易
RPC 介面配置
基本 RPC 設定
# ===== RPC 基本設定 =====
# 啟用 RPC 伺服器(需要錢包或伺服器模式時)
server=1
# RPC 監聽位址(預設:127.0.0.1)
rpcbind=127.0.0.1:8332
rpcbind=0.0.0.0:8332 # 監聽所有介面(危險!)
# RPC 允許的客戶端 IP(可多次指定)
rpcallowip=127.0.0.1
rpcallowip=10.0.0.0/8 # 允許私有網段
rpcallowip=192.168.1.0/24 # 允許本地網路
# RPC 用戶名和密碼(強烈建議使用 rpcauth)
rpcuser=bitcoinrpc
rpcpassword=YOUR_STRONG_PASSWORD_HERE
使用 rpcauth(更安全)
rpcauth 使用 bcrypt 雜湊密碼,比明文密碼更安全:
# 生成 rpcauth 的方法:
# python3 -c "import secrets; print('rpcauth=admin:' + secrets.token_hex(16) + ':' +
# (secrets.token_hex(32)))"
# 範例輸出(從生成腳本):
rpcauth=admin:8e7d6c5b4a3f2e1d0a9b8c7d6e5f4a3b$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5GyYWv8YLjC0q
RPC 訪問控制
# ===== RPC 訪問控制 =====
# RPC 工作執行緒數(預設:4)
rpcworkqueue=16
# RPC 請求超時(秒)
rpcservertimeout=30
# 限制 RPC 頻寬(KB/s)
rpcbandwidth=1000
# 最大 RPC 執行緒數
rpcthreads=8
RPC 額外安全配置
# ===== 額外安全 =====
# 需要 RPC 密碼才能關閉節點
rpcshutdownwait=1
# 驗證錢包解鎖密碼是否正確
walletencryptionseed=1
交易池配置
mempool 基礎設定
# ===== Mempool 設定 =====
# 交易池最大記憶體(MB),預設:300
maxmempool=300
# 交易池最小費用閾值(sat/vB)
minrelaytxfee=0.00001
# 交易池追蹤祖先交易
limitancestorsize=1010000 # 最大祖先交易總大小(bytes)
limitdescendantcount=100 # 最大後代數量
limitdescendantsize=1010000 # 最大後代交易總大小
# 拒絕未確認交易的費用閾值
incrementalrelayfee=0.00001
費用估算
# ===== 費用估算 =====
# 費用估算模式:ECONOMICAL, CONSERVATIVE
feesetricks=EECONOMICAL
# 費用估算對等節點數
feeestnodes=8
# 預設費用率(sat/vB)
fallbackfee=0.0002
區塊鏈存儲配置
完整節點配置
# ===== 完整節點 =====
# 交易索引(用於 getrawtransaction)
txindex=1
# 完整區塊鏈歷史
prune=0 # 0 = 不修剪,保留完整區塊鏈
# 區塊 фильтр索引
blockfilterindex=1
# 地址索引(用於 getaddressinfo)
addrindex=1
# 時間索引
tsindex=1
修剪節點配置
修剪節點(Pruned Node)大幅減少儲存需求:
# ===== 修剪節點 =====
# 設定修剪大小(MB),最小 550
prune=2000 # 保留最近 2GB 區塊數據
# 或
prune=550 # 最小值,約 550MB
# 修剪節點限制
maxreorgdepth=144 # 允許的區塊重組深度
資料庫快取
# ===== 資料庫快取 =====
# 區塊鏈資料庫快取大小(MB),預設:450
dbcache=1000
# 高速快取大小(MB)
assumedvalidblock=00000000000000000002f5a3c2a5e3e6e7f8e9d0a1b2c3d4e5f6a7b8c9d0e1f2
錢包配置
基本錢包設定
# ===== 錢包設定 =====
# 錢包路徑(預設:~/.bitcoin/wallets/)
walletdir=./wallets
# 禁用錢包功能
disablewallet=0
# 錢包檔案加密
encryptwallet=1 # 需要錢包密碼
# 避免在啟動時解鎖錢包
unlockwallet=0
# 錢包RPC鎖定時間(秒)
walletlocktimeout=60
交易費用設定
# ===== 交易費用 =====
# 固定費用率(sat/vB)
paytxfee=0.0001
# 目標確認時間(分鐘)
txconfirmtarget=6
# 自動選擇交易費用
fee_rate=auto
多錢包支持
# ===== 多錢包 =====
# 載入多個錢包(可多次指定)
wallet=wallet1.dat
wallet=wallet2.dat
wallet=wallets/main
日誌配置
debug 日誌選項
# ===== 日誌配置 =====
# debug 類別(可組合:net,tor, mempool, rpc, zmq)
debug=net
# 或使用 category 語法(Bitcoin Core 22.0+)
debuglogfile=/var/log/bitcoin/debug.log
# 等同於 -debug=1
debug=1
# 特殊 debug 選項
shrinkdebugfile=1 # 自動縮小日誌文件
日誌級別
# ===== 細粒度日誌控制 =====
# 交易傳播
debug=net
# 內存池狀態
debug=mempool
# P2P 網路
debug=p2p
# 區塊驗證
debug=validation
# RPC 調用
debug=ipc
節點類型特定配置
全節點配置(驗證完整區塊鏈)
# ===== 全節點配置 =====
# 完整驗證節點
assumedvalidblock=00000000000000000002f5a3c2a5e3e6e7f8e9d0a1b2c3d4e5f6a7b8c9d0e1f2
# 區塊驗證執行緒數(建議:CPU核心數-1)
par=4
# 啟用 BIP 152 緊湊區塊傳輸
blockassdownload=1
輕量節點配置(驗證區塊頭)
# ===== 輕量/修剪節點 =====
# 修剪模式
prune=2000
# 跳過腳本驗證(測試開發用)
skipprune=1
# 跳過確認檢查
checkpoints=1
閃電網路節點配置
# ===== 閃電網路兼容配置 =====
# 為閃電網路預留錢包
wallet=lightning_wallet
# 最小修剪大小(閃電需要較大空間)
prune=10000
開發者專用選項
測試網路配置
# ===== 測試網路 =====
# 使用測試網路
testnet=1
# 或 regtest(本地開發測試)
regtest=1
# 測試網路 RPC 端口
rpcport=18332
# 測試網路 P2P 端口
port=18333
開發調試選項
# ===== 開發選項 =====
# 模擬網路條件
mocktime=1700000000
# 產生隨機節點 ID
nodebug=0
# 啟用棄用的 RPC
deprecatedrpc=signrawtransaction
# 停用 BIP 9 軟分叉
bip9test腿定=0
安全性強化配置
生產環境安全配置範本
# ==========================================
# Bitcoin Core 生產環境安全配置範本
# ==========================================
# ===== 網路設定 =====
listen=1
maxconnections=125
maxuploadtarget=5000
bind=127.0.0.1:8333
# ===== RPC 安全 =====
server=1
rpcuser=secure_rpc_user
rpcauth=secure_rpc_auth_string_here
rpcbind=127.0.0.1:8332
rpcallowip=10.0.0.0/24
rpcworkqueue=32
rpcthreads=8
# ===== 儲存設定 =====
prune=550
dbcache=1000
# ===== 日誌 =====
debuglogfile=/var/log/bitcoin/debug.log
shrinkdebugfile=1
# ===== 交易池 =====
maxmempool=300
minrelaytxfee=0.00001
# ===== 錢包 =====
disablewallet=0
walletencryption=1
paytxfee=0.0001
txconfirmtarget=6
# ===== 效能 =====
par=4
blockassdownload=1
隱私導向配置
# ==========================================
# 隱私強化配置
# ==========================================
# ===== 網路隔離 =====
onlynet=onion
# ===== Tor 匿名網路 =====
torcontrol=127.0.0.1:9051
torpassword=YOUR_TOR_PASSWORD
onion=1
# ===== 連線隱私 =====
listen=0 # 不接受入站連接
connect=onionnode1.address.onion:8333
connect=onionnode2.address.onion:8333
# ===== 交易隱私 =====
walletrbf=1 # 啟用 RBF
spendzeroconfchange=1
# ===== RPC 隱私 =====
rpcbind=127.0.0.1
rpcallowip=127.0.0.1 # 僅本機訪問
低資源設備配置(Raspberry Pi)
# ==========================================
# 低資源設備配置(Raspberry Pi)
# ==========================================
# ===== 儲存優化 =====
prune=2000 # 2GB 修剪
dbcache=256 # 減少快取
# ===== 效能限制 =====
par=2 # 僅使用 2 執行緒
maxconnections=50 # 減少連接數
maxuploadtarget=1024 # 限制上傳頻寬
# ===== 網路限制 =====
listen=1
bind=127.0.0.1:8333
# ===== 錢包 =====
disablewallet=1 # 此節點不用於交易
監控與維運
關鍵監控指標 RPC
# ===== 監控腳本示例 =====
# 節點狀態檢查
bitcoin-cli getnetworkinfo
bitcoin-cli getblockchaininfo
bitcoin-cli getmempoolinfo
# 連接監控
bitcoin-cli getconnectioncount
# 同步狀態
bitcoin-cli getblockchaininfo | jq '.initialblockdownload'
bitcoin-cli getblockchaininfo | jq '.headers'
# 費用監控
bitcoin-cli estimatesmartfee 6
bitcoin-cli getmempoolinfo | jq '.size'
自動化配置驗證
#!/bin/bash
# config-validator.sh - 驗證 bitcoin.conf 配置
EXPECTED_MAXCONNECTIONS=125
EXPECTED_PRUNE=550
EXPECTED_DBCACHE=1000
# 讀取配置
CONFIG_FILE="$HOME/.bitcoin/bitcoin.conf"
# 驗證函數
validate_config() {
if grep -q "^maxconnections=$EXPECTED_MAXCONNECTIONS" "$CONFIG_FILE"; then
echo "✓ maxconnections 正確"
else
echo "✗ maxconnections 配置異常"
fi
}
# 執行驗證
validate_config
常見配置錯誤與修復
錯誤 1:RPC 暴露公網
# 錯誤配置(危險!)
rpcbind=0.0.0.0:8332
# 正確配置
rpcbind=127.0.0.1:8332 # 只監聽本機
rpcallowip=127.0.0.1 # 只允許本機訪問
錯誤 2:修剪節點啟用全歷史功能
# 錯誤配置(衝突!)
prune=2000
txindex=1 # 需要完整區塊鏈!
# 正確配置(二選一)
prune=0 # 完整節點
# 或
prune=2000 # 修剪節點
txindex=0 # 禁用交易索引
錯誤 3:頻寬限制過低
# 錯誤配置(導致同步緩慢)
maxuploadtarget=100 # 僅 100KB/s
# 正確配置(平衡頻寬與效能)
maxuploadtarget=5000 # 5MB/s
錯誤 4:記憶體配置不當
# 錯誤配置(可能導致 OOM)
dbcache=4000 # 4GB 快取
# 正確配置(根據可用記憶體)
dbcache=1000 # 1GB(4GB RAM 設備)
# 或
dbcache=2000 # 2GB(8GB RAM 設備)
配置管理最佳實踐
版本控制與部署
# 使用環境變數管理不同環境
# ~/.bitcoin/bitcoin.conf.mainnet
# ~/.bitcoin/bitcoin.conf.testnet
# 使用符號鏈接切換
ln -sf ~/.bitcoin/bitcoin.conf.mainnet ~/.bitcoin/bitcoin.conf
配置模板
# ==========================================
# 配置模板 - 複製並自定義
# ==========================================
# [P2P 網路]
# listen=1
# maxconnections=125
# maxuploadtarget=5000
# [RPC]
# server=1
# rpcauth=CHANGE_THIS
# [儲存]
# prune=550
# dbcache=1000
# [錢包]
# disablewallet=0
# paytxfee=0.0001
配置測試流程
# 1. 在測試網路驗證配置
bitcoin.conf.testnet -testnet
# 2. 使用 dry-run 模式檢查配置
bitcoind -help | grep -i config
# 3. 檢查配置語法
bitcoin-cli validateaddress <address>
Bitcoin Core 版本與配置變化
不同版本的重要變化
| 版本 | 重要配置變化 |
|---|---|
| 0.21.0 | 啟用 SQLite 資料庫 |
| 0.21.1 | 引入 taproot 支援 |
| 22.0 | 預設關閉 WiFi |
| 24.0 | 預設啟用 taproot |
| 25.0 | 改進修剪功能 |
| 26.0 | 增強 RPC 安全 |
棄用選項
# 已棄用的選項(避免使用)
# whitelistonion # 改用白名單
# checkpoints # 預設已啟用
# dereferencestemplates # 已移除
# minblocksize # 已移除
結論與建議
bitcoin.conf 的正確配置是節點穩定運行的基礎。關鍵原則如下:
- 安全優先:RPC 介面嚴格限制訪問來源,避免公網暴露
- 資源匹配:根據設備實際資源配置 dbcache 和 maxconnections
- 角色明確:根據節點用途選擇完整節點或修剪節點
- 版本相容:關注 Bitcoin Core 版本更新,及時調整配置
配置管理應纳入版本控制,敏感資訊(RPC 密碼)使用環境變數或專用 secret 管理工具,避免明文存儲在配置文件中。
更新日期:2026-02-23
版本:2.0
相關文章
- Bitcoin Core 節點運作 — 運行完整節點,理解比特幣網路的運作機制。
- 比特幣腳本語言入門 — 理解 Bitcoin Script 的基本指令與運作原理。
- UTXO 模型詳解 — 比特幣的未花費交易輸出模型與帳戶模型比較。
- 比特幣與以太坊:完整技術比較 — 從共識機制、帳戶模型、智慧合約、擴展性等維度全面比較比特幣與以太坊的技術架構差異。
- 比特幣與萊特幣:技術與應用完整比較 — 深入分析比特幣與萊特幣的技術架構、挖礦算法、應用場景、安全性與投資價值差異。
延伸閱讀與來源
這篇文章對您有幫助嗎?
請告訴我們如何改進:
0 人覺得有帮助
評論
發表評論
注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。
目前尚無評論,成為第一個發表評論的人吧!