Hi guys I've been reading a lot about the problem of scalability in crytocurrencies and how to run a full bitcoin node is not a possibility on a mobile device for example, as a result we become relient on centralised 'power nodes',

My question is: what is it about the datastructure which makes sharding the full blockchain across many lite devices not possible?

For example node 1 stores blocks 0-100, node 2 blocks 101-200, etc. A node wishing to verify some transaction can then just keep pinging nodes until they connect with a node which is storing the data they're interested in.

Apologies if this is a noob question, still got a lot of learning to do!

6 Answers 6


Your question is a little unclear as it only talks about storing, and not really about validating the entire blockchain. Storing is actually not the problem. Recent versions of Bitcoin Core support crude pruning and work is underway to make it more flexible.

However, to be truly trustless a full node still needs to download and validate the entire history of all blocks (even if deleting that history seconds later). This is what David Schwartz answer comes from: you need a complete history to know whether a transactions was NOT in it.

So in that regard pruning doesn't help mobile devices much.


How would they know which node is storing the data they're interested in? The nightmare scenario is when you need to know that something didn't happen -- for example, that particular asset still exists and hasn't been transferred to someone else. How could you possibly know who to ask about a transaction that may not have even taken place?


Because in order to obtain the current state of account balances in Bitcoin (for example to calculate your wallet balance) , you need to process the entire blockchain from the very beginning. There is no way to partially download the blockchain and verify your account balance.

There are two connected reasons for this. Firstly, blocks only records the movements of funds (i.e, Alice send Bob 10 coins), and do not record account balance (i.e, Alice has 10 coins). Secondly, proof of work demands that you download the chain with the most amount of work (hashing) behind it. The only way to verify which chain has the most work is to download every single block and add up the amount of work behind each chain.

  • 1
    1. "Blocks record movements and not balances" is not a reason: you'd have the same problem of blocks contained balances as you wouldn't know which one was the last balance. 2. You only need to download block headers to know the difficulty, not the whole blocks.
    – Jannes
    Commented Oct 18, 2015 at 3:09

"Not possible" is a strong word. It's just that nobody has yet come up with a design that has been recognized as a sharded alternative to Bitcoin.

And the reason for that is that a node should be able to verify that any given transaction is valid. That's tricky if it doesn't have all the data itself and doesn't trust its peers to give it the complete picture.

Most likely, bleeding-edge cryptographic primitives will be needed to make such a thing work.


It turns out that sharding a distributed blockchain is possible


My proposal made a couple of hours ago seems to address those issues. It involves keeping for each block a list of nodes that carry a copy of that block.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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