I should look closer to your proposal.
It's not my idea, the OP in that thread thought of it.
For now I have one question:
Does "up" link points to future? If so - is it included in block hash or can it be falsified?
No, they always points backwards.
To determine where to point the up link.
- count the number of leading zeros on the previous block's hash (i.e. the block you plan to build on top of)
- starting from the block before that, find the first block with more leading zeros
- point to the block one after that
So, if the blocks had leading zeros
A: 11(up = Genesis)
B: 10 (up = Genesis)
C: 20 (up = B) (Not both prev and up point at B)
D: 10 (up = Genesis)
E: 10 (up = D)
F: 10 (up = D)
G: 10 (up = D)
H: 15 (up = D)
I: 10 (up = D)
J: 10 (up = I)
K: 10 (up = I)
The for block L, the links would be
prev: K
up: I
The reason is that H has more leading zeros than K. You don't link to C, even though it has more leading zeros. Once you find that block, the up link points to the one after that.
So, finding the best block
stating at K, follow up link, until up link points to genesis
- follow up link to get to I (prev now point at H, so found block with 15 leading zeros)
- follow up link to get to D (prev now points at C, so found block with 20 leading zeros)
- up for D link points to genesis, so break from loop
follow D's previous link to get C which is the best block
You can also find all blocks with more than n leading zeros by following the previous link any time you find a block with more than that number of leading zeros.