Please login or register.

Do we need the history?

In order to feel safe when accepting a digital asset, we want to be able to make sure that the asset has not already been transferred to another party (prevent double-spends). We do this traditionally by keeping a record of every transaction ever made. At least in crypto. In the real world, after enough time we assume that the "old" record of who owned what can be ignored because some authority says otherwise (often the result of war). In crypto, we like to be more honest and be able to prove it, and this is why we have a 60 GB database of transactions for Monero.

I propose a more efficient solution. We really only need the full "UTXO Set" (Unspent Transaction Output Set), but we like to keep enough data to verify that it's accurate. If you traded XMR for something, and you've already given that something to the other person, then you have accepted that all the transactions from the creation of the XMR you got to the one where it came to you are valid. You do that because you trust the software to validate all those transactions. Nearly all of us trust the software without reviewing it, and that's because we know anyone can examine it and we believe that prevents anyone from corrupting it. If you have the software you may have made sure it was safe according to someone with a PGP key. You'd do that by verifying that the fingerprint of the software is the fingerprint that the someone signed with their PGP Key.

I propose that the same logic be used to limit the number of blocks we have to keep in order to validate transactions. If we have the word (PGP signatures) of a few trusted people that the UTXO Set's fingerprint as of block X, and the UTXO Set of block X is available, then we can ditch all the blocks from 0 to X-1. More pertinently, we can start a full node and start mining without waiting to download and verify all those blocks.

I also like the idea of being able to recognize a "Very Large Amount of Data" ('VLAD') without relying on a stored fingerprint of some kind. For example, someone, anyone, could make a fingerprint of the full, canonically ordered UTXO Set as of block 1,500,000 and then run it through something like this. If enough people are familiar with the graphical display resulting from that, then you could take what someone CLAIMS is the full UTXO Set as of block 1,500,000, calculate the fingerprint, and run it through the program and see if the results match people's description. Of course the fingerprint itself works too, but it's too much data for a human being to easily recognize, so relying on the fingerprint requires that you store it and wherever you store it, you can't be sure it won't be changed.

Replies: 0