** Some awesome responses on here by experienced coiners, I want to address some of them, particularly by DannyHamilton **
** This is all from my point of view and experience to date, which is <2 months **
1) I keep seeing "linear growth" mentioned. This is incorrect IMO. The data is growing exponentially, you can see this by checking the blockchain growth charts.
Looks pretty linear to me.
Regardless, the math for the future is pretty simple. Maximum 4 MB per block. Average 1 block per 10 minutes. That's linear growth.
2) Lightweight wallets are fine and dandy yes, but they require 100% dependency on an outside source :shudder:
They are not the best choice for everyone, but if you can't handle synchronizing and maintaining the blockchain they are a workable option. They don't require an outside source at all for securing your bitcoins, nor do they require an outside source for sending/spending bitcoins. They ONLY require an outside source for determining if (and how many) bitcoins you've received. That risk can be significantly reduced by using multiple methods to check.
4) The download is still impossible. Because of the exponential growth, it gets slower and slower as it inches closer to the last year and a half, to the point of ridiculousness.
There was a lot of growth in block sizes for the first 6 or 7 years of Bitcoin's existence, because there was not enough transaction volume to fill the blocks. For about 2 years now the blocks have been full at 1 megabyte per block. So, you'll see it slow down until it is processing the transactions from the year 2016. Then the speed will level off for the remaining 2+ years of data. The introduction of SegWit 6 months ago has allowed for a bit more growth in block size. The maximum was bumped up to 4 megabytes, but the average size isn't likely to grow to be much more than 2.6 megabytes.
It is only ridiculous if you are using insufficient hardware. As I said, I recently started up a new node. It took less than 5 days for me to get completely caught up.
5) Pray, do tell, why the average person doesn't need to store the blockchain?
The blockchain is only needed during initial synchronization. After that, storing it is only useful for assisting others in starting up a new node.
If you WANT to help others start up new nodes, that's great. But, if you are unable to, that's okay. There are many of us that can and will.
Again, imagine if this type of thinking was the modus operative of the Bitcoin Core initiative.
Bitcoin Core implemented pruning specifically because they were aware that it isn't necessary for everybody to store a complete copy of the blockchain forever.
Additionally, Satoshi himself said:
It's not the download so much as verifying all the signatures in all the blocks as it downloads that takes a long time.
- snip -
Simplified Payment Verification is for lightweight client-only users who only do transactions and don't generate and don't participate in the node network. They wouldn't need to download blocks, just the hash chain, which is currently about 2MB and very quick to verify (less than a second to verify the whole chain). If the network becomes very large, like over 100,000 nodes, this is what we'll use to allow common users to do transactions without being full blown nodes. At that stage, most users should start running client-only software and only the specialist server farms keep running full network nodes, kind of like how the usenet network has consolidated.
- snip -
AND
The design outlines a lightweight client that does not need the full block chain. In the design PDF it's called Simplified Payment Verification. The lightweight client can send and receive transactions, it just can't generate blocks. It does not need to trust a node to verify payments, it can still verify them itself.
- snip -
I anticipate there will never be more than 100K nodes, probably less. It will reach an equilibrium where it's not worth it for more nodes to join in. The rest will be lightweight clients, which could be millions.
At equilibrium size, many nodes will be server farms with one or two network nodes that feed the rest of the farm over a LAN.
AND
The current system where every user is a network node is not the intended configuration for large scale. That would be like every Usenet user runs their own NNTP server. The design supports letting users just be users. The more burden it is to run a node, the fewer nodes there will be. Those few nodes will be big server farms. The rest will be client nodes that only do transactions and don't generate.
- snip -
6) I learned something new---> blocks "filling up". So, please correct me if I'm wrong. The size of the blockchain is the sum of two parts: the mined blocks & the ledger
Incorrect.
The ledger IS the mined blocks. The mined blocks ARE the ledger. The blockchain is a chain of blocks of transactions which have a valid proof-of-work.
7) Pruning mode--> neat! But you still need the entire blockchain first before entering this mode.
No. You can set pruning mode before you start synchronization. It will prune old blocks as it downloads the newer blocks. You still need to process the entire blockchain, but you don't need to store it all. That way you don't need as big of a hard drive, and it is easier to stop your node and create a backup once a day during synchronization. Then, if your node crashes in a disasterous way (due to Windoze?) you can pick up from where you left off less than a day ago.
Backups are very important. If you aren't backing up your data, don't cry when its lost. But I'm not going to back up something I don't even have yet. Unless, I suppose, you do a backup of the partial data.
Correct. Backup what you have so far. That way, if you have a disaster, you don't have to start all over from the beginning.
9) If its processing slower now than my old drive, than yes I suppose the specs are worse...I didn't realize how important this was, and should have wend SSD.
Yes. The synchronization process accesses the storage a
LOT. A faster drive (or better yet SSD) makes a HUGE difference.