13 votes

What's the distinction between BIP 157 and BIP 158? Are they supported by Bitcoin Core?

BIP157/158 Overview 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, ...
jnewbery's user avatar
  • 1,060
8 votes

Could Neutrino technically as side-effect, incentivize centralization of the bitcoin network?

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 ...
Mark H's user avatar
  • 3,334
6 votes

The use of Bloom filter in SPV nodes

I can imagine that an SPV node encodes the transaction(s) it's interested in, into a BF and sends it to full node. What I don't understand is that what does the full node do after that? The full node ...
Nick ODell's user avatar
  • 29.4k
6 votes
Accepted

How does SPV prevent double spending of UTXO?

In a bitcoin transaction, A's address is not scanned for spendable Unspent Transaction Outputs (UTXOs). Full nodes simply check if the inputs of the transaction are really unspent. There is no ...
sanket1729's user avatar
  • 1,380
6 votes
Accepted

How is the Leaf node weakness in Merkle Trees exploitable?

In Bitcoin, inner nodes of the merkle tree are constructed by concatenating two 32 byte SHA256d hashes together. The resulting 64 byte value is hashed to get the next node in the tree. The leaf nodes ...
Ava Chow's user avatar
  • 70.4k
6 votes
Accepted

Could bitcoind support SPV mode by setting different args

No. bitcoind does not have a SPV mode at all. Pruning is not the same thing as SPV because a pruned node still downloads and verifies the blockchain. Just instead of storing all of the blocks in the ...
Ava Chow's user avatar
  • 70.4k
6 votes

Does every node have a whole copy of the blockchain?

To join the network, a Bitcoin full node will work its way through the network history, independently verifying the state of the network through time. So yes, each node will have downloaded and ...
chytrik's user avatar
  • 18.3k
5 votes
Accepted

Is there a light (SPV) version of bitcoin core (bitcoind)?

Yes, bitcoind with pruning is similar to bitcoind, though some RPCs are disabled (naturally, because of pruning). bitcoind in pruning mode does not store the whole blockchain, and can reduce your ...
Alin Tomescu's user avatar
  • 1,337
5 votes
Accepted

Can SPV clients offer "proof of absence" of a transaction?

There is no known way to do this with the current consensus rules nor does it seem likely except via computationally expensive general ZKP. The normal way to make compact proofs of non-membership is ...
G. Maxwell's user avatar
  • 7,727
5 votes
Accepted

Is the idea of fraud proofs possible in reality?

The whitepaper said that SPV clients would avoid accepting a rules violating block by being altered to the violation, downloading the block, and checking for themselves. This is not realistically ...
G. Maxwell's user avatar
  • 7,727
5 votes
Accepted

RSA accumulator vs Merkle Proofs

RSA accumulators are far harder to implement correctly RSA accumulators need a trusted setup (someone, or multiple someones, must come up with a sufficiently large integer that is the product of 2 ...
Pieter Wuille's user avatar
4 votes
Accepted

How does a node find a transaction in the blockchain?

You can read the bip37 specification for all of the gritty details. how does the full node find this transaction (or the UTXOs) in the blockchain? The client builds a filter which contains what ...
Claris's user avatar
  • 15.4k
4 votes

Is there a light (SPV) version of bitcoin core (bitcoind)?

As Alin explained today the lightest version is pruned mode. However there are pull requests for an even lighter version, called full block downloading SPV mode, or full-SPV mode. Keep an eye on these ...
nopara73's user avatar
  • 816
4 votes
Accepted

How do SPV clients acquire transactions from other nodes and verify that they are part of the blockchain?

I found out that SPV has no mempool, but although SPV client is participating in transaction verification. So, what happens when node verifies transaction? Is SPV client checking only owner's outgoing ...
Pieter Wuille's user avatar
4 votes
Accepted

Why does a thin node need to know if a transaction is present in specific block's merkle tree?

Why would a thin node want to know information like this ? They quite possibly don't care about exactly which block the transaction was included in, but they most certainly care about knowing the ...
Pieter Wuille's user avatar
4 votes
Accepted

Running Bitcoin SPV Node

How can I run a Bitcoin SPV node? You run Bitcoin SPV software. They're often called "lightweight clients" or "lightweight wallets". Several mobile wallets implement SPV ...
Pieter Wuille's user avatar
3 votes

Who gives SPV nodes merkle path to do validation for small subset of transaction?

The thin client requests the Merkle branch from any full node that has the complete block available. It is requested by specifying the inventory type MSG_MERKLEBLOCK, usually in response to learning ...
Murch's user avatar
  • 75.3k
3 votes

What is an SPV client?

SPV is Simplified Payment Verification and it is typically contrasted with "running a full node". SPV is around since bitcoin's original incarnation, it has been there since the beginning. It is a ...
scravy's user avatar
  • 149
3 votes

Bitcore full node list with Wallet service enabled?

Nodes don't provide wallet services (like Bitpays Bitcore [don't mix that up with Bitcoin Core]). The only service they provide is SPV transaction filtering (which is much "slower"). Running your own ...
Jonas Schnelli's user avatar
3 votes

How could the Bitcoin protocol be modified so that pruned nodes could still participate in BIP 37 SPV?

Pruned peers do not have the full blockchain history and therefore have only limited value for SPV clients. With Bitcoin Core 0.16, pruned peers will announce their service via NODE_NETWORK_LIMITED (...
Jonas Schnelli's user avatar
3 votes
Accepted

What hardware requirements does a SPV client have?

Bandwidth - You need to receive an 80-byte header about every 10 minutes. In addition, if you want to spend, you will get SPV proofs that range about 500-1000 bytes per utxo. In other words, the ...
Jimmy Song's user avatar
  • 7,759
3 votes
Accepted

Why binary trees? Is there any particular benefit to using binary trees instead of some higher radix?

Bitcoin transactions are not stored in a Merkle tree. That is just one way of representing them. The most common serialization for blocks is just: Header (prevhash, merkleroot, time, nonce, ...
Pieter Wuille's user avatar
3 votes
Accepted

What guarantees the validity of merkle root used in the merkle inclusion proof?

Generally, thin-clients at least download, validate, and store the header for each block. Since the Merkle root is part of the header, they already know all the Merkle roots for the whole blockchain. ...
Murch's user avatar
  • 75.3k
3 votes

Missing transactions from full node

Bitcoin Core uses a 300 MiB limit for its mempool data structure by default. If enough transactions get submitted to the network, this limit will be reached and Bitcoin Core will start dropping ...
Murch's user avatar
  • 75.3k
3 votes

Missing transactions from full node

The full node you are running likely has the standard mempool size (300 MB) and default settings. At the moment (see e.g. https://mempool.space/), transactions with a fee less than 5.88 sat/vB are ...
deyw's user avatar
  • 550
3 votes
Accepted

Legitimate merkle paths for SPV

If the calculated Merkle root doesn't match any of the block headers then the proof is invalid and the TX may or may not exist. That's the default verification state, same as if you never got any ...
bca-0353f40e's user avatar
  • 1,025
2 votes

Are there any POS coin open source mobile wallets implementations?

AFAIU, PoS is considered flawed by large parts of the cryptocurrency community. I've not kept abreast of POS coins, but some that I could think of are Peercoin, NXT and Blackcoin, which are currently ...
Murch's user avatar
  • 75.3k
2 votes

how does a node searches a transaction among various blocks in blockchain?

Transactions are stored in the form of merkel trees inside a block. (I know how a merkel tree is made). A merkel root is calculated and stored in the block header.  All correct. An SPV can ask a ...
Pieter Wuille's user avatar
2 votes

Segwit2x/btc1 block header changes: wipeout protection for SPV nodes?

From following most of what has been going on in the btc1 repository, it is S2x's express plan to take along SPV wallets with their hard fork. Therefore, they are limiting wipeout protection to ...
Murch's user avatar
  • 75.3k
2 votes

What indexes does a Bitcoin Core node maintain to serve Bloom-filtered requests and SPV peers?

Bitcoin Core maintains an index of blocks and their locations on disk. When someone requests a block, it pulls the block from disk, and if they used BIP 37, it will run the block through the filter. ...
Ava Chow's user avatar
  • 70.4k

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