進階
Wallet Backup
深入了解 Bitcoin Core 錢包備份機制,包括 wallet.dat、描述符錢包和恢復流程。
10 分鐘
錢包備份的重要性
錢包備份是保護比特幣資產的關鍵步驟。Bitcoin Core 支持多種備份方式, 從傳統的 wallet.dat 檔案到現代的描述符(descriptor)導出。 正確的備份可以在硬體故障、軟體損壞或其他意外情況下恢復資金。
警告
- ! 沒有備份的錢包無法恢復
- ! 備份應加密並儲存在多個安全位置
- ! 定期更新備份(尤其是非 HD 錢包)
錢包類型
| 類型 | 備份方式 | 備份頻率 |
|---|---|---|
| Legacy(非 HD) | wallet.dat | 每生成新地址 |
| HD (BIP-32) | 種子詞 + wallet.dat | 一次(種子) |
| Descriptor | 描述符導出 | 一次(描述符) |
備份方法
1. wallet.dat 備份
# 使用 RPC 備份(推薦)
bitcoin-cli backupwallet "/path/to/backup/wallet-backup.dat"
# 直接複製(需要先停止節點)
bitcoin-cli stop
cp ~/.bitcoin/wallets/default/wallet.dat /path/to/backup/
# 對於命名錢包
bitcoin-cli -rpcwallet=mywallet backupwallet "/path/to/backup.dat"
# 備份檔案位置
~/.bitcoin/wallets/
├── default/
│ └── wallet.dat
├── mywallet/
│ └── wallet.dat
└── ... 2. 私鑰導出
# 導出單個私鑰(WIF 格式)
bitcoin-cli dumpprivkey "bc1q..."
# 導出整個錢包(所有私鑰)
bitcoin-cli dumpwallet "/path/to/wallet-dump.txt"
# 輸出格式示例
# extended private masterkey: xprv...
# addr=bc1q... label= # hdkeypath=m/84'/0'/0'/0/0
# KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn 2024-01-01T00:00:00Z 安全警告: 導出的私鑰是未加密的。處理完成後請安全刪除導出檔案。
3. 描述符備份
# 列出所有描述符(包含私鑰)
bitcoin-cli listdescriptors true
# 輸出示例
{
"wallet_name": "mywallet",
"descriptors": [
{
"desc": "wpkh([d34db33f/84'/0'/0']xprv.../0/*)#checksum",
"timestamp": 1609459200,
"active": true,
"internal": false,
"range": [0, 999]
},
{
"desc": "wpkh([d34db33f/84'/0'/0']xprv.../1/*)#checksum",
"timestamp": 1609459200,
"active": true,
"internal": true,
"range": [0, 999]
}
]
} 恢復流程
從 wallet.dat 恢復
# 方法 1: 使用 restorewallet(Bitcoin Core 24.0+)
bitcoin-cli restorewallet "restored" "/path/to/backup/wallet.dat"
# 方法 2: 直接複製(需要停止節點)
bitcoin-cli stop
mkdir -p ~/.bitcoin/wallets/restored/
cp /path/to/backup/wallet.dat ~/.bitcoin/wallets/restored/
bitcoind
# 載入錢包
bitcoin-cli loadwallet "restored"
# 重新掃描區塊鏈(如果餘額不正確)
bitcoin-cli -rpcwallet=restored rescanblockchain 從私鑰恢復
# 導入單個私鑰
bitcoin-cli importprivkey "KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn" "mylabel" true
# 從 dump 檔案導入
bitcoin-cli importwallet "/path/to/wallet-dump.txt"
# 注意:導入會觸發區塊鏈重新掃描 從描述符恢復
# 創建新的描述符錢包
bitcoin-cli createwallet "restored" false true "" false true
# 導入描述符
bitcoin-cli -rpcwallet=restored importdescriptors '[
{
"desc": "wpkh([d34db33f/84h/0h/0h]xprv.../0/*)#checksum",
"timestamp": "now",
"active": true,
"internal": false
},
{
"desc": "wpkh([d34db33f/84h/0h/0h]xprv.../1/*)#checksum",
"timestamp": "now",
"active": true,
"internal": true
}
]' 最佳實踐
✓ 建議
- • 使用加密的錢包
- • 備份到多個位置
- • 使用描述符錢包
- • 定期測試恢復流程
- • 使用硬體錢包整合
✗ 避免
- • 只有單一備份
- • 儲存在雲端(未加密)
- • 忘記錢包密碼
- • 從不測試恢復
- • 忽略非 HD 錢包的更新備份
備份檢查清單
- 設置錢包加密密碼
- 使用 backupwallet 創建備份
- 導出描述符(包含私鑰)
- 儲存到安全的離線位置
- 測試恢復流程(使用測試網)
錢包加密
# 加密錢包
bitcoin-cli encryptwallet "your-strong-passphrase"
# 注意:這會關閉 bitcoind,需要重新啟動
# 解鎖錢包(用於發送交易)
bitcoin-cli walletpassphrase "your-passphrase" 60
# 鎖定錢包
bitcoin-cli walletlock
# 更改密碼
bitcoin-cli walletpassphrasechange "old-passphrase" "new-passphrase" 總結
- ✓ wallet.dat:完整的錢包備份檔案
- ✓ 描述符:現代錢包的最佳備份方式
- ✓ 加密:務必設置強密碼
- ⚠ 測試:定期測試恢復流程
已複製連結