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