You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用bip-utils恢复BRD旧钱包P2PKH地址遇阻求助

无法从BRD(现Coinbase Wallet)助记词恢复P2PKH地址的排查方案

以下是可能遗漏的关键点及对应的解决建议:

1. 未遍历内部链(CHANGE=1)

BRD早期可能会将部分收款地址分配到内部链(对应派生路径末尾的/1),而你的代码仅遍历了外部链(/0)。修改代码同时遍历内外链:

from bip_utils import Bip39SeedGenerator, Bip44, Bip44Coins, Bip44Changes

def explore_addresses(mnemonic, account=0, num_addresses=20):
    seed = Bip39SeedGenerator(mnemonic).Generate()
    bip44_mst = Bip44.FromSeed(seed, Bip44Coins.BITCOIN)
    bip44_acc = bip44_mst.Purpose().Coin().Account(account)
    
    addresses = []
    # 同时遍历外部链(0)和内部链(1)
    for change in [Bip44Changes.CHAIN_EXT, Bip44Changes.CHAIN_INT]:
        bip44_chain = bip44_acc.Change(change)
        for i in range(num_addresses):
            address = bip44_chain.AddressIndex(i).PublicKey().ToAddress()
            addresses.append((account, change, i, address))
    return addresses

mnemonic = '<my recovery phrase from coinbasewallet>'
for account in range(100):  # 先缩小范围测试,再逐步扩大
    addresses = explore_addresses(mnemonic, account, num_addresses=1000)
    for acc, change, idx, addr in addresses:
        if addr.startswith('12vHA'):
            print(f"Account {acc}, Change {change}, Index {idx}: {addr}")

2. BRD早期使用非标准BIP44 Purpose路径

部分早期BRD版本未严格遵循BIP44的m/44'/0'/x'/y/z路径,而是使用更简单的m/0'/0'/x这类非标准路径。可以尝试直接用BIP32派生这类路径:

from bip_utils import Bip39SeedGenerator, Bip32, Bip32Coins

def explore_non_standard_paths(mnemonic, num_accounts=10, num_addresses=1000):
    seed = Bip39SeedGenerator(mnemonic).Generate()
    bip32_mst = Bip32.FromSeed(seed, Bip32Coins.BITCOIN_MAIN_NET)
    
    addresses = []
    # 尝试路径 m/0'/account/index
    for acc in range(num_accounts):
        acc_node = bip32_mst.DerivePath(f"m/0'/{acc}'")
        for idx in range(num_addresses):
            addr_node = acc_node.DerivePath(f"/{idx}")
            address = addr_node.PublicKey().ToAddress()
            addresses.append((acc, idx, address))
    return addresses

mnemonic = '<my recovery phrase from coinbasewallet>'
results = explore_non_standard_paths(mnemonic)
for acc, idx, addr in results:
    if addr.startswith('12vHA'):
        print(f"Non-standard path m/0'/{acc}'/{idx}: {addr}")

3. 助记词存在未记录的Passphrase

BRD早期支持为助记词设置额外的密码(Passphrase),如果当时设置过,生成Seed时必须传入该密码才能得到正确的密钥。修改Seed生成代码:

# 替换为你可能设置过的密码,空字符串表示无密码
passphrase = "your_old_brd_passphrase"
seed = Bip39SeedGenerator(mnemonic).Generate(passphrase)

4. 混淆了BIP44与BIP84路径

你当前能生成Bech32地址(bc1开头)是因为Coinbase Wallet现在默认使用BIP84(m/84'/0'/x'/y/z),但早期BRD的P2PKH地址对应BIP44路径。确保你在查找P2PKH时使用的是Bip44Coins.BITCOIN而非BIP84配置。

内容的提问来源于stack exchange,提问作者AndreyS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:25:08