Hi!
I am working on an idea for an alt-coin that could ideally be used forever without its blockchain size constatly growing...
I think I had an idea for this alt-coin and I would love to know if it could work or not, and why.
This alt-coin is designed in a way that you only need to know the last X (lets say 2,016) blocks in order to know all you need to check your balance, send bitcoins, and do everything, and those blocks are not necessarily bigger than the blocks of bitcoin. That way we can keep pruning old blocks and keep only the last 2,016 blocks.
There is a problem to that: in order to be able to verify those 2,016 blocks you can get from the network, you need to keep at least the headers of all previous blocks to the first one, or if not, when given two valid chains by the network, you wouldn't know which one belongs to the valid blockchain.
My idea of solving that issue is the following:
Bitcoin calculates the blocks difficulty every 2,016 blocks. It increases the difficulty if the previous 2,015 blocks have been created very fast, and decreases it if they have been created too slow, in order to mantain a difficulty that causes the blocks to be created every 10 minutes.
My alt-coin would instead, every 2,016 blocks, calculate the new difficulty based on how far or how close the miner's clock is to the timestamp this block should have -> If the block 0 had a date of 1 Jan 0:00, then the block 1 was expected to have a date of 1 Jan 0:10, block 2 at 1 Jan 0:20, and so on. This way, we should be able to calculate the height of the blockchain right now by only checking our local time.
In this alt-coin, the blockchain would be pruned every 2,016 blocks, exactly at the block where a new difficulty is calculated. When you first connect to the network, you connect to some peers, and request them the last part of the blockchain, and they will reply you with the 2,016 blocks (and some more that where created recently and haven't yet reached 2,016). If any of them responds you with a chain that is too far in the past, or too far in the future, you drop it as invalid. If you are given more than one 2,016-chains of the same height, both apparently valid, you don't need to keep all the blockchain headers in order to check which one is valid and which one has been forged parallel to the valid blockchain, you just choose the one that has the highest bits value.
I guess this should work, as long as more than the 50% of the network CPU is owned by good people.
What do you think?