As part of our on-going Tweetstorm Series, we showcase excellent Twitter threads on the most interesting topics in the industry and publish them here on Decentralize Today.
Today we feature Neil Woodfine, Marketing & Communications Director at Blockstream. He was formerly working on business development and marketing for bitcoin startups Wyre, Remitsy and OKCoin, and is developing the open source bitcoin storage protocol for companies, Cerberus. This tweetstorm goes into detail about how Bitcoin can and will work with or without the internet, and how it is not just a software revolution but also a hardware one. Check out more of his tweets on Twitter @nwoodfine.
So, will Bitcoin work without the internet? Strap in and check out the answer in this epic tweetstorm!
"What happens when the internet gets switched off?"
Despite the best hopes of many salty nocoiners, a surprising number of great engineers have been thinking about how to keep bitcoin running in offline environments. Bitcoin is as much a hardware revolution as it is a software revolution. If your private keys are on someone else's device, the bitcoin are not yours. If your full node is in the cloud, it's not you verifying transactions.
And if you're totally dependent on someone else's network hardware for access to the bitcoin network, then you're at risk of being cut off when things go wrong. Some reasons you might want to transact "offline" include:
a) Lack of internet: in developed, urban areas, we're spoiled for internet access. But there are plenty of places where that doesn't apply: developing economies, remote villages, islands, mountain regions, etc.
b) Cost of internet: global online penetration rate is still only 57 percent. Developing economies are faced with the double problem of both high cost of bandwidth and low wages relative to developed economies.
c) Redundancy: most people only have two ISPs (home & mobile), meaning there are a small set of trusted 3rd parties that users depend on for their access to bitcoin—they can make mistakes, be affected by disasters, or be compelled to act against their customers. If you're an individual dependent on bitcoin for your financial life, then you cannot afford to be cut off from bitcoin. This applies doubly so to businesses such as miners and merchants. A single day without bitcoin might cost millions.
d) Privacy: Another problem with conventional internet is surveillance. Running a full node can be easily detected, which is tied to an IP address, which can be tied to a physical address, which can direct some very bad people to you and your family.
Before going into solutions for using bitcoin offline, let's look at the challenges.
Challenge 1: Transaction data ultimately need to be delivered to miners, via an internet-connected device. Therefore, offline solutions are really "internet-minimised."
Challenge 2: The solutions ideally need to be suited for low-power environments. In a natural disaster, power is usually also unavailable. Users may need operate on battery power, or a generator during longer outages.
Challenge 3: The resource requirements of running a bitcoin full node (~20GB/month). Bandwidth capacity on non-internet, cheap, consumer-grade networking options is usually low. (Btw, big blocks anyone?)
Non-Challenge: One thing you really don't need to worry about is the bitcoin transaction data size. A transaction can fit in ~250 bytes of data. It is easily transmitted, it is easily hidden. There is no stopping this data.
The first step in using bitcoin offline is running a full node—we need to be able to verify our offline transactions are being committed to the blockchain. But this requires some serious data bandwidth. That's where @Blockstream Satellite comes in. Blockstream Satellite uses teleports around the world to beam bitcoin blockchain data to four geostationary satellites around the Earth. These satellites then broadcast this data to almost all populated landmass in the world.
Bitcoin blockchain data is probably passing through you right now. To pick up the signal, you need less than $100 of equipment, including a standard TV satellite dish, an SDR ($24 on Amazon), and a basic computer (a Raspberry Pi will do). That's all that's required for an offline bitcoin full node, resolving many of the issues above: it can be used anywhere; it's totally free to use; if the local internet goes down you still have access; it's passive so no one knows you're receiving bitcoin data. Here's a diagram of our single, offline satnode. We're going to be building on this later. But first some key notes: a) it's download only—no sending data back; b) requires its initial sync via the internet (for now!); c) it's not as trustful as you might think:
A bitcoin node enforces its own rules on any data received, so any change in protocol would be rejected; the blockchain data has already been verified by miners and should have the associated PoW applied; and a user can perform spot checks via a 2nd channel. Not everyone wants to go to the trouble of setting up a satnode. That's okay, because a single satnode can provide bitcoin blockchain data to a whole area via wifi rebroadcasts. Only simple, low-cost, low-power equipment required. With a satnode and wifi rebroadcasts, we now have many computers in a local area connected to the bitcoin network, trustlessly verifying the blockchain, completely offline. But we still have those pesky transactions to take care of.
One option for sharing transactions is mesh networks: networks of nodes, not centrally-owned or controlled, that connect directly to each other dynamically, relaying data from and to other nodes in transmission range. Mesh networks are a last mile solution when it comes to bitcoin. Nodes have limited range. It might be easy to get a tx across a dense network of nodes in a city, but good luck getting from one country to another. At some point, one of the mesh nodes on your transaction's route needs to be connected to the internet, so that it can relay the data to the wider bitcoin network ("internet-minimised," remember?).
The first option for hooking up to a mesh network is the @goTenna Mesh. Works with desktops and Android, has a 6km range, all in a friendly consumer package. It has a Blockstream Satellite integration, so getting it up and running is relatively straightforward.
Another interesting mesh networking technology emerging in bitcoin is LoRaWAN. Popular in the maker industry and powering The Things Network (IoT applications), LoRaWAN is pretty raw right now, but a nice, open standard that should develop fast. LoRaWAN chips work in extremely low-power devices, offer 7km ranges, but bandwidth is tiny—txs need to be broken up and sent slowly. Check out @tulipan81's video:
With the introduction of the mesh network, our satnode's local area is now able to trustlessly send and receive bitcoin transactions by relaying tx data across the mesh to an internet-connected mesh node. Mobile wallets can also connect in this manner. Mobile devices can also help with building out our offline bitcoin network. Transactions can be relayed to an internet-connected device via text messages. Some tools for this include txTenna, @SamouraiWallet's Pony Direct, and @pavolrusnak's SMSPushTX.
We now see a really resilient network taking shape. Only one of the devices shown has an internet connection, yet all can transact, and the nodes are still trust-minimised. Note that the diagram does not capture all the hops possible, we can still add more devices.
And there are still MORE POSSIBLE CHANNELS! Upon researching this presentation, I discovered there were far more projects than I had time to cover. One thing's for sure: there's no "turning off the internet" on bitcoin. Some honourable mentions:
Amateur radio: Using low band, users can transmit low-bandwidth tx data around the world on very little power. Requires a license, but in a disaster or tyrannical regime...low priority. @nvk has the best presentation on this that I found.
Iridium Go: a bidirectional satellite service that allows users to both receive & send data anywhere in the world. Again, it's low bandwidth, so couldn't support a full node, but would work great as a transaction data relay in our mesh, or for block header spot checks.
@OPENDIME: Another contribution from @nvk, Opendimes enable a trust-minimised "sneakernet"—giving people the power to physically carry bitcoin values to their destination (or a relay) and privately trade them with each other as a bearer asset. Recipients still need to verify that the Opendimes hold the values the spender claims them to have. In an offline environment, @Blockstream Satellite could help. @arbedout's recently hacked-together Opendime gadget looks promising for this HERE.
Cubesats: Relatively cheap to put into orbit, the drawback of cubesats is their lower, non-geosynchronous orbit, which means they have a short lifespan and need expensive gear on the ground to receive signals. Maybe someone will work it out.
Ultimately, any communication medium can support bitcoin transactions. Data is data. In addition to all the solutions described above, there are a few awesome tools that can support bitcoin usage across many or all channels.
Blockstream Explorer: offers zero tracking, Tor support, and a handy tool to easily broadcast transactions. Based on the open-source esplora codebase, which can be used by satnodes to provide a self-hosted blockchain explorer to their local area over wifi.
Samourai Wallet: bitcoin wallet: integrated with txTenna, providing simple broadcasts of txs over a mesh network. The Android app also supports Opendimes for easy balance checks and sweeping. The @SamouraiWallet team even provide a whole open-source suite of tools for transacting over "alternative" mediums called MuleTools.
@grubles has produced a really neat Python script for hiding bitcoin transaction data by encoding the data as human-readable text: https://gist.github.com/grubles/41a8ab74afe2cee6ef7128b07438455b
PSBT: Not only does PSBT provide an efficient, standardised format for moving multisig transactions around offline networks, but it can also be used as a tool to incentivise the relay of bitcoin transactions to the wider internet.
As discussed by @nvk (again!) in this video, a bitcoin transaction sender can include a small extra output to a *public* private key, which acts as a "relay fee" available to the first person who can broadcast the *whole* transaction to the internet. Cool!
Some things to look forward to on the "offline bitcoin" front: a major update to the Blockstream Satellite service (be aware: will require some small hw updates); Blockstream Satellite kits; general cost, size, speed, and UX improvements for the solutions above.
Some final words: Imagination-less sour grapes out there might suggest that these offline solutions are the product of tinfoil-hat paranoia, that the threats are low to impossible. However, bitcoin is precisely built with these kinds of edge cases in mind. Bitcoin endures because the engineers that build it expect the unexpected. Money is a dangerous game, and any weaknesses, no matter how small, will be exploited. Increasingly, people and businesses will be unable to afford being cut off from bitcoin. The odds are not even that remote. We already see internet infrastructure failing, natural disasters knocking out connections for days, authorities becoming increasingly bold with their internet interventions.
Offline bitcoin is not just about redundancy and censorship resistance. It's also about participation. Most of us live with high salaries and low-cost internet. Not everyone has that. Those that don't often have the most to gain from bitcoin.
One thing's for certain: bitcoin is no longer reliant on terrestrial internet. As the world becomes increasingly dependent on bitcoin for their economic lives, internet deficiencies and disruptions will become less impactful as bitcoiners route around them.