Subject: Re: [Bitcoin-development] Duplicate transactions vulnerability

From: Pieter Wuille <[email-masked]>
Date: Thu, 1 Mar 2012 15:30:30 +0100

On Thu, Mar 01, 2012 at 01:09:02PM +0000, Ben Reeves wrote:
> One more thing to add. The implementation in the reference patch fixes
> the blockchain forking issue however by still allowing spent coinbases
> to be disconnected patched clients are still vulnerable to blockchain
> corruption. While not an immediate issue it would mean
> LoadBlockIndex() would error on restart and could cause problems for
> new clients during the initial blockchain download.

I don't understand this.

> Is there a reason not to disallow duplicate coinbases entirely?

Just disallowing duplicate coinbases is possible, but it requires keeping a
set of all coinbases transaction around until infinity. That's not really a problem,
but it can be avoided. One very reasonable proposed solution is adding the block
height to the coinbase. However, as coinbases are used for all kinds of things
already, this is harder to roll out network-wide. Hence, first this "emergency"
solution that already prevents (afaik) all practical attacks, and in a later step
forcing unique coinbases, so that transactions can be assumed to be unique
identifiable by their hash again.

-- 
Pieter