Neutrino is the newest and coolest light client coming to the bitcoin ecosystem. It has some major differences from the currently widely used simplified payment verification light clients. In this series of posts, we will detail what Neutrino is, why it’s great for wallets, how it works, and some anecdotes about our own experience implementing the Neutrino specification.
Running a full Bitcoin node is the only way to fully validate the blockchain and be sure that you have an accurate view of all of your transactions (as well as everyone else’s). But running a full node is also very resource intensive since you must download every block and validate every transaction, as well as keeping track of all unspent transaction outputs and various other data sets. At the time of this writing, it requires over 250GB (and growing). Although this kind of overhead is not too big a hurdle for certain uses, such as trading, running a full node just isn’t realistic for many Bitcoin users.
In 2012 BIP 37 was created. This BIP proposed the Bitcoin simplified payment verification (SPV) node which allows users to keep track of only the bare minimum that they wanted to while still mitigating a lot of trust. Essentially, an SPV node downloads and keeps up to date the block header chain only, and then tells whichever full nodes it is connected to the addresses and transactions it wishes to know about. These full nodes then notify the SPV node whenever any of these addresses appear in a transaction. Full nodes also provide Merkle proofs that a transaction appeared in a block. Since a block’s transactions are stored in a Merkle tree whose root is in the header, the SPV node can verify that if its headers are correct, then the payment was included in the block.
Essentially all Bitcoin light clients to date have been SPV nodes. This scheme has allowed Bitcoin users to run partially validating nodes with minimal trust with so little overhead that smartphones can easily run them. This is the problem that light clients solve but there are many known issues with using SPV nodes, some of which are not essential to light clients.
The first issue is that if all of an SPV nodes’ peers are malicious, then the node can be easily lied to. This problem is not specific to the SPV scheme but rather seems to be a larger problem faced by any kind of light client (and even causes problems for full nodes). Another known problem with SPV is that servers are vulnerable to Denial of Service (DoS) attacks in which malicious SPV clients spam servers with nonsense addresses, forcing them to go look for them in the blockchain indefinitely.
Lastly, it is known that current SPV implementations offer users virtually no privacy at all. Although SPV clients don’t literally give their peers their public keys, they give them Bloom Filters which match their public keys and leak this information. Of all of these issues mentioned, only the first (and to some extent the second) is not specific to SPV.
In May of 2017, BIPs 157 and 158 were created, introducing a new kind of light client whose goal was to solve many issues faced by SPV nodes. These clients are commonly referred to as Neutrino nodes. Neutrino flips the SPV model on its head: rather than having clients give servers filters for their keys, servers instead provide clients with filters for all script public keys that appear in each blocks transactions. When implemented correctly, this solves SPV’s privacy problem since clients do not give servers their keys. This also renders null the server DoS vulnerability since block filters need only be computed once, so that new clients cannot force servers to do hard computations at no cost.
Not only does Neutrino solve all of these problems that SPV nodes have, but it does so while staying very light and fast! Initial sync for a new wallet on mainnet can be under 20 minutes. This means that you can be up and running on the Bitcoin blockchain in under 20 minutes with the ability to open Lightning channels and everything! Additionally, most mainnet rescans are around 20 minutes as well.
Benefits for wallets will be discussed in more depth in the next post of our DLC series. We will also discuss the details of how Neutrino nodes work, as well as our own experience implementing a Neutrino client, in future posts.
Contact us @Suredbits
All of our API services, for both Cryptocurrency APIs as well as Sports APIs, are built using Lightning technology and the Lightning Network. All API services are live on Bitcoin’s mainnet. Our fully customizable data service allows customers to stream as much or as little data as they wish and pay using bitcoin.
You can connect to our Lightning node at the url:
038bdb5538a4e415c42f8fb09750729752c1a1800d321f4bb056a9f582569fbf8e@ln.suredbits.com
To learn more about how our Lightning APIs work please visit our API documentation or checkout our Websocket Playground to start exploring fully customized data feeds.
If you are a company or cryptocurrency exchange interested in learning more about how Lightning can help grow your business, contact us at [email protected].