This is my first read.cash article with the same text posted at /r/btc/comments/jznkaz/cashfusion_on_bitcoincom_wallet_or_any_other as I am not too happy with Reddit overall. I would like the discussion to happen here on read.cash but I understand if some prefer to comment on Reddit instead.
Status: Experimental. If others (especially @jonald_fyookball and/or /u/jonald_fyookball of Electron Cash & Cash Fusion + @RogerVer and/or /u/MemoryDealers and/or @maplesyrupsucker and/or /u/maplesyrupsucker of Bitcoin.com mobile wallet) can comment on the below, I can update this status when appropriate.
Goal: More privacy on mobile wallets.
Idea: Run Electron Cash's desktop CashFusion in the background while using a mobile wallet of choice on a phone.
Precedence: As found out after my tests when searching to see if others have run into the same issues (“compromises” as I call them), at least one other user has tested this setup (see /r/btc/comments/juk9f5/the_developers_of_bitcoincoms_mobile_wallets_want point 4).
Test setup: Bitcoin.com mobile wallet due to its preferred UI suitable to introduce others to BCH (with a grain of salt for being closed source, reusing change addresses, and older m/44'/0'/0' derivation path that is grandfathered so that it generates both BCH and BTC wallets with the same seed, suitable to reduce risks of losing funds for crypto newcomers and/or users not realizing differences between BCH and BTC, see /r/btc/comments/juk9f5/the_developers_of_bitcoincoms_mobile_wallets_want/gcdxwea detailed comment) + Electron Cash 4.2.2 with CashFusion due to its privacy features
Process:
Have and/or create a mobile wallet (e.g. Bitcoin.com in this setup).
Optional but recommended: Allow PIN app lock. Settings (gear icon, main menu bottom right) > Preferences + App Lock (while in the Settings, you may also want to update your local currency and/or turn off sharing anonymous data)
Back it up, preferably by writing down the seed list somewhere entirely offline:
Either: Select Wallet > Menu (3 dots, top right) > Show my recovery phrase > PIN
Or: Settings (gear icon, main menu bottom right) > Security Center > Manual Backup > Select Wallet > PIN
Create a new Electron Cash desktop wallet with your existing seed from a mobile wallet: File > New/Restore > create_name + Next > Standard wallet > I already have a seed > manually_write_your_seed + Options + BIP39 (for some, e.g. Bitcoin.com) + Next > m/44'/145'/0' OR m/44'/0'/0' derivation path (m/44'/0'/0' for some, e.g. Bitcoin.com) + Next > Password + Next
Turn on CashFusion to run in the background (green nodes icon, second icon bottom right corner), and leave your Electron Cash on as long as desired.
Optional but recommended: Right click to change the fusion behavior in “Wallet Fusion Settings” and switch between modes as desired:
Normal = Consolidate or Fan-Out whatever is more appropriate for the fusion math with other fusion users (How about “fusers”?),
Consolidate = to have fewer coins (i.e. addresses with balances on them) in your wallet,
Fan-Out = to have more coins (i.e. addresses with balances on them) in your wallet,
Custom = to specify e.g. target output size or target coin number
Risks:
An infected desktop (e.g. with a keylogger) could reveal the mobile wallet's seed when typing it into Electron Cash.
An impatient fuser does not wait for a CashFusion transaction to happen and uses their mobile wallet too soon, possibly compromising their privacy. Turning CashFusion on does not mean it will happen instantaneously as it first queues your preferred fusion (see the queue under Right click CashFusion > Fusions).
An eager fuser uses the background fusion without understanding the compromises below and how they may affect their mobile wallet provider. For instance, if there is a wallet that does not allow manual scan for missing transactions, then the fuser’s mobile wallet balance might be temporarily incorrect.
Unknowns.
If you know of any other risks, please share the knowledge.
Compromises:
Bitcoin.com wallet might not automatically recognize your entire balance after using CashFusion in the background. If that happens, do not panic, it is an indexing hiccup. Simply prompt Bitcoin.com wallet to scan the BCH blockchain for missing addresses not yet associated with your wallet. Select Wallet > Menu (3 dots, top right) > Wallet information > Scan for missing transactions > Scan for transactions > Wait (and repeat if necessary, I once had to do this scan twice with ample time in between)
Bitcoin.com wallet might list CashFusion intermediary transactions as yours with large balances newer owned. If that happens, appreciate this under the hood blockchain magic and move on. You can see these transactions as having a fee nearly identical to the transacted amount. ¯\_(ツ)_/¯
CashFusion might keep running even after several fusions, with a mystery as to when it would pause and restart (if at all). A bit more understanding about its Normal fusion behavior and/or custom mode for pausing and restarting would be appreciated.
Feature requests for Electron Cash (@jonald_fyookball and/or /u/jonald_fyookball have a look):
Update the UI to make it clearer where the seed list import is. The seed recovery is under “Standard wallet” menu, not “Import...” which is specifically and only for “Import Bitcoin Cash addresses and private keys” (addresses and private keys are different from the seed list). When quickly skimming through options, users tend to default to “Import...” as that is the action they are after (see /r/Bitcoincash/comments/jwi6cz/help_with_splitting_from_the_badger_wallet/gcqohaw for example). Stating “Standard wallet, new or seed list import” and restating “BCH addresses and private keys import” should clear this up.
Allow for QR code camera input for the seed list import (just like it is for a private key import). This will make it quicker to input the seed list with its specific details if automatically recognized (e.g. BIP39 and legacy m/44'/0'/0' derivation path for Bitcoin.com). Then the Risk #1 is diminished and the Process #4 becomes simpler: File > New/Restore > create_name + Next > Standard wallet, new or seed list import > I already have a seed > QR input + Next > Password + Next
Add a conditional custom fusion setting for automatic switching between fan-out and consolidation. This is possible manually but would be nice for those who desire to first fan-out to min.X coins and then consolidate to max.Y coins where, obviously, Y<X. Knowing that CashFusion pauses after satisfying both X and Y conditions would allow for nearly non-stop running without a worry that the wallet will end up with too many fusions and too many transactions (and hence marginally higher than necessary transaction costs for future transactions). Add a setting to “Rerun the conditional custom fusion after” checkbox “Any incoming transaction” and/or checkbox “Any outgoing transaction” for further automatic behavior. This would incentivize fusers to let such conditional custom fusion on pretty much non-stop, not only during Fusion Fridays. This should resolve the Compromise #3.
If ABC’s BCHA~TAX somehow survives and becomes a legitimate chain, consider adding the “ --taxcoin” version of Electron Cash 4.2.2 to your official repository. I understand if you do not want to formally promote this chain and do not wish to support it with official wallet software that works without any modifications. If not a direct BCHA~TAX download, your downloads at https://electroncash.org/#download could at least include instructions for common users how to run the “ --taxcoin” argument as they tend to get confused now (e.g. /r/btc/comments/jxgpyv/with_electron_cashs_422_i_realized_we_have_a/gcxq6kx by a regular user who likely never run a terminal command).
Feature requests for Bitcoin.com mobile wallet (@RogerVer and/or /u/MemoryDealers and/or @maplesyrupsucker and/or /u/maplesyrupsucker have a look):
Allow to hide / filter transactions just like you allow for “Verified” SLP tokens under “Assets”. This could be manual (click on the transaction > select hide) with a toggle option to select “All transactions shown”. This should resolve the Compromise #2.
Implement better indexing logic to automatically hide CashFusion transactions. The above filter request could be fully automatic (if transaction fee is 99% of transaction amount, then hide and/or scan for op_return to identify CashFusion) and fusers would not have to do much manually. This should resolve the Compromise #2.
If hiding a transaction occurs (manually and/or automatically), scan blockchain for missing transactions in regular intervals. The assumption is that such a user is a fuser and will want to see their entire balance. The automatic scan intervals could be after each balance change just to make sure that the wallet recognized all outputs from each new fusion. This should resolve the Compromise #1.
Add manual CashFusion option in wallet settings (e.g. under “Wallet information”) to know which wallets use CashFusion. This will allow for automatic hiding / filtering of transactions and more frequent blockchain scanning. This should resolve the Compromise #1 and #2, as described in the feature requests above.
Courtesy of: ABC's/Amaury's Split that forced me to look into replay protection via Electron Cash on an existing Bitcoin.com mobile wallet.
I had a chance to introduce a relative to BCH shortly after the split. My relative wanted to buy VoIP (Voice over Internet Protocol) credits at https://www.freecall.com/payment_methods and I suggested sending them plenty of BCH to use for several such purchases. Though I first wanted to make sure that their newly downloaded Bitcoin.com wallet was to receive properly replay-protected BCH from me.
Thank you Amaury (@deadalnix and/or /u/deadalnix account) for stubbornly forking off without a replay protection. Your hostile roadblock sparked this minor innovation of assembling widely available tools for something relatively novel that is almost ready for a common user.
I did not want to wait for all this to be solved on its own so I went ahead and experimentally imported my Bitcoin.com seed to Electron Cash, split my BCH and used CashFusion for more privacy, and used the BCHA~TAX “ --taxcoin” version of Electron Cash to secure my funds there. Adversity indeed instills creativity!
What's the best way to secure your Bitcoin wallet