Announcing Neutrino Wallet for Bitcoin Cash

As we mentioned in our earlier post announcing bchd beta, we have also ported the neutrino wallet backend to our bchwallet codebase. This means that for the first time in the history of Bitcoin Cash users have access to a lightweight SPV wallet with strong network level privacy.

A Privacy Primer

When you think of privacy in cryptocurrencies most people tend to focus on blockchain privacy ― the degree to which people can trace your transactions through the public ledger. And rightfully so, the blockchain is an important component, but it’s not the only aspect of privacy. Network privacy refers to your privacy vis-a-vis the peers or server that your wallet connects to. Prior to neutrino there was not a single lightweight wallet available on the market that does not disclose all the addresses in your wallet and your entire transaction history to a third party.

Client Side Filtering

The concept of client side filtering has been around for a long time but it wasn’t until BTC developers Roasbeef and Jim Posen and others took the initiative to create a specification for it (bips 157/158) and wrote the code that it came into being. Roasbeef in particular did an enormous amount of heavy lifting writing both the neutrino wallet code and making the modifications to btcd(which we ported to bchd). Technically they use neutrino as an SPV option as part of their Lightning Network implementation (lnd), but we just use it as a normal wallet unrelated to lightning.

Stronger Security

Old style SPV wallets were not capable of doing any block validation and thus would follow the longest (most work) chain regardless of whether that chain is valid or not. As an example, if a current SPV wallet connects to a BSV node, it has no idea that it’s being fed an invalid chain.

Unconfirmed Transactions

When we ported neutrino over to BCH it did not have any ability to discover unconfirmed transactions. The reason for this is pretty simple ― any attempt to filter transactions in the mempool would blow the privacy you gained by using neutrino. So it was programmed to only notify you of a transaction when it received its first confirmed.

Using Neutrino

Right now neutrino is command line only software. To use it you need to download the bchwallet binary from our website.

bchwallet --create
bchwallet --usespv -u username -P password
bchctl --wallet -u username -P password getnewaddress

A Call for UI developers

If you’re a good UI designer/developer please get in touch (or not as this is free software :P). We’d love to see someone build a nice front end for it. Preferably for mobile but an electron desktop UI would be nice too.

To Full Node Users

bchd is the only full node implementation currently capable of supporting neutrino SPV wallets. If you run a full node or are considering doing so, please consider running a bchd node as you will help enable neutrino wallets and provide much needed privacy to Bitcoin Cash users.

Beta Warning

Finally this is all beta software. If you’re using it on mainnet please only use it with a small amount of funds. Take note of any bugs you find and report them to us on github.

An alternative full node bitcoin cash implementation written in Go (golang)