Stefan Thomas [ARCHIVE] on Nostr: 📅 Original date posted:2011-12-08 🗒️ Summary of this message: A proposal to ...
📅 Original date posted:2011-12-08
🗒️ Summary of this message: A proposal to include the hash of the block a transaction wants to appear after to prevent transaction reversals and ensure secure withdrawals. Hosted wallets should keep each account as separate public keys for better risk isolation.
📝 Original message:Hey Andy,
Bitcoin already does something which in practice has exactly this
effect: If a transaction is reversed, any transactions based on its
outputs are rejected.
Hosted wallets can make use of this - but as you correctly point out,
depending on the service, it can get tricky. What if I exchange the
money to USD and back before withdrawing? You could have an algorithm
where MtGox prefers to spend outputs from your own deposits as the
inputs for your withdrawals, it's not trivial though and never 100% secure.
I have trouble thinking of a good example where you need an explicit
block dependency as you describe. The only times you'd want to use this
dependency of transactions on specific previous transactions is when you
can clearly and easily associate the money. But if you can clearly and
easily associate the money, you might as well just relate the
transactions (use the outputs from the deposit transaction as the inputs
of the withdrawal transaction.)
This is btw something that would strongly agree with: Hosted wallets
should absolutely keep each account as separate public keys. With that
you lose free and instant internal transactions, but you gain instant
deposits and much better risk isolation.
This is just my view. Thanks and keep the thought-provoking stuff coming!
Cheers,
Stefan
On 12/8/2011 11:47 AM, Andy Parkins wrote:
> Hello,
>
> Another of my crazy ideas:
>
> When a transaction is first broadcast, it should include the hash of the block
> it wants to appear after, let's call it's basis block. That block can be
> anything the claimer wants; but it allows the miners to add this condition:
> the transactions outputs a new transaction claims must be before the new
> transaction's basis block.
>
> Consider this block chain fork:
>
> * -- * -- F -- * -- 1 -- 4 -- 5
> \
> * -- 2 -- 3
>
> Let's say in block 2; I transfer coins from address A to Mt.Gox (or any other
> pooled-account online wallet). In block 1 I transfer credit from address A to
> address B. In block 3 I transfer credit from Mt.Gox's pool to address B.
>
> The chain at 3 races out first, but eventually the chain at 5 becomes "the
> one". If Mt.Gox are foolish enough to broadcast my withdrawl in 3; there is
> nothing to stop that same withdrawl making it into 4 (since it comes from a
> pooled fund address). Therefore Mt.Gox can't allow such a fast turnaround and
> must wait for six confirmations of 2 before allowing use of the funds. That
> is an inconvenience for all the honest users.
>
> With my proposed change, the Mt.Gox transaction broadcast at 3 would include
> "block 2" as its basis block. Therefore that transaction could never make it
> into block 4, as no miner will include a transaction based on block 2 in the
> block 4 chain.
>
> Mt.Gox is probably not a good example, as they have problems with fiat to deal
> with too. However, for other online wallet accounts it would allow faster
> acceptance of received funds, since there is no danger of loss should an
> attacker arrange a reorganisation.
>
> This basis block would be optional (implied by the input transactions if it
> isn't present); and would only need storing for the pending transactions, so
> no incompatible change is needed to the block format.
>
>
>
> Andy
Published at
2023-06-07 02:42:51Event JSON
{
"id": "71464a91973580b5d092670fad7d3f0cf52b72b2291c3f3f5c71d44f444d53e8",
"pubkey": "49f07bd32c0108a2903a0fa59f904ed312e0ea427d3269eb5fa910eb4a9e22c4",
"created_at": 1686105771,
"kind": 1,
"tags": [
[
"e",
"8f9a003a4e73153be5446636a8273274a636ac7ab0ed2daca54506b59b151886",
"",
"root"
],
[
"e",
"7ae019a055c3043d7f68f210051a82826e9bda7a11c28d59fbc3ca0706f59481",
"",
"reply"
],
[
"p",
"99bec497728c848e65549d1a5257d08de97621edcb4b77073269a45dac708d59"
]
],
"content": "📅 Original date posted:2011-12-08\n🗒️ Summary of this message: A proposal to include the hash of the block a transaction wants to appear after to prevent transaction reversals and ensure secure withdrawals. Hosted wallets should keep each account as separate public keys for better risk isolation.\n📝 Original message:Hey Andy,\n\nBitcoin already does something which in practice has exactly this \neffect: If a transaction is reversed, any transactions based on its \noutputs are rejected.\n\nHosted wallets can make use of this - but as you correctly point out, \ndepending on the service, it can get tricky. What if I exchange the \nmoney to USD and back before withdrawing? You could have an algorithm \nwhere MtGox prefers to spend outputs from your own deposits as the \ninputs for your withdrawals, it's not trivial though and never 100% secure.\n\nI have trouble thinking of a good example where you need an explicit \nblock dependency as you describe. The only times you'd want to use this \ndependency of transactions on specific previous transactions is when you \ncan clearly and easily associate the money. But if you can clearly and \neasily associate the money, you might as well just relate the \ntransactions (use the outputs from the deposit transaction as the inputs \nof the withdrawal transaction.)\n\nThis is btw something that would strongly agree with: Hosted wallets \nshould absolutely keep each account as separate public keys. With that \nyou lose free and instant internal transactions, but you gain instant \ndeposits and much better risk isolation.\n\nThis is just my view. Thanks and keep the thought-provoking stuff coming!\n\nCheers,\n\nStefan\n\nOn 12/8/2011 11:47 AM, Andy Parkins wrote:\n\u003e Hello,\n\u003e\n\u003e Another of my crazy ideas:\n\u003e\n\u003e When a transaction is first broadcast, it should include the hash of the block\n\u003e it wants to appear after, let's call it's basis block. That block can be\n\u003e anything the claimer wants; but it allows the miners to add this condition:\n\u003e the transactions outputs a new transaction claims must be before the new\n\u003e transaction's basis block.\n\u003e\n\u003e Consider this block chain fork:\n\u003e\n\u003e * -- * -- F -- * -- 1 -- 4 -- 5\n\u003e \\\n\u003e * -- 2 -- 3\n\u003e\n\u003e Let's say in block 2; I transfer coins from address A to Mt.Gox (or any other\n\u003e pooled-account online wallet). In block 1 I transfer credit from address A to\n\u003e address B. In block 3 I transfer credit from Mt.Gox's pool to address B.\n\u003e\n\u003e The chain at 3 races out first, but eventually the chain at 5 becomes \"the\n\u003e one\". If Mt.Gox are foolish enough to broadcast my withdrawl in 3; there is\n\u003e nothing to stop that same withdrawl making it into 4 (since it comes from a\n\u003e pooled fund address). Therefore Mt.Gox can't allow such a fast turnaround and\n\u003e must wait for six confirmations of 2 before allowing use of the funds. That\n\u003e is an inconvenience for all the honest users.\n\u003e\n\u003e With my proposed change, the Mt.Gox transaction broadcast at 3 would include\n\u003e \"block 2\" as its basis block. Therefore that transaction could never make it\n\u003e into block 4, as no miner will include a transaction based on block 2 in the\n\u003e block 4 chain.\n\u003e\n\u003e Mt.Gox is probably not a good example, as they have problems with fiat to deal\n\u003e with too. However, for other online wallet accounts it would allow faster\n\u003e acceptance of received funds, since there is no danger of loss should an\n\u003e attacker arrange a reorganisation.\n\u003e\n\u003e This basis block would be optional (implied by the input transactions if it\n\u003e isn't present); and would only need storing for the pending transactions, so\n\u003e no incompatible change is needed to the block format.\n\u003e\n\u003e\n\u003e\n\u003e Andy",
"sig": "c4f827a56111c6f8887d1c740629fad944309a6d2e3ba9cce74bb466eb65974aad356b91a0d55e6b58e2f6870034a24c56ecdd802966cc5fe2bc0a3c756400ed"
}