Running full node on smartphone with UTXO data only

satoshi420

New Member
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:
  1. 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.
  2. 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.
I know there are a few challenges, but they seem pretty small actually.

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)
However, the challenges will not be as bad as it seems, I am surprised that no one has tried to do this yet. There will not be much incentive for a bad actor to spread a "fake" UTXO set. A fake UTXO set would never verify a transaction with a miner, so you could never steal someones funds with it. At most, it would cause wasted space/bandwidth and a bit of chaos, when people tried to download it, then found out its faked as realize they wasted their time. This is similar to how some Hollywood studios would fight torrenting in the past, by seeding fake torrents of movies themselves, having people download them and waste their time!


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:

KC Ramakrishna

New Member
Aug 9, 2017
1
0
Hi Satoshi 420,
We are working on a smartphone based crypto. I was googling to show someone that this is possible when I stumbled across your post. Will you be interested to know more? We are drafting a whitepaper. Shall I send you a draft ?
 

leonprou

New Member
Jan 3, 2018
1
0
I though of the same idea, I'm starting to work on a prototype of this on a demo blockchain.

Few points to add:
- Downloading the UTXO is problematic, bitcoin works without trust adding such a trusted entity is a vulnerability. We can use a torrent for that and store the torrent's hash in the blockchain itself, maybe other blockchain like Namecoin or using Colored Coins.
- If we do download UTXO from a trusted party, every transaction can be validated using SVP. This way someone can "hide" money from you but it cannot fool you that transaction is confirmed on a blockchain.
- You can build the UTXO yourself incrementally, downloading the whole blockchain and keeping just the current UTXO. It will take the same amount of time but require less storage (about the maximum UTXO size).