I'm considering consuming, or if unavailable, I'm considering providing, a bitcoin blockchain querying service along the lines of json rpc.

Would it be possible for me as a consumer of such as service, to verify the integrity of returned data from such queries, without myself running a full node? (If not there wouldn't be much point using such a service!)

Would it be possible for me as a provider of such a service, to provide enough data for a consumer to verify the validity of the data I send them, when the consumer is not running a full node? (If not there wouldn't be much point providing such a service!)

My end goal is to run something like a bitcoin blockchain explorer website on the cloud, but the cost of running a full node (particularly storage) on the cloud is more than I can afford. Obviously I have some feature ideas I've not yet seen on other explorers

  • Question edited to confirm I do mean bitcoin. I call it a "blockchain querying service" as the service would relate to the bitcoin blockchain, but not extend to (for example) the bitcoin lightning network. – Nigel Sharp Sep 22 '20 at 18:25

You could use the Simple Payment Verification, or SPV, protocol.

In a nutshell, this works by synchronizing only the block headers for the longest chain. Once the chain is established, individual transactions are proven by using merkle paths leading up to the merkle root in the previously synced block headers.

Note that this only allows for proof that the supplied data exists in the chain - it does not allow the user to verify that you have provided them with all data - it is possible for operators on SPV systems to Lie by omission and simply claim a transaction or block doesn't exist.

Consumer wallets usually get around that by querying multiple such nodes - if at least one node is honest, the wallet is able to detect the lie.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.