bitcoin/bitcoin — pull request #3669 by gavinandresen (2014-02-13 17:47:45+00:00)
Title: Handle "dead" transactions properly

This introduces the notion of a "dead" transaction-- a transaction created by the wallet that is not in either the blockchain or the memory pool, and that (therefore) is unlikely to ever be confirmed.

In the RPC interface, these transactions were previously reported as confirmations : 0 -- with this change, they are reported as confirmations : -1 and category : "dead".

So if a transaction is mutated or double-spent, and the mutated version ends up being mined, listtransactions will show both. Transactions can come back from the dead if a blockchain re-org happens.

This is not intended to be a complete solution to all the malleability issues, but is a necessary first step.

@laanwj : can you review the use of GetDepthInMainChain() in WalletModel::getOutputs and WalletModel::listCoins? I'm not familiar with that part of the GUI code.