public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Andy Parkins <andyparkins@gmail.com>
To: bitcoin-development@lists.sourceforge.net
Subject: [Bitcoin-development] Lowering confirmation requirements and preventing double spends
Date: Thu, 8 Dec 2011 10:47:08 +0000	[thread overview]
Message-ID: <201112081047.09082.andyparkins@gmail.com> (raw)

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
-- 
Dr Andy Parkins
andyparkins@gmail.com



             reply	other threads:[~2011-12-08 10:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-08 10:47 Andy Parkins [this message]
2011-12-08 22:43 ` [Bitcoin-development] Lowering confirmation requirements and preventing double spends Stefan Thomas
2011-12-09  9:50   ` Andy Parkins

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201112081047.09082.andyparkins@gmail.com \
    --to=andyparkins@gmail.com \
    --cc=bitcoin-development@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox