<p>Running a full node allows a user to independently verify the state of the bitcoin network. In order to verify the state of the network, the full node will run through every transaction in every block, and this is only possible if the full node has access to all of the data that comprises the network's history.</p>
<p>If you 'squash' (compress) this information, then the necessary verification cannot take place. Given a compressed piece of data, it does not seem possible to verify the validity of the uncompressed data (according to whatever rules), without having the uncompressed data itself. So instead you would need to trust that <em>someone else</em> had verified this data before it was compressed, and doing so would be counter to the goals of the bitcoin network (ie allowing every user to independently verify the network state).</p>
<p>Further, the blockchain record <a href="https://bitcoin.stackexchange.com/a/40545/63872">is not well-suited for compression.</a></p>
<blockquote>
<ul>
<li>Throw away adresses with a balance of 0</li>
<li>Create a new genesis block containing all adresses that have a positive balance</li>
</ul>
</blockquote>
<p>The bitcoin network does not keep track of address balances, <a href="https://bitcoin.stackexchange.com/questions/49853/utxo-model-vs-account-balance-model">it keeps track of UTXOs</a>.</p>
<p>Note that you can run a <a href="https://bitcoin.stackexchange.com/questions/19920/how-explicitly-can-the-blockchain-be-pruned">full node with pruning enabled</a>, so that old blocks will be discarded from your local storage after verification has been completed.</p>

CC BY-SA 4.0
2021-05-27T07:43:34.137Z
But where is the difference between:  
- Everybody on the network agrees on adding a block to the blockchain
and  
- Everybody on the network agrees on shorting the blockchain in a certain way  
  
Every Node would just have to compare hashes.  
(I cant create newlines here :()
Freehunt
CC BY-SA 4.0
2021-05-27T20:09:42.093Z
@Freehunt nodes that are joining the network need to determine which chain is correct, amongst potentially many different chains. Knowing that the network starts from the genesis block (it is hardcoded in), and that they can follow the consensus rules to determine if any particular chain is valid, will allow them to determine which chain is the longest (and thus valid) chain. If presented with two chains that start from some arbitrary place in history, how could a similar determination be made? Simply having a valid hash isn't enough - the entire history preceding that hash must be valid.
chytrik
CC BY-SA 4.0
2021-05-27T20:14:33.423Z
@Freehunt if you are interested, you could search this site for questions concerning blockchain 'checkpoints' (a largely abandoned idea, but note that `assumevalid` allows similar benefits, with much better trust assumptions). You could also search for information about UTXO-set commitments, they are perhaps similar to what you are considering (eg Utreexo).
chytrik
CC BY-SA 4.0
2021-05-28T11:03:31.317Z
Cool! Thanks for this informations! Love you :)
Freehunt
CC BY-SA 4.0
2021-05-25T18:24:07.400Z
2021-05-25T18:29:12.613Z
2021-05-25T18:29:12.613Z
chytrik
<p>So for some time i was thinking about a process where you &quot;squash&quot; the blockchain.<br />
This would reduce its size significantly while maintaining integrity.<br />
The process would look like this:</p>
<ul>
<li>Summarize all transactions to a certain block</li>
<li>Throw away adresses with a balance of 0</li>
<li>Create a new genesis block containing all adresses that have a positive balance</li>
</ul>
<p>Would this be possible?<br />
What do you think about this?</p>
<p>Ps: Im new to blockchain and this community. So please dont be too harsh :)</p>

<blockchain><genesis-block><storage-footprint><performance>
What do you think about "squashing" the blockchain?
Freehunt
# What do you think about "squashing" the blockchain?

(Asked by: username_0 on 2021-05-25)

So for some time i was thinking about a process where you "squash" the blockchain.  
This would reduce its size significantly while maintaining integrity.  
The process would look like this:

* Summarize all transactions to a certain block
* Throw away adresses with a balance of 0
* Create a new genesis block containing all adresses that have a positive balance

Would this be possible?  
What do you think about this?

Ps: Im new to blockchain and this community. So please dont be too harsh :)

**Tags:** blockchain, genesis-block, storage-footprint, performance


---

## 1 answers

### Answer by username_1 on 2021-05-25. Score: 1

Running a full node allows a user to independently verify the state of the bitcoin network. In order to verify the state of the network, the full node will run through every transaction in every block, and this is only possible if the full node has access to all of the data that comprises the network's history.

If you 'squash' (compress) this information, then the necessary verification cannot take place. Given a compressed piece of data, it does not seem possible to verify the validity of the uncompressed data (according to whatever rules), without having the uncompressed data itself. So instead you would need to trust that *someone else* had verified this data before it was compressed, and doing so would be counter to the goals of the bitcoin network (ie allowing every user to independently verify the network state).

Further, the blockchain record [is not well-suited for compression.](https://bitcoin.stackexchange.com/a/40545/63872)

> * Throw away adresses with a balance of 0
> * Create a new genesis block containing all adresses that have a positive balance

The bitcoin network does not keep track of address balances, [it keeps track of UTXOs](https://bitcoin.stackexchange.com/questions/49853/utxo-model-vs-account-balance-model).

Note that you can run a [full node with pruning enabled](https://bitcoin.stackexchange.com/questions/19920/how-explicitly-can-the-blockchain-be-pruned), so that old blocks will be discarded from your local storage after verification has been completed.

> **Comments:**
> **username_0**: But where is the difference between:   - Everybody on the network agrees on adding a block to the blockchain and   - Everybody on the network agrees on shorting the blockchain in a certain way      Every Node would just have to compare hashes.   (I cant create newlines here :()  
> **username_1**: @username_0 nodes that are joining the network need to determine which chain is correct, amongst potentially many different chains. Knowing that the network starts from the genesis block (it is hardcoded in), and that they can follow the consensus rules to determine if any particular chain is valid, will allow them to determine which chain is the longest (and thus valid) chain. If presented with two chains that start from some arbitrary place in history, how could a similar determination be made? Simply having a valid hash isn't enough - the entire history preceding that hash must be valid.  
> **username_1**: @username_0 if you are interested, you could search this site for questions concerning blockchain 'checkpoints' (a largely abandoned idea, but note that `assumevalid` allows similar benefits, with much better trust assumptions). You could also search for information about UTXO-set commitments, they are perhaps similar to what you are considering (eg Utreexo).  
> **username_0**: Cool! Thanks for this informations! Love you :)  

---

