Regain your privacy by connecting a Bitcoin Full Node to your BitBox wallet

The added ‘Connect your own full node’ button

It is now possible to connect a bitcoin full node to your BitBox desktop wallet. There are two good reasons, why this is something useful. One is privacy, since you are not sharing your directly identifiable transaction data with any 3rd party. The data is only sent to your own full node. The second one is reliability. Even if our current services are not available, you can still make transactions with your BitBox hardware wallet and your own full node.

To connect your full node and benefit fully from it, you currently also have to run the ElectrumX server next to running the bitcoin core client software. We are working on eliminating this requirement as well, by allowing the usage of the personal electrum server. The tutorial will show how in a few easy steps and little command line knowledge, you can get everything up and running on a Linux based operating system.

For optimal result, configure the full node connection before creating a wallet. This way none of your public key data is ever routed through our hosted services. You can find the option to do this in the ‘Settings’ tab of the BitBox wallet app.

First, download a version of bitcoin and extract the binaries from the tar archive. Then create/edit the bitcoin configuration file (located in ~/.bitcoin/bitcoin.conf ), or if you are running bitcoin-qt Settings->Options->Open Configuration File and add the following lines:

txindex = 1
server=1
rpcport=8332
rpchost=127.0.0.1
rpcpassword=whatever #replace this
rpcuser=electrumx

Start either bitcoin-qt or bitcoind on your system. If you have run bitcoin before without the txindex=1configuration option, you will need to start bitcoin with the -reindex option. To watch the sync process when running bitcoind tail the debug log file with tail -f ~/.bitcoin/debug.log .

Once synced, start the ElectrumX server. This guide will use docker to start and manage the server, since it makes everything a bit easier. On Ubuntu go through this guide to install docker: https://docs.docker.com/install/linux/linux-postinstall/ .

And run ElectrumX with:

docker run --net=host -v ~/electrumx:/data -e DAEMON_URL="electrumx:whatever@127.0.0.1:8332" -e COIN=BitcoinSegwit -e NET=mainnet -e RPC_HOST=127.0.0.1 -e RPC_PORT=8332 -p 50002:50002 lukechilds/electrumx

The ElectrumX server takes some time to sync. As long as it has not fully indexed bitcoin’s database, it will reject any requests sent to it.

Once ElectrumX is synced, run cat ~/electrumx/electrumx.crt . This should show you the contents of the ssl certificate you need. Now head to the “Connect your own full node” settings page in the BitBox desktop app. If you are running ElectrumX on a remote machine/server , you can find out its ip by typing ip -a . Otherwise use 127.0.0.1 if it is on your local machine. The used port is 50002, so altogether 127.0.0.1:50002 . Then paste the contents of the certificate you previously got with the cat command into the text box. Click ‘Check’, then ‘Add’ and you will have your own node in the list of connected servers.

You can then proceed to remove our own servers from the Server list. They can be added back at any time by clicking “Reset to default”.

The app with a connected node in a local network

For additional privacy, you can setup the bitcoin node to use TOR. The bitcoin wiki does a good job at explaining the setup.