Lightweight clients Flashcards
simple payment verification
Do not store entire blockchain nor validate all transactions
Only perform some verifications and offload most of the others to fullnodes
SPV clients request full blocks from a given height on, verify proof of work and check difficulty, check if their transaction is in merkle tree
SPV Problems
If all connections are dishonest wrong chain may be obtained also spv client can be DOSed
If one connections is secure then SPV client is secure => always aware of longest chain and able to receive and send transactions
=> many clients little full nodes
Bloom filters
n bits space and k independent hash functions
for all k hashfunctions compute h_k(s) for all s in S
if h_k(s) mod n set A[h_k(s)] = 1.
False positives exist => 0.1 %
Problems with bloom filters
If both public key and address are in filter it can be checked in the filter => cant be false positive => dont use address and public key
If users have less addresses than 50 and bloom filter is designed for 50 than the false positive rate is too low and all addresses are leaked.
If adversary has access to two bloom filter(due to restart) and A is in both it is very unlikely a false positive => dont change seed
If bloom filter is resized create new filter instead
Other ideas for lightweight client serving?
Could also use TEEs