<p>It turns out that sharding a distributed blockchain <a href="https://www.reddit.com/r/ethereum/comments/8g1q55/vitalik_teases_sharding_release_on_twitter/dy85pq0/" rel="nofollow noreferrer">is possible</a></p>

CC BY-SA 3.0
2018-05-01T08:32:01.957Z
2018-05-01T08:32:01.957Z
Awalias
<p>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. </p>

<p>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.</p>

<p>So in that regard pruning doesn't help mobile devices much.</p>

CC BY-SA 3.0
2015-10-16T10:32:24.847Z
2015-10-16T10:32:24.847Z
Jannes
<p>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?</p>

CC BY-SA 3.0
2015-10-16T09:53:54.900Z
2015-10-16T09:53:54.900Z
David Schwartz
<p>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. </p>

<p>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. </p>

CC BY-SA 3.0
2015-10-18T03:09:42.797Z
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
CC BY-SA 3.0
2015-10-16T19:39:03.883Z
2015-10-17T16:53:51.297Z
2015-10-17T16:53:51.297Z
k kurokawa
<p>"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.</p>

<p>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.</p>

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

CC BY-SA 3.0
2016-07-24T21:18:32.580Z
2016-07-24T21:18:32.580Z
Meni Rosenfeld
<p>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.</p>

CC BY-SA 3.0
2016-07-24T21:11:37.427Z
2016-07-24T21:11:37.427Z
Gérard Dréan
<p>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',</p>

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

<p>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.</p>

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

<blockchain><ethereum>
Why is sharding not possible with a distributed blockchain?
Awalias
# Why is sharding not possible with a distributed blockchain?

(Asked by: username_0 on 2015-10-16)

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!

**Tags:** blockchain, ethereum


---

## 6 answers

### Answer by username_0 on 2018-05-01. Score: 0 | Accepted answer

It turns out that sharding a distributed blockchain [is possible](https://www.reddit.com/r/ethereum/comments/8g1q55/vitalik_teases_sharding_release_on_twitter/dy85pq0/)


---

### Answer by username_1 on 2015-10-16. Score: 3

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 username_2 username_2 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.


---

### Answer by username_2 on 2015-10-16. Score: 2

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?


---

### Answer by username_3 on 2015-10-16. Score: 1

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.

> **Comments:**
> **username_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.  

---

### Answer by username_4 on 2016-07-24. Score: 1

"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.


---

### Answer by username_5 on 2016-07-24. Score: -2

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.


---

