跳至主要內容
進階

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:完整的錢包備份檔案
  • 描述符:現代錢包的最佳備份方式
  • 加密:務必設置強密碼
  • 測試:定期測試恢復流程
已複製連結
已複製到剪貼簿