Post
Topic
Board Development & Technical Discussion
Re: Reducing the need for cold storage through self-blacklisting
by
QuinnHarris
on 03/12/2013, 23:50:31 UTC
I am going to restate what I think you want as an addition to transaction scripts.

This is a transaction output (scriptPubKey) that can be spent (used by a transaction input) in one of two ways with different keys for each way.  One key could be used in an input (scriptSig) immediately as we normally expect, this key would be held in cold storage.  The other key would require a special transaction be committed to the blockchain some number of blocks ago before it would be accepted (unblock transaction).  This special earlier transaction could be signed by the same key used in the later transaction.  In this case blacklisting is just a particular transaction output (scriptPubKey).

This could be done by adding an script op that would check for the special transaction already committed to the blockchain, or possibly require a certain special input in the spending transaction.  Both are predicated on information outside scriptSig and scriptPubKey unlike all existing ops.

The waiting period is not an insignificant impediment.  Other parties would have to wait the full unblacklist time before they could trust anything you send them.

I think this is plausible but I question if this is better than alternative options to protect against theft.

For this to be effective some system must be online monitoring the unblacklist transaction.  This system should differentiate between good and bad unblacklisting.  If the attacker compromised the private keys could they compromise the monitoring system?  If its a 3rd party service you still have to communicate the good unblacklisting likely requiring some authentication that could be compromised with the key.  Anything like passwords protecting access to the monitoring system could also just be used to protect the keys.

If the monitoring system doesn't differentiate between good and bad and notifies you about everything, wouldn't it be better to queue up the pending transactions and approve all the transactions periodically on some secure system like a trezor, offline computer or a 3rd party service.