Why would a skinny node need to know info like this ?

They fairly presumably do not care about precisely which block the transaction was included in, however they most actually care about figuring out the transaction was included within the blockchain in any respect. It simply so occurs that there isn’t a straightforward method to show the latter with out proving which block it’s included in.

As an example a extra concrete interplay (as utilized in BIP37, however different protocols like Electrum’s client-server protocol are comparable). F = full node (the server), L = gentle shopper. That is clearly not an precise protocol dump, however conceptually it is shut.

L: Hello F, I am a light-weight shopper and am all for transactions involving addresses A, B, and C. [filteradd]

F: Okay. [nothing]

L: I’ve synchronized blocks as much as block hash H. [getheaders]

F: Oh expensive, you are behind, there’s additionally block I and J. Listed here are their headers! [headers]

L: These headers look nice, and their proof of labor is legitimate. So eh… does I comprise any transactions I care about? [getdata with MSG_FILTERED_BLOCK]

F: Nope. [empty merkleblock]

L: Okay… what about block J [getdata with MSG_FILTERED_BLOCK]

F: Oh sure, right here is transaction T that entails considered one of your addresses! [merkleblock]

L: That appears like a transaction that certainly pays me… however are you able to show it is really been included within the chain? You already know, I do not belief you actually and you can be giving me an invalid transaction, or one which spends cash that has already moved within the chain. [nothing]

F: Fantastic, here’s a Merkle path that proves T is in reality included in block J. [part of the earlier merkleblock message, actually].

So the purpose is that with out the proof, F may very well be claiming that L acquired paid, whereas the transaction is invalid. Having it included within the chain makes that very costly, assuming different nodes within the community really implement validity of transactions within the chain.

There’s a caveat after all. There isn’t any manner that F can show to L that block I did not embrace any attention-grabbing transactions. The answer to that’s both trusting the server, or attempting a number of – neither could be very satisfying.

Source link


Please enter your comment!
Please enter your name here