The Mathematically Secure Way To Accept Zero Confirmation Transactions

reddit share twitter share facebook share google share linkedin share

Nowadays, most Bitcoin Exchanges still require at least three confirmations on a Bitcoin deposit before the depositor is credited the amount in his or her account and allowed to start trading.  The delay makes it hard for traders, and all Bitcoiners, to move their Bitcoin on the Bitcoin network as fast as they would often like to.

The intrinsic danger to accepting a zero confirmation transaction on the Bitcoin network, or any altcoin network, is that of the sender committing a double spend attack.  However, given the finite number of Bitcoin nodes at any given time, it is possible to use math and verify in real time that a second (double) spending does not and will not enter the Blockchain.

mathematically secure

There is a mathematically secure way to accept zero confirmation transactions; Photo from Matt Waite

More specifically, with every additional second a larger percentage of active Bitcoin nodes will have heard the original transaction and everyone viewing the blockchain can be increasingly certain that the transaction will be mined in the next block and receive one confirmation, then two, and so on and so forth.

What this means is that any Bitcoin transaction can be accepted with zero confirmations with a mathematically derived confidence level some refer to as “Transaction Confidence.”  This transaction confidence measure assures us that even if a double spend were attempted the original and correct transaction is already too heavily propagated to be overtaken.

This mathematically secure way to accept zero confirmation transactions is surprisingly already in use by some familiar Bitcoin services.

MyCelium

mycelium

Transaction Confidence Chart courtesy of /u/Puupsfred

 

MyCelium, a popular Android Bitcoin Wallet App, recently added a new feature to their Local Trader that implements this mathematically secure way to accept zero confirmation transactions on the Bitcoin network.  MyCelium plans to eventually provide all of their users with a transaction confidence graph expressed in a loading bar with percentages that allow acceptance of zero confirmation transactions.  Users have reported that the transaction confidence percentage reaches the high 90′s within seconds.

BitPay

For a long time, Bitcoiners have pondered how BitPay manages to confirm Bitcoin payments within their 15 minute window without fear of double spends if one confirmation in the blockchain could potentially take longer than 15 minutes.

It is now blatant that BitPay uses a similar algorithm to accept zero confirmation transactions on all of their Bitcoin business.  As of 2013, BitPay has done tens of thousands of Bitcoin transactions in this manner and has not had one instance of a double spend.

Now that BitPay’s secret is out, will more Bitcoin services implement this?

Already, some Bitcoin services such a Coinbase will allow a type of zero-confirmation transaction when Bitcoins are sent in-house from one registered user to another; however, this is a centralized method for near instantaneous Bitcoin transactions and does not scale elsewhere in the Bitcoin network.  With this new method already in use by BitPay, any existing large Bitcoin service from BTC-e to Electrum to Coinbase can reduce the amount of confirmations necessary on deposit.

I honestly can’t wait to see transaction confidence, as visualized by MyCelium, implemented everywhere that I use Bitcoin.  I’m tired of having to wait hours for my Bitcoins to be spendable!

Bitcoin ATMs should certainly implement this  method for added security and to cut the overall physical transaction time at the Bitcoin ATM.  In fact, some might even argue that this basic functionality should be added into the main Bitcoin wallet along with additional security measures at the node level to protect against DOS and Sybill attacks.

Also… Don’t be too surprised if/when your favorite altcoin service starts accepting zero confirmation transactions with this method.

reddit share twitter share facebook share google share linkedin share


9 Responses

  1. Justus Ranvier

    Be careful with your claims here.

    The method is only valid for certain types of unconfirmed transactions – unconfirmed transactions which spend confirmed outputs. Unconfirmed transactions spending unconfirmed outputs can be invalidated by transaction mutability and this approach does not account for that.

    In addition, it also assumes that all nodes will always prefer the first transaction seen. There is no guarentee this will remain the case. Nodes are free to apply policy they wish with regards to forwarding.

    • Avatar of Caleb Chen
      Caleb Chen

      Thank you for your comment Mr. Ranvier and yes, all of your points are very valid. This approach definitely needs to be coupled with selective node connections. Though I feel that there is a general incentive for nodes, and mining pools, to play by the rules and prefer the first transaction seen. You’re absolutely correct that there is no guarantee that this will remain the case and there have already been instances where it has not been (Specifically targeting those accepting zero confirmation transactions).

      Aren’t wallets going to try and spend older, confirmed, coins before unconfirmed ones anyway? I guess a determined attacker is un-phased by that though.

      I’ll make the assumptions and qualifiers to my claims clearer in the future; however, the fact remains that BitPay uses the methods we have discussed to accept zero confirmation transactions without a single problem.

  2. ZephramC

    Imagine there is a transaction with 99.9% confidence, propagated into almost all nodes in the network. Then someone creates double spend attempt and send it directly to the selected miner (or ming pool) node. That miner can be in that 0.1%. He can also collude with double-spender and although he knows about “legitimate” 99.9% confidence transaction he ignores it, intentionally does not include it in block and include double-spend attempt instead.
    As soon as the miner succeeds in first mining the next block (if he has 14% of hashrate this would happen once in 7 blocks on average) former 99.9% confidence transaction is invalidated.

  3. SergiD

    Nice article. Somehow I found it shocking that article writer Kyle Thorpey elaborates his theory that altcoins are useless, and on the other hand the problems of long confirmation times are so obvious to some. Probably not everybody dismisses so easily the x4 speed factor of Litecoin, for instance. I like this article for in my view it’s more about facts rather than sheer personal opinion.

    • Avatar of Kyle Torpey
      Kyle Torpey

      This article goes to my point that altcoins are useless. Accepting zero-confirmation transactions is relatively safe, and now it’s even safer. Are you going to wait at the cash register for 2.5 minutes waiting for a Litecoin confirmation? The security of a confirmation on all of these altcoins is also nowhere near the security found on one Bitcoin confirmation.

  4. Avatar of
    MayorLar

    I think this is exceptional news for the network and the Bitcoin ECO system IF IT IS TRUE.

    The world would change overnight for all of us.

    Small purchase could be processed quickly and have no delay , but larger transaction could be delayed for up to an hour! Sending $ 1.0M to France has different security needs then paying $.15 to read an article .

    We don’t need any of the alt coins nor any of the “other” coins if this proves to be true.

Leave a Reply