Try downloading the entire Bitcoin blockchain onto your phone. It's a hefty chunk of data, some 200GB at last count. While some high-end smartphones might be able to cope with the load, it's way too big for most of us--and that's important, especially when it comes to making transactions on mobile.
This is why we use wallets. These are apps that allow you to access great hulking blockchains without having to store all that data locally. The problem is, these wallets are often reliant upon third-parties to execute transactions, store private keys and access funds. This isn't the decentralized, trustless dream we were promised. We were supposed to be in control of our money and no one else. Not a bank, not a company, no-one. So, it seems odd to trust a wallet provider, many of which have fallen foul of hackers. Luckily, there’s a solution being worked on and it might be ready within six months.
Light clients are like having a thinned out version of the Bitcoin blockchain stored on your phone. It only stores some of the data, enough to let you connect to the network but not too much to fill up your phone. You don't need all those third parties to make a transaction, you get direct access through the client. Sounds dreamy, right? Well, sort of. The problem is, it’s hard to verify Bitcoin transactions without possessing the whole blockchain (as each transaction links back to a previous transaction). But, Bitcoin developer Jimmy Song thinks his latest project, the Neutrino light client, has fixed many of these issues.
What is Neutrino?
Neutrino is a Bitcoin light client designed with mobile devices in mind. It is based on two Bitcoin improvement proposals, BIP 157 and BIP 158, which make it easier for light clients to interact and carry out transactions on the blockchain. It allows users to keep control of their own private keys, so they don’t have to trust a third party and has a few extra security measures thrown in.
At present, most Bitcoin light clients can't check the entire history of the blockchain to verify if a transaction is genuine—the method used to check them normally. So they normally rely on third parties to feed them that data. That's a weak point, and a hacker could intercept data flowing from the third party to the light client and feed it false information.
“Most wallets use some trusted third party. There is a protocol which lets you query random nodes on the network that gets you to do a lot of the communication,” Jimmy Song, developer at Neutrino, told Decrypt, adding, “What’s wrong is there’s a bunch of vulnerabilities on the server and the light client neutrino fixes a lot of that. It’s more secure, you don’t have to trust a third party server.”
Neutrino makes a few concessions to fix these potential problems. It uses a filter system to check that there is no abnormal behavior on the network. If any is detected, it will request the full block to be downloaded—so it can check the cryptography within the block. Once it has the block, it is able to confirm that the transaction did or didn’t happen. This, obviously, increases the memory requirements as the light client has to download more blocks than it would otherwise.
Song admits, there's still a fair amount of work left to be done. "There is more validation to do on the client side as the client now has to do additional verification to prove that the data sent by the server is true," he said in an article in bitcoin magazine.
However, a few megabytes of memory and a bit more time taken to verify a transaction is probably worth it when potentially hundreds or thousands of dollars are at stake. If you’re going to be your own bank, you should probably start behaving like one.