- Apr 25, 2017
- 4
- 6
Was thinking of a good way to increase nodes, making it something an everyday person can run on their computer or smart phone for example. Obviously the big drawbacks now are the following
1) The initial download of the blockchain (100+GB) heavy bandwidth requirement
2) On low end computing devices, the initial verification and creation of the UTXO database
If you can run a Bitcoin node on a Rasberry Pi, you can probably run it on any smartphone made in the past 4 years hardware wise.
Proposed Solution:
Main Challenges:
Anyways, since there seems to be a "battle of the nodes now," I think this would be an serious project to look into for BU. Imagine if you could get even .01% of the population in a country to run this on their smartphones while they sleep, it would be a huge number of nodes. This would nip the whole "centralization" and anti-scaling arguments right in the butt, since with bigger blocks, if users just are downloading UTXO sets instead of whole blockchain, then the ability to run a node scales with Bitcoin users, not historical blocksize!
edit: adding in a way to combine this as a wallet would be an added extra goal, from my understanding pruned nodes cannot be used as wallets, so I am not sure how difficult this would be to setup. But having a portable wallet + node combo with under 3GB space would be awesome.
Double Edit: I wanted to add, once the node downloads the UTXO set (the initial syncing only), it will continue to download blocks as normal from the network. So it will act as any other pruned node after this point, downloading and verifying blocks, and checking consensus rules, and then additionally you could set the pruned mode to like 2 days worth of blocks (so extra 600MB).
So, essentially its just running a pruned node (like one would today), except the main difference instead of initially download the entire blockchain from peers, validating everything, creating UTXO set database, it would simply download a trusted UTXO set, then continue to act as a normal node from this point on.
So its just skipping the initial blockchain sync, validation and UTXO set creation, by downloading a trusted UTXO set already premade by someone else. After this, it would run 100% identical to other pruned nodes on the network.
1) The initial download of the blockchain (100+GB) heavy bandwidth requirement
2) On low end computing devices, the initial verification and creation of the UTXO database
If you can run a Bitcoin node on a Rasberry Pi, you can probably run it on any smartphone made in the past 4 years hardware wise.
Proposed Solution:
- Allow nodes to sync with current UTXO set only (~2GB space currently, easy for any smartphone to handle), thus bypassing the initial huge download/verification which prevents most people from running node. So a new node can start out directly as a pruned node. This would be similar to download a compiled code instead of compiling the code from source yourself. The vast majority of programs work this way currently for computing.
- User can control data mode to have node active only while on WiFi network or while charging (in case they are worried about mobile data or battery life). For example when you sleep and have your phone plugged in on wifi your phone can be acting as a BU node.
Main Challenges:
- Making sure the UTXO set download is real, since you won't be verifying it yourself. Its possible a bad actor would try to propagate a fake UTXO set
- Solution 1: Have a trusted static repository that allows people to download latest set from a trusted source (like Bitcoin.com could host it or something).
- Solution 2: Have some type of trusted hash/checksum verification of the file that has to match after download to ensure its legit (similar to how most downloads work currently such as Linux distros)
Anyways, since there seems to be a "battle of the nodes now," I think this would be an serious project to look into for BU. Imagine if you could get even .01% of the population in a country to run this on their smartphones while they sleep, it would be a huge number of nodes. This would nip the whole "centralization" and anti-scaling arguments right in the butt, since with bigger blocks, if users just are downloading UTXO sets instead of whole blockchain, then the ability to run a node scales with Bitcoin users, not historical blocksize!
edit: adding in a way to combine this as a wallet would be an added extra goal, from my understanding pruned nodes cannot be used as wallets, so I am not sure how difficult this would be to setup. But having a portable wallet + node combo with under 3GB space would be awesome.
Double Edit: I wanted to add, once the node downloads the UTXO set (the initial syncing only), it will continue to download blocks as normal from the network. So it will act as any other pruned node after this point, downloading and verifying blocks, and checking consensus rules, and then additionally you could set the pruned mode to like 2 days worth of blocks (so extra 600MB).
So, essentially its just running a pruned node (like one would today), except the main difference instead of initially download the entire blockchain from peers, validating everything, creating UTXO set database, it would simply download a trusted UTXO set, then continue to act as a normal node from this point on.
So its just skipping the initial blockchain sync, validation and UTXO set creation, by downloading a trusted UTXO set already premade by someone else. After this, it would run 100% identical to other pruned nodes on the network.
Last edited: