This link mentions that
"[[[[getdata]can be used to retrieve transactions, but only if they are in the memory pool or relay, arbitrary access to transactions in the chain is not allowed … "
But can not an SPV node perform the following operations to have arbitrary access to a T transaction (I assume that the SPV node knows the H block hash of the B block containing T):
- set a bloom filter using filter charge for T at a complete node
- to send getdata query of type MSG_FILTERED_BLOCK and hash block H
- then, in response, the complete node will generate two messages for the SPV node: first, a control block of B; and secondly, the transaction T (as mentioned here and here)
Does this mechanism not give arbitrary access to transactions?