<oembed><type>rich</type><version>1.0</version><author_name>npub12ftsvulestm9ztkjkgkl7cfurm6u6dau835evhcs3jwxyctn4y6qsk0jt6</author_name><author_url>https://nostr.ae/npub12ftsvulestm9ztkjkgkl7cfurm6u6dau835evhcs3jwxyctn4y6qsk0jt6</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2016-08-07&#xA;📝 Original message:I&#39;m wondering if we&#39;re fully on the same page here. What I was thinking was&#xA;that this protection mechanism would be applied to the coins in the hot&#xA;wallet (I wasn&#39;t talking about moving coins from the cold wallet to the hot&#xA;wallet -- though such a mechanism is also needed.)&#xA;&#xA;With the hot wallet you would have an output script that only allowed coins&#xA;to be sent to a new transaction whose output script was then only&#xA;redeemable after N confirmations (the output is relative time-locked) but&#xA;which can also be recovered to a fixed fail-safe address before the&#xA;time-lock is reached (exactly like TierNolan already listed only the&#xA;time-locked destination shouldn&#39;t be completely fixed.) So the private key&#xA;for this hot wallet can still sign valid transactions to withdraw coins to&#xA;any known destination and these transactions still reach the blockchain.&#xA;&#xA;The key difference from a regular transaction is that the destination only&#xA;has access to the coins -after- the relative time-lock is reached (N blocks&#xA;after first confirm) so everyone knows where withdrawals are suppose to be&#xA;going and how many coins are being withdrawn at any given time. Deposits to&#xA;the hot wallet would therefore need to be encumbered by the same protection&#xA;so that from then on this time-lock to redeem coins can be applied to every&#xA;new transaction trying to move coins (withdrawn by a user of the exchange&#xA;or sent to the cold wallet.)&#xA;&#xA;Notice we don&#39;t care about the destination in the TX script for the hot&#xA;wallet because to process user&#39;s withdrawals we can&#39;t know ahead of time&#xA;where they need to be sent (so it isn&#39;t possible to use a fixed address&#xA;here – though you might want to remove the clearing phase and set a fixed&#xA;address for coins sent from the hot wallet to the cold wallet.) The benefit&#xA;here comes from being able to see what withdrawals are being cleared,&#xA;matching those up to our expectations, and being able to &#34;cancel&#34;&#xA;withdrawals if they look suspicious, and you get the benefits for transfers&#xA;made from the hot wallet to the cold wallet and visa-versa.&#xA;&#xA;&#xA;This approach is good for a number of crucial services:&#xA;&#xA;1. Wallets could be built that grouped coins into different &#34;accounts&#34; with&#xA;different time-frames required for clearing / unlocking coins. Your savings&#xA;or investment account would say -- take up to a week to clear -- whereas&#xA;your everyday account used for smaller purchases (with less money) would&#xA;only take a few hours. This could all be linked up to services that&#xA;notified you of your money being moved + made any phone calls needed to&#xA;verify any larger transfers.&#xA;&#xA;The service could also be entrusted with the “cancellation” key which can&#xA;only be used to move money to your offline fail-safe address. This would be&#xA;quite an interesting way to mitigate fraud without the user having to be&#xA;trusted to do anything (except I suppose – not storing their recovery keys&#xA;online … but this could be partially solved with BIP 32-style “master”&#xA;public keys + hardware wallets + multi-sig, N factor auth, etc ...)&#xA;&#xA;2. Gambling websites that process a lot of Bitcoins also have a hot wallet&#xA;which could be better protected by this.&#xA;&#xA;3. Various other e-commerce websites also accept Bitcoins directly. (Deep&#xA;web markets come to mind -- hey, people breaking the law need good security&#xA;too.)&#xA;&#xA;4. Provable dead man&#39;s switches on the protocol level is another idea -- no&#xA;need to keep special time-locked transactions around and rely on them to be&#xA;broadcast = more reliable escrow services.&#xA;&#xA;5. And obviously exchange hot (and cold) wallets - enemy number 1.&#xA;&#xA;I hope that makes sense. I think I initially managed to confuse a lot of&#xA;people by talking about revoking transactions / “settlement layers”, etc.&#xA;But IMO: all of this needs to take place on the blockchain with a new set&#xA;of OP_CODES and other than the fixed address issue with OP_SPENDTO, I think&#xA;the general idea would still work.&#xA;&#xA;&#xA;tl; dr, A pseudo-reversal mechanism for transactions would mean that stolen&#xA;private keys were no longer such an issue. This is desperately needed for&#xA;exchanges, wallets, and other services that are forced to manage private&#xA;keys, and whose users (I argue) already expect for this to be possible (or&#xA;at least will when they&#39;re hacked.)&#xA;&#xA;&#xA;&#xA;&#xA;On Sat, Aug 6, 2016 at 9:13 PM, Tier Nolan via bitcoin-dev &lt;&#xA;bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&#xA;&gt; On Sat, Aug 6, 2016 at 11:39 AM, s7r via bitcoin-dev &lt;bitcoin-dev at lists.&#xA;&gt; linuxfoundation.org&gt; wrote:&#xA;&gt;&#xA;&gt;&gt; * reversal of transactions is impossible&#xA;&gt;&gt;&#xA;&gt;&#xA;&gt; I think it would be more accurate to say that the requirement is that&#xA;&gt; reversal doesn&#39;t happen unexpectedly.&#xA;&gt;&#xA;&gt; If it is clear in the script that reversal is possible, then obviously the&#xA;&gt; recipient can take that into consideration.&#xA;&gt;&#xA;&gt;&#xA;&gt;&gt; * keep private keys private and safe. Lose them, it&#39;s like losing cash,&#xA;&gt;&gt; you can just forget about it.&#xA;&gt;&gt;&#xA;&gt;&#xA;&gt; Key management is a thing.  Managing risk by keeping some keys offline is&#xA;&gt; an important part of that.&#xA;&gt;&#xA;&gt;&#xA;&gt;&gt; * while we try hard to make 0-conf as safe as possible (if there&#39;s no&#xA;&gt;&gt; RBF flag on the transaction), we make it almost impossible or very very&#xA;&gt;&gt; expensive to reverse a confirmed transaction.&#xA;&gt;&gt;&#xA;&gt;&#xA;&gt; BitGo has an &#34;instant&#34; system where they promise to only sign one&#xA;&gt; transaction for a given output.  If you trust BitGo, then this is safe from&#xA;&gt; double spending, since a double spender can&#39;t sign two transactions.&#xA;&gt;&#xA;&gt; If BitGo had actually implemented a daily withdrawal limit, then their&#xA;&gt; system ends up similar to cold storage.  Only 10% of the funds at Bitfinex&#xA;&gt; could have been withdrawn before manual intervention was required (with&#xA;&gt; offline keys).&#xA;&gt;&#xA;&gt; Who will accept&#xA;&gt;&gt; such an input and treat it as a payment if it can be reversed during the&#xA;&gt;&gt; settlement layer?&#xA;&gt;&#xA;&gt;&#xA;&gt; Obviously, if a payment is reversible, then you treat it as a reversible&#xA;&gt; payment.  The protection here relates to moving coins from the equivalent&#xA;&gt; of cold storage to hot storage.&#xA;&gt;&#xA;&gt; It is OK if it takes longer, since security is more important than&#xA;&gt; convenience for coins in cold storage.&#xA;&gt;&#xA;&gt;&#xA;&gt;&gt; The linked page describes that merchants will never accept payments from&#xA;&gt;&gt; &#39;vaults&#39;, and it will take 24 hours for coins to be irreversible moved&#xA;&gt;&gt; outside the &#39;vault&#39;.&#xA;&gt;&#xA;&gt;&#xA;&gt; This relates to the reserves held by the exchange.  A portion of the funds&#xA;&gt; are in hot storage with live keys.  These funds can be stolen by anyone who&#xA;&gt; gets access to the servers.  The remaining funds are held in cold storage&#xA;&gt; and they cannot be accessed unless you have the offline keys.  These funds&#xA;&gt; are supposed to be hard to reach and require manual intervention.&#xA;&gt;&#xA;&gt; I think this is a wrong approach. hacks and big losses are sad, but all&#xA;&gt;&gt; the time users / exchanges are to blame for wrong implementations or&#xA;&gt;&gt; terrible security practices.&#xA;&gt;&gt;&#xA;&gt;&#xA;&gt; Setting up offline keys to act as firebreaks is part of good security&#xA;&gt; practices.&#xA;&gt;&#xA;&gt; _______________________________________________&#xA;&gt; bitcoin-dev mailing list&#xA;&gt; bitcoin-dev at lists.linuxfoundation.org&#xA;&gt; https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#xA;&gt;&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20160807/c4d377f1/attachment-0001.html&gt;</html></oembed>