How to Run Lightning's Zap Wallet on Bitcoin Mainnet Ahead of Schedule
Zap Wallet for Lightning Network is one of the most beautiful software ever written for Bitcoin.
The bummer is, it isn't officially available for Bitcoin mainnet yet. Developers are busy fixing bugs and making sure the wallet is stable enough for production.
However, that doesn't stop you from pointing it to your mainnet LND node in the meantime, thanks to this new pull request that will hopefully be merged in soon.
But before you start, check out my other tutorial on how to install LND on Bitcoin mainnet first if you haven't already.
I run a remote Lightning node on my Linux server and Zap Wallet on Mac OS.
However, the tutorial will work for any kind of setup as long as the operating systems are UNIX-like. Sorry, no Windows.
Please note, that there are still many features that are exclusive to Bitcoin testnet network. Running Zap with mainnet isn't recommended at this point, unless you feel #reckless.
Prerequisites
Make sure you run node.js >= 8, npm >= 5 and yarn:
node -v
npm -v
yarn -v
In a case any of the above is missing or below the specified version, have a look at installation instructions: node.js (npm is included) and yarn.
If you use a package manager for Linux, visit these instructions for node.js instead.
Install Zap Wallet
Create a source folder if you don't have it already:
mkdir ~/source
cd ~/source
Clone the Zap Wallet from the official repository:
git clone https://github.com/LN-Zap/zap-desktop.git
cd zap-desktop
Install Zap dependencies:
yarn
Be patient, it may take a few minutes to finish.
Run Zap Wallet
Test that everything has been installed correctly:
npm run test
If the above command fails on a "The renderer process is not built yet." error, run this command first:
npm run build-renderer
Run Zap:
npm run dev
Alternatively, you may build a binary package for your OS:
npm run package
The package will be located in ~/source/zap-desktop/release
however, I haven't had luck running it without errors.
Allow incoming connections for a remote grpc (optional)
If your Lightning node runs on a different machine as Zap, you will have to make it accept incoming connections.
Go to your server and add the following line to ~/.lnd/lnd.conf
:
rpclisten=0.0.0.0:10009
Next, open the port on your firewall:
sudo iptables -A INPUT -p tcp --dport 10009 -j ACCEPT
sudo iptables-save
I only want my node's grpc to be accessible on the local network. But if you want to be able to connect remotely and your server is behind a router, you will have to setup port forwarding on the router too.
When finished, restart your node:
sudo service lnd stop
sudo service lnd start
Connect to your node
Locate admin.macaroon
in ~/.lnd/data/chain/bitcoin/mainnet
and tls.cert
in the ~/.lnd
folder. If the LND node runs on a remote server, copy them to your local machine.
Start the wallet if you haven't already and when prompted for Lightning Connection, choose Custom and click Next.
In the next step, you will have to setup your Connection Details. and point Zap to the TLS certificate(tls.cert) and Macaroon (admin.macaroon). Make sure to use absolute paths to the files.
If LND runs locally add 127.0.0.1:10009 as your host, otherwise choose the server's IP address or host followed by the port.
Go to the next step and within a few seconds, you will be connected to your node and ready to use Zap.
If you've previously opened channels and made some transactions you'll see them in Zap immediately.
Enjoy!