What if you have 2 nodes N1 and N2. And 2 users u1 and u2.
Let's say the size of the blockchain is 10K blocks.
For simplicity reasons, let's say that N
1 stores 50% of the blockchain block body and N
2 also stores 50% of the blockchain block body.
Besides these nodes storing a fraction of the blockchain blocks' body, they will also store the full blockchain block headers with which they can verify if the blockchain block body they received is valid.
All the previous transactions of u1 are on node N1 and all the previous transactions of user u2 are on node N2.
User u1 creates a transaction to transfer amount A to user u2.
1. Where to put this transaction, on which node?
2. How these nodes check the UTXO of users u1 and u2 so that there is no double spending, taking into a count both nodes don't trust each other?
1. In a peer-to-peer network like Bitcoin, it is only needed to send the transaction to one node who will broadcast it to the rest of the network.
2. In principle, N
1 could, by request of
2 or any other user say that U
1 sent 10x their actual amount but this can be detected.
Since all nodes have a copy of the blockchain block header which does not take up much space, they can verify if the block body is valid or if it was changed by comparing the Merkle Root on the block header with the received block body's Merkle Root.
In this kind of system, full blockchain nodes would also be possible and they would speed up the system.
A normal user has no reason to run a full blockchain node but big companies such as Coinbase would need to have these nodes running because it would speed up the time it requires to check if a payment is valid and it would use less bandwidth on their system.
I would love to create a proof of concept of this, I believe it would spark a lot more interest but I lack free time and coding skills. This may be something I could release in the future.