Well for starters total bitcoin days destroyed is something whose supply isn't limited in a very useful way.
The problem with bitcoin days destroyed as a measure of chain priority is that If you are making an attack chain, and you want your coins to earn more credit for that chain than they do in the one you're trying to displace, you just have to make sure that all the coins you control are spent in the last block of the attack chain. You can spend them (to another address you control) in every block before that, too, if you feel like it, but it won't matter; they'll just start accumulating more bitcoin days to destroy at the new address. The total bitcoin days destroyed represented by the coins you control is just the product of the time from the start of the attack chain to the moment the coins get spent *LAST*.
Similarly, you want to avoid presenting the opportunity for an attacker to combine priority from coins owned by him (or by anyone who'd give him access to their old "now-useless" keys for coins that are spent in the real chain) at different times into priority for purposes of a single attack.
What I'm trying to produce is a situation in which the attacker cannot make any coins count more priority for the attack chain than they do for the legitimate chain. Therefore it mustn't matter at what block height he spends the coins he controls, nor whether he re-spends subsequent outputs created by those spends, etc, up to the last block. So it really isn't the same as bitcoin-days destroyed.
A spend of a coin in a given block chain can be read as an irrevocable event that guarantees the owner of the coin accepted that block chain as legitimate at the time.
Because new txOuts created after the fork can be created at will (out of old txouts) in an attack chain, there's no point in counting them.
Because any coins created after the fork will be controlled by the attacker in the attack chain, you actively screw yourself over if you count spends of them for chain goodness.
Because replaying transactions in a new chain should not allow the attacker to add priority to a bogus chain, each transaction record would have to be extended to contain a block hash, just to make sure that it counts as support for the chain it's in, and not as misplaced or replayed support for some other chain. This means that clients would have to commit replacement transactions after a reorg, instead of just taking transactions back to the memory pool to find a place in the new chain.
Because any conflicting transactions between the two forks are either replacement transactions (so it doesn't matter which chain they're accepted in) or controlled by the attacker (so you don't want to give him any control over which chain they're accepted in), there's no point in counting them for chain goodness. Otherwise the attacker could use a spend in one chain only to add priority to the side of a fork he wants to 'win' because it contains a double spend of some other coin. This is especially true of conflicting transactions attempting to spend intersecting but nonidentical sets of tXouts. If a 10000- coin transaction in one chain conflicts because of a single common txIn with a 1-coin transaction in the other chain, you count neither tx.
Because the attacker can generate more 'bitcoin days destroyed' with the same coins in the attack chain by just putting the spends of them into later blocks, you put tools into the hands of the attacker if you count them. They're nice for calculating the priority of individual transactions where there's no conflict to resolve, but not so nice for calculating the priority of the blockchains.
Ultimately, the only 'finite resource' I've come up with so far that is finite
in the way we want it to be, is the TxOuts that exist at the fork point. Whichever chain has had more of those coins spent in it is the chain created by the majority of the stake that existed at that time.
The only way the attacker can use his 'stake' to generate more priority for the attack chain than for the main chain, under that measure, is to spend his coins in the attack chain while keeping them unspent in the main chain. And if he does that, then the attacker cannot be executing a double spend.
Whatever 'old keys' the attacker may be able to get from others will be keys to TxOuts that they have already spent; by using them to create fake spends in the attack chain, he cannot (must not be able to) add any more priority to the attack chain than the genuine spends add to the main chain.
I have no qualms with the energy spent on PoW, and I see rewarding new coins to those who do work as the ideal distribution mechanism. But I am interested in theoretical discussions about how the cost and difficulty of an attack can be increased, especially in the distant future when the mining subsidy is largely over.
Well, my point is that if we're serious about proof-of-stake, "doing the work"
means doing transactions that prove your stake supported a particular chain. In a Proof-of-stake universe that, and not hashing, is what keeps the chain secure. And by paying 'interest' on coins transacted in a chain, we
would be paying exactly the people who did the work to secure the chain.
Are you increasing security in one area by decreasing it in another? Could SPV clients could work with either technique? Does some alt-coin already do something like this?
"Decreasing security in some other way" seems quite likely, unfortunately. While I'm reasonably confident in the above as a general measure of chain goodness that isn't vulnerable to the nothing-at-stake issue, I don't know if it can really function as the *only* measure of chain goodness. I haven't provided for any real control over who gets to build the next block and when. And if the attacker can find any way to control that - building N blocks in a row at a time of his own choosing - he is quite likely to find a new way to mount an attack.
In all, no, this measure of chain goodness isn't a solution to the whole problem. As I said at the outset it's still awfully sensitive to large transactions. It's an important part of a solution but it isn't a solution of itself.
SPV clients shouldn't have trouble unless trying to resolve a very deep fork -- and that's the same circumstance where they have trouble now. They'd be doing an algebra problem instead of checking hashes - but it wouldn't be more difficult.
I don't know of an alt-coin that is using anything really like this measure of chain goodness. It's a worthwhile thing to try but I still feel like it's "not ready for prime time" until it provides a better way to determine who gets a chance to form each next block.
When I finish working out its kinks it'll probably be one of my 'Cryptocurrency 101' blog posts. But I don't consider it to be quite unkinked just yet.