Author

Topic: SPV-grade block provider (Read 509 times)

legendary
Activity: 1232
Merit: 1094
May 04, 2014, 06:54:55 PM
#1
One of the functions of full nodes is to provide Bloom filtered data to SPV clients.

This function doesn't require a fully validating node.

It would be possible to create a simple node that performs this function.

It could download the header chain and then the blocks.

The only validation would be to make sure that merkle root in the block is correct and that the headers meet difficulty.

If a SPV client asks for a merkleblock, it could provide that information.

Nodes of this type would take some load off full nodes and allow them to concentrate on validation and not have to provide Bloom filtered data for SPV nodes.

On the other hand, if there was to many SPV block providers, the full nodes could become isolated from each other.

SPV block providers have no way to validate new transactions.  This means that they shouldn't relay them.  This would cause blacklisting and block some of the anti-DOS protection of the network.

They can (and should) forward block headers and full blocks.  There is black listing risk, since they could all end up blacklisted, if an invalid block is broadcast.   The node could wait until a second confirm before forwarding the block, but then it doesn't help with up to date merkleblocks.

It is important that full nodes remain as a connected network.  If a services bit was added, then they could find each other.

Even without that, a heuristic could be used.  If a node is claiming to be a full node, but hasn't forwarded any transactions, it is probably a SPV block provider.
Jump to: