Blockchains on IoT devices
25 Nov 2016

Assuming you have an application that warrants building a blockchain and further, that it needs to be running on an IoT device, there are a few major implications for your device’s design and cost that follow.

1. You need the full suite of cryptographic capabilities

The smallest device that you’re reasonably going to fit a blockchain application into will:

This excludes most of the cheap/low power hardware platforms and sets a minimum hardware cost starting at around $15.

You could squeeze things harder – Blockchain crypto only requires kilobytes of RAM – but in 2016, your effort needs to be in getting the blockchain side of things right, not in trying to reimplement everything to save RAM.

2. You need flexible storage

You’re going to store a lot of data and update it regularly. A filesystem isn’t a strict requirement, but it’s going to make your life a lot easier.

Most devices have unreliable power and so your life will be a lot easier if you use a filesystem with atomicity and integrity guarantees. Better to re-download and re-verify the last few blocks than the whole chain.

3. You need robust updates

So you will need to be able to roll out updates to your devices quickly and securely.

How you do this in a decentralised manner is an interesting problem. Again, if you’re centralising updates, you might as well centralise the whole database. If you don’t centralise updates, who provides updates, and how do you trust them?

4. Think about what happens as your blockchain grows

Blockchains only grow in length. As transactions are added, the chain gets longer, without bound.

This length is burdensome for Bitcoin right now – we’re at about 80GB, which is about $40 worth of flash memory.

If your device is going to run for say, five years, you need to provide enough storage to last the life of the device, not just the current size of the blockchain.

To address this, many Bitcoin clients only track recent transactions – say, the most recent gigabyte. This reduces the size of the storage required, and importantly bounds it to something predictable. It has two problems:

Both of these problems can be solved (hashes over un-stored parts of the blockchain, DHT/torrents for retrieval), but impose further restrictions on your application. We don’t have concrete, reliable solutions to them right now.

If you’re considering running servers to store more transaction history, the same problems as with IoT updates exist: your company may not exist in a few years and so your blockchain will stop working. Of course, this defeats the whole point of a blockchain!

5. Consider battery life

Devices running the above stack need moderate amounts of power, as far as IoT devices go. At minimum, you’ll need to be fixed to an external power source or have a li-ion battery and charger. You can’t run a Linux machine on a primary coin cell for any length of time.

Most modern devices achieve good battery life by turning off the CPU as much as possible. Blockchains, by their design, require a decent amount of computation just to track the active state of the chain.

6. Mining on IoT devices?

You could, if you really wanted to, but your device will then consume so much power that it will need to be plugged into a wall socket. If you (as a miner) wanted a disproportionate amount of mining power, you could run the same software on a desktop machine (or GPU, or ASIC, or whatever). Using proof-of-work mining on battery-powered devices (e.g. cell phones) is a bad idea.

If you can find a proof-of-stake algorithm that you trust (in 2016, still an open problem) then that would probably be feasible to run on a battery-powered device.

7. Reliable Internet connectivity

Lots of the applications for IoT blockchains require that the device be occasionally offline. This is fine if you’re reading data out of the blockchain, but:

8. So we just use cellphones, then?

Pretty much. A modern cellphone with a good Internet connection ticks all of the boxes. Thanks to economies of scale, you can’t build custom hardware cheaper.

comments powered by Disqus