It sounds like you could achieve the kind of set up you are looking for with a 2FA wallet. It's not exactly the same as freezing an address, but it would achieve a very similar outcome:
I have 2FA set up with paypal, but it's a real pain in the ass. Everytime I login I have to go to my authenticator and get a 6 digit code. But I do it because someone actually logged into my paypal account once and tried to transfer alot of money straight out of my bank account to another country.
Coinbase already offers something like this with their 2FA system. You can "lock" your Coinbase account with 2FA, and then they will refuse to send any transactions on your behalf unless you provide the appropriate 2FA value to "unlock" your account for that single transaction.
I trust coinbase with the $3 i earn here and there. nothing more. in general, i dont place too high a premium on exchanges. they are useful for getting crytpo but i like to get it the helll out of there asap.
What i say it won't work if you use private key for freeze/unfreeze address and spend your Bitcoin. The hacker who have your private key will simply unfreeze and spend your Bitcoin.
Yeah that's a good point. So what you're saying is we don't want the freeze/unfreeze feature to be solely dependant upon knowing the particular bitcoin addresse's private key. I think I see what you're saying. Now the question is, how are we going to implement it then ?
1) Bitcoin address X wants to add the freeze feature. So it generates a special bitcoin address F.
2) This new address F will control the state of address X.
3) When the user wants to freeze address X, they send a transaction to address X using a special opcode.
4) The first time a user freezes their address X using address F, miners will create a record in a special database that lists address X along with its related controlling address F. A flag field will be toggled to "1" which will represent the frozen state.
5) If a transaction is ever attempted from address X in the frozen state, miners will reject it because they will first consult their database and see that address X is in the frozen state. Assuming no other reasons for which the transaction would be invalid, they can provide an error code indicating the address is frozen and thus the transaction cannot be completed.
6) When the user wants to unfreeze address X, they just send a transaction to address X from address F using the same opcode.
7) Miners will update their database and update the record for address X by toggling its flag field to "0" which will represent the unfrozen state.
If a transaction is ever attempted from address X in the unfrozen state, miners will first consult their database and see that address X is in the unfrozen state and then continue to process the transaction as normal. If it passes all the other consensus rules then it will be accepted.
Do you guys think this would work?
I spent the better part of a day coming up with it so I sure hope so! Let's turn this baby in to a BIP.
[moderator's note: consecutive posts merged]