Something I've been thinking about


[Last edited on Thursday, May 5, at 1:28AM PST]

Consider the Bitcoin protocol before its PoW consensus mechanism was invented. A transaction output should only be spent once in a single transaction, but a malicious user can create an unlimited number of transactions that spend the same output and pay it to any address, and the nodes of the network have no means of independently but unanimously identifying which one is valid. This is the essence of the double-spend problem.

Bitcoin's solution is to resolve double-spend attacks by compared the inputs of groups of transactions (blocks) to make sure none of them have duplicate inputs. But this is an extremely slow and energy consuming process.

If the goal is to prevent double-spend attacks, it must not be possible for senders to create and publish multiple transactions that spend the same output and pay to different addresses. The solution is for payment addresses to be determined by the transaction's own data instead of generated externally.

The problem then is the absence of ownership. The new payment addresses can't be used as private keys in the dual-key method because they're published. They can't be brute-forced into public keys because it won't be safe if it's too easy, and it won't be practical if it's too hard. They can't be paired with random numbers without introducing the double-spend exploit. And, the addition of any field to the transaction template that functions like a nonce would also introduce the double-spend exploit.

I'm sharing this because I've hit a very hard wall, but somebody might know something I don't. If we fix this, we'll have the holy grail of crypto.