Build Your Own Wireless Bitcoin Service Provider — Complete With Blockstream Satellite Backhaul

grubles
Blockstream Engineering Blog
7 min readJun 24, 2019
No internet? No problem!

tl;dr: A guide to use WiFi to connect your local area with Bitcoin and arbitrary data received with Blockstream Satellite.

Steps:

Build a Blockstream Satellite Receiver
* Install Ubuntu 18.04
* Install Blockstream Satellite software
* Align the dish to the satellite
Connect WiFi Hardware to Satellite Receiver
* Configure Connection Sharing
* Hand out IP address to clients
Part 2: goTenna Mesh Integration
* Coming Soon

Intro

Blockstream Satellite beams down Bitcoin data to nearly all of the populated areas of Earth. Anyone can receive the data for free, and it’s possible to run a Bitcoin node strictly off of the Satellite broadcast. But it requires some extra hardware and technical knowledge in order to receive the Blockstream Satellite data.

Because there is a technical barrier to setting up the satellite hardware, some people may be unable to utilize the satellite feed to keep a fully validating Bitcoin node up to date. There is a way to allow them to sync though — use WiFi to re-transmit the Bitcoin data! Since practically every device has a WiFi radio in it, all one needs is to be within range of a WiFi access point to be able to sync a full node. A single Blockstream Satellite receiver can potentially connect entire neighborhoods, or even larger areas, with Bitcoin data. All without the need for traditional internet infrastructure. Essentially, we are creating a small network and connecting it to the global Bitcoin network using the Blockstream Satellite downlink as our backhaul. Use a mobile Android device with the ABCore app, or use a laptop or workstation with Bitcoin Core to sync the Bitcoin data similarly to using an expensive broadband internet connection. It is also possible to broadcast new software source code and binaries via Blockstream Satellite so that users can upgrade or run new applications.

There are a lot of cool things that can be currently done with this type of setup. A few examples (keep in mind this is all offline and separate from the general internet):

WiFi Hardware

With the right kind of WiFi hardware, all it takes is connecting an access point to your Satellite-connected computer with an Ethernet cable. The operating system for our Blockstream Satellite node will do most of the networking magic for us. Your computer must at least have a USB port (for the Software Defined Radio device) and an Ethernet port, and must be able to run the Satellite receiver software plus a Bitcoin full node. But that isn’t a big deal these days since the CPU requirements have drastically been reduced. You can use a cheap Rock64 or a Raspberry Pi 3 perhaps. This tutorial is intended to be as easy as possible, so the computer used is a semi-modern Dell laptop and the operating system used is Ubuntu Bionic (18.04). But one can go crazy with this and modify the goTenna to have a much larger antenna, have more advanced WiFi networking hardware, or have an Iridium satellite uplink for broadcasting data.

Additionally, as in the featured image for this blog post, one can even have everything battery powered and completely mobile if needed. Park on top of a parking garage, deploy the hardware, and connect a wide area with Bitcoin data. It can be a pretty covert operation if required.

WiFi access point designed for outdoor use

The WiFi device used here is a relatively cheap ($63 USD) “Wavlink Arieal HD2”, which is designed to be used outdoors and is IP-65 rated (“water resistant”). It supports Power-Over-Ethernet so only one cable needs to be connected to it (the Ethernet cable). More importantly, it supports “AP mode” which is essentially just bridging devices connected to it to a wired network (the wired network in this case simply being the laptop <-> WiFi AP). Using this mode, we can allow devices to join our wireless network and have access to the Satellite node to sync Bitcoin data.

Installing Ubuntu

Ubuntu provides simple to follow install tutorials that include screenshots. It’s recommended to use them to get Ubuntu on the computer chosen for rebroadcasting blocks. All that is required is copying the Ubuntu ISO file to a flash drive, booting the computer with it, then following the simple Ubuntu install process.

Once the bootable USB drive is created, follow the next tutorial.

Blockstream Satellite

Putting together the Satellite hardware is pretty straightforward. I have put together a tutorial here, which is intended to be as easy as possible to follow.

After you’ve assembled your satellite dish and installed Ubuntu on your computer, you can quickly install the software that processes the Blockstream Satellite signal using these commands in a terminal:

$ sudo add-apt-repository ppa:blockstream/satellite
$ sudo apt-get update
$ sudo apt-get install satellite

Once you’ve plugged in your SDR (the USB device connecting the satellite dish to your computer), you can fire up blocksat-rx-gui with the following command and begin to align the dish to the satellite appropriate to your area.

$ blocksat-rx-gui -f <the frequency you calculated>

Find out how to calculate the frequency required here.

Aligning your dish to the satellite is fairly tedious, and requires some trial and error. Adjust slowly and in small increments. Keep in mind that the satellite is thousands of miles away, so a tiny misalignment means you’re off by thousands of feet potentially.

Building Bitcoin FIBRE

Because the Blockstream Satellite downlink is one-way, and we cannot transmit data back, the data stream uses a special protocol to ensure we are reliably receiving the data transmitted. As a result, we need a special version of the Bitcoin Core software called Bitcoin FIBRE.

Compile FIBRE by inputting these commands into the terminal:

Install the dependencies first:

$ sudo apt-get install git build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3 libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev

Download the source code:

$ git clone https://github.com/bitcoinfibre/bitcoinfibre
$ cd bitcoinfibre/
$ git fetch origin pull/12/head:ooob
$ git checkout ooob

Finally, build FIBRE:

$ ./autogen.sh
$ ./configure
$ make && sudo make install

Once FIBRE is built, fire it up to start syncing and/or to start receiving new blocks via geosynchronous orbit ;-).

$ bitcoind -fecreaddevice=/tmp/blocksat/bitcoinfibre

Alternatively, acquire the blockchain data from a different source such as from a friend who has the data stored locally.

Enable WiFi connection sharing

Ubuntu provides an easy to use GUI-based way to enable connection sharing. Using this, users can connect to the WiFi access point and immediately be able to connect to the Blockstream Satellite node to sync Bitcoin data.

Simply open up a terminal and type in:

$ nm-connection-editor

Then follow the video to enable connection sharing:

That’s it! Now take the IP address listed with the $ ip addr command (in this case 10.42.0.1) and hand that out to users so they can connect their fresh unsynced Bitcoin Core or ABCore nodes to the Satellite node and start syncing!

Users can connect to the Satellite node using their full nodes with this command with bitcoin-cli or the debug window in the Bitcoin Core GUI.

$ bitcoin-cli addnode add 10.42.0.1

Or, using the Bitcoin Core GUI:

addnode add 10.42.0.1

Using this setup, not everyone has to run a Blockstream Satellite node and maintain the associated software and dish hardware. One Blockstream Satellite node can now provide many people with connectivity, so that they can download Bitcoin blockchain data and verify it.

Broadcasting Data Via Blockstream Satellite

Want to send messages, pictures, or other files through space and back to the global Blockstream Satellite coverage area? There are a few ways to do so.

Spacebit.live is a web page that allows easy message broadcasting.

Blockstream.com/satellite-queue allows any type of file to be broadcasted globally via the Satellite network.

It’s really easy to build applications using the Satellite API. If you’re interested, check out the documentation.

Be sure to also follow the Blocksat Transmission Feed Twitter account to see all of the messages people are broadcasting.

Thanks for reading!

-grubles

--

--