10

This answer is a slight modification on the description used in Bitcoin Optech Newsletter #43. Full credit and thanks to Dave Harding! BIP158 introduces Compact block filters, which are are based on an efficient method for encoding a list of equally-sized items. In the case of the "basic" block filters described in the BIP, this is a list of all the ...


8

Dorier is correct that Neutrino/SPV nodes are not full nodes, because they do not verify the entirety of the blockchain, leaving potential room for attack. However, the portrayal that Neutrino is no better than other SPV modes is not correct. Neutrino is a form of SPV which improves greatly over other implementations in regards to privacy. All SPV modes ...


6

Bitcoin Core 0.21+ support BIP 157, but not necessarily by default. In 0.21, it is default to off. You can enable it by adding peerblockfilters=1 to your bitcoin.conf file.


5

It appears that btcwire is the Bitcoin p2p module of btcd and neutrino is Lightning Labs's implementation of BIP157/158 (compact client-side block filters (CBF)). I suspect that the agent identifier btcwire 0.5.0/neutrino indicates LND (Lightning Network Daemon) instances which are configured to allow or prefer CBF for synchronization. Given your experience ...


4

To enable the compact block filter, you need to start bitcoind with the -blockfilterindex=basic (or simply -blockfilterindex) command line option, or put that option in your bitcoin.conf file. Depending on your hardware, it may take a few hours to build the compact block filter index. This is done in the background and does not affect normal node or wallet ...


4

There's no design consideration in Neutrino / BIP157 for unconfirmed transactions, but it's not as much of a concession with context. A light wallet can effectively do nothing with information about an unconfirmed transaction as they can not verify anything about its validity to begin with. At best it is a suggestion that a transaction may have occurred, but ...


4

A HD wallet doesn’t know what indexes of a seed to scan for until the ones prior have been used, which can’t be discovered out of order. To allow for out of order scanning the address gap limit would need to be prohibitively large, and might still result in re-scanning filters if the wallet is particularly active.


4

They can lie to you about the filters, yes. However due to the filters being deterministic you can query other nodes for the hashes of their filters to gauge relative correctness. You can also use a watchtower like service to give a trusted set of the filters in some cases. The original design document includes an extension for committing to these filters ...


4

The data-structure is encoding a set which means it is not encoding an order. If you draw numbers uniformly at random from some universe then sort the result (thus destroying the order information), the differences between the numbers follow an exponential distribution. The GCS uses a golomb coder to efficiently store these differences. The sort method used ...


3

No, it would not. A node that uses BIP 157/158 is not a full node. It is not downloading every single block and making sure that all blocks and transactions are valid, thus it is not a full node. You can already run a full node without storing the entire blockchain. For a very long time now, Bitcoin Core has supported pruning where it discards old blocks ...


3

Building on the great answer by Andrew: 1) What is this "neutrino" refered above? Where as BIP 37 generates a client side Bloom filter including the HD wallet addresses, BIP 157/158 "Neutrino" creates a server side [can be any Bitcoin full node] Golomb-Rice filter including all transactions in a valid Bitcoin block. You are no longer querying if a ...


2

would it be possible for the full node serving this request to attack the Neutrino node by providing a fake block filter that omits certain transactions? Yes. Indeed, the protocol actually specifies that data carrier outputs (OP_RETURN outputs) are always excluded from the filter. Do block filters include a mechanism that enables the thin client to ...


1

No, you essentially have to do exactly that: test the block filter for each address that might have gotten used by your wallet. That might not be quite as bad as you seem to think, though. Deterministic wallet backups usually come with a master secret and the derivation path. If you have both these pieces of information, only one derivation path needs to be ...


1

1) What is this "neutrino" refered above? Neutrino is an addition to the Bitcoin P2P network protocol which enables more private SPV wallets. How it works is that nodes will create a "filter" for each block and relay those filters to SPV wallets. Those SPV wallets can then check if any of their addresses appear in the filter. If they do, they can request ...


1

This reddit comment including the links therein should answer your question


Only top voted, non community-wiki answers of a minimum length are eligible