breadwallet / brd-mobile

Other
78 stars 45 forks source link

BRD Team, Shame on You #31

Closed syhd142 closed 10 months ago

syhd142 commented 10 months ago

As a dedicated cryptocurrency hodler, I adhered to the principle of "not your keys, not your coins." I chose the BRD wallet from the bitcoin.org official website, and now, with the closure of the BRD wallet, I find myself unable to retrieve my Bitcoin. Since 2017, I have been accumulating my Bitcoin, never selling a single one. Now, these coins are lost with the shutdown of the BRD wallet, leaving me immensely angry.

I once trusted the BRD wallet so much. Look at what you still write in the README, "If BRD the company disappears, your private key can still be derived from the recovery phrase to recover your funds since your funds exist on the blockchain." (Source: BRD README) Now, it has become a reality. BRD has been acquired by Coinbase, the team members have made their fortunes, but user assets have disappeared. Yet, you have never provided a recovery tool or solution. I don't even know how many users, like me, are unable to recover their Bitcoin.

Let me outline the attempts I've made. Firstly, it's crucial to note that my recovery phrase is 100% correct. I created the BRD wallet on my iPhone 6 and successfully recovered the balance on another old iPhone X using the BRD recovery phrase.

Here are my attempts:

  1. I imported my recovery phrase into different wallets such as Bither, Coinbase, Unstoppable, Coinomi, Coin Wallet, Electrum, etc., to restore transactions, but all displayed a balance of 0, with no transaction records.

  2. My wallet addresses all start with '1', indicating legacy addresses. I followed various online forums that suggested BRD uses m/0' as the derivation path to generate legacy and segwit addresses. I used the Electrum wallet, selected "Restore from an existing wallet" -> "Recover BIP39 seed," and entered different derivation paths, including but not limited to m/0', m/0'/0', m/0'/0'/0, m/0'/0'/1, m/0'/1/0, m/0'/1/1, m/1', m/1'/0, m/1'/1, m/44'/0'/0', m/44'/1'/0', etc. Unfortunately, none were successful. I can confirm that my transaction count does not exceed 20, and I attempted the following commands in the Electrum console, even adjusting the gap size from 200 to 1000, but to no avail: wallet.create_new_address(False) for i in range(200) wallet.create_new_address(True) for i in range(200)

  3. I read through the wallet's code at BRD GitHub Repository. I noticed BRBIP32Sequence.c:BRBIP32MasterPubKey is the function to generate the master public key, using m/0' as the derivation path. However, why isn't it effective for me? I compiled this code, used my recovery phrase, and generated keys using the following functions: BRBIP39DeriveKey(seed.u8, "xxxx"); mpk = BRBIP32MasterPubKey(&seed, sizeof(seed)); wallet = btcWalletNew(getChainParams(BITCOIN_CHAIN_BTC, 1)->addrParams, NULL, 0, mpk); printf("Wallet created with the first receive address: %s\n", btcWalletLegacyAddress(wallet).s); The output address matched the first address generated by Electrum, and my heart broke.

I am not alone; my friends and I are all unsuccessful in recovering our balances. Most of our assets are locked inside, and I don't know how many victims share our plight.

My faith has been severely shaken. Now, the only Bitcoin I feel secure about is on centralized exchanges. It's ironic that a currency claiming to be decentralized finds its safest haven in centralized exchanges—how amusing. I share my experience to let more people who have had the same experience see it. The wallet that claims to protect the assets of 6 million people and 7 billion dollars treats its users this way. (Source)

If there are users with similar experiences, I urge you to come forward and make your voices heard. Let the BRD team or the community, based on the current open-source code, provide users with a Bitcoin wallet that doesn't depend on servers, can run independently, and never goes offline.

syhd142 commented 10 months ago

Finally, after several days of effort, researching, studying documentation, and reading code, I managed to recover all of my bitcoins. The core issue was that mnemonic phrases between different languages cannot simply changed by index.

The BRD team should have provided a recovery tool to help users do this, rather than having us spend a lot of time reading the documentation and code ourselves.