3

This question is a good 3 to 5 years late on the crypto trend but nevertheless I'm still having trouble to understand.

The chain works by verifying every previous block, right? How does this not become an exponential problem?

Say I want to join the network and start a node, I have to fetch the entire block chain which:

  1. Can grow to unlimited size?
  2. I have to verify, by checking every block of theoretically unlimited count?

I do believe the crypto currency can not grow as it does by having such fundamental flaws, but I seem to not be able to find the solutions to them.

4
  • I just recently downloaded and started a fresh copy of Bitcoin Core. Yes, it started by downloading the entire blockchain, and validating every single transaction since way-back-when (2009?). It took a bit less than 1/2 Terabyte, and about 2 days on a modern desktop PC.
    – abelenky
    Jan 7 at 16:55
  • @abelenky indeed, and that will only get worse. There surely must be a solution for this?
    – php_nub_qq
    Jan 7 at 16:56
  • Not sure what you mean by worse: 1/2 terabyte and 2 days to start up a new node after 10 years (without even using a massive computer network) is no big deal. In another 10 years, computing power, networking and storage will all be cheaper and faster. The overhead just isn't that worrisome.
    – abelenky
    Jan 7 at 16:59
  • 1
    People said the same thing in 2015, and it still takes me roughly the same amount of time to start a fresh node today. Technology improvements exist and have allowed bitcoin to scale despite the growing size of the blockchain.
    – m1xolyd1an
    Jan 7 at 21:29
4

The chain works by verifying every previous block, right? How does this not become an exponential problem?

I think you are assuming Blockchain growth is exponential with time, but it is linear with time (1MB / 10 min).

I have to verify, by checking every block of theoretically unlimited count?

In an extreme scenario, you are right. In the year 3000, we will have ~100 TBs to download and verify and it will keep on increasing ever after. But it's not as bad as it sounds like.

  1. The rate of growth is low: Because it grows linearly with time, at a given time you will always have a finite amount of data to download and verify. As others have mentioned, there are solutions like SPV and node pruning in order to avoid full storage. If you want to run a full node with entire blockchain stored locally, this rate of increase 1MB/10min is considered small relative to the rate of growth of technology.

  2. Increased efficiencies of node resource utilization: A lot of effort goes into managing the node resources to optimize network bandwidth, disk block compression, verification speed in order to mitigate to downfalls of ever-increasing blockchain size. In fact, if you look at the historical bitcoin-core Initial Block Download times, you will find these times have kept the same or improved over time despite the increasing blockchain size.

3
  • But if rate is limited linearly then it will be unable to fulfill an exponential increase in adoption?
    – php_nub_qq
    Jan 27 at 18:32
  • There are other layer 2 scaling solutions like Lightning network that don't require everything to be published on blockchain.
    – sanket1729
    Jan 27 at 18:42
  • We have a saying - "patched work". I'm not really sure how that would translate to English but that's very much what this looks like to me. Everyone is free to draw their own conclusions, thank you for your time you took to answer :)
    – php_nub_qq
    Jan 28 at 7:31
3

Running Bitcoin Core is not a problem for modern computers, and as computer technology is always improving, it will be able to keep up. Computers are very good at processing blockchain data, and that data will be finite not infinite.

If you get involved with Bitcoin core on GitHub, you will get an insight into how it works and you will find other people that can explain that what you are worried about is not a problem (better than me).

https://bitcoincore.org/

https://developer.bitcoin.org/

https://github.com/bitcoin/bitcoin

3

Can grow to unlimited size?

The bitcoin blockchain is designed to produce 1 block (1-2 MB) every 10 minutes. The difficulty of producing blocks is readjusted about every 2 weeks, so that this frequency does not change.

I have to verify, by checking every block of theoretically unlimited count?

Since the size is limited, the blockchain growth can be kept under control, but yes, if you want to be 100% sure that you are verifying your bitcoin transaction properly, you are going to have to use a bitcoin full node and download the full blockchain which is around 321Gb as of today. There are of course lots of solution to avoid this, and most bitcoin user don't run their own full node but use Simplified Payment verification or the pruned mode that allow you to avoid having to store the full blockchain.

3
  • You right, I fixed it
    – Saxtheowl
    Jan 7 at 16:35
  • Thank you, but I still don't understand how the problem of infinite size is solved? SPV seems to still query the chain even if from the network, how are nodes going to keep up if the size increases to infinity?
    – php_nub_qq
    Jan 7 at 16:52
  • @php_nub_qq, I have written another answer detailing your comment
    – sanket1729
    Jan 26 at 23:17
1

Say I want to join the network and start a node, I have to fetch the entire block chain which:

  1. Can grow to unlimited size?
  2. I have to verify, by checking every block of theoretically unlimited count?

You only have to do that if you want to verify that none of the system's rules were violated at any point in its history. If you don't want to verify that, then don't bother. Nothing requires you to fetch them and check them.

If you don't care about ancient history, you can fetch the state of the blockchain as of some point in time. You can ask other people who have checked the history what the hash of the UTXO set was at that point. And then you can fetch that set and all the blocks after that.

If you only care that no more coins are in existence than are supposed to be and that the system's rules aren't broken after you start using the system, then you can fetch a minimal history set and not every block ever produced.

Another problem that you didn't mention is that if you were going to verify the full validity of every block ever produced, you would also have to understand the system's rules (including any bugs) for all previous times in the blockchain's history. For complex and evolving blockchains, that's also a huge problem.

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.