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 的正確配置是節點穩定運行的基礎。關鍵原則如下:

  1. 安全優先:RPC 介面嚴格限制訪問來源,避免公網暴露
  2. 資源匹配:根據設備實際資源配置 dbcache 和 maxconnections
  3. 角色明確:根據節點用途選擇完整節點或修剪節點
  4. 版本相容:關注 Bitcoin Core 版本更新,及時調整配置

配置管理應纳入版本控制,敏感資訊(RPC 密碼)使用環境變數或專用 secret 管理工具,避免明文存儲在配置文件中。


更新日期:2026-02-23

版本:2.0

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。

目前尚無評論,成為第一個發表評論的人吧!