SUMMARY:
In the Bitcoin transactions with small fee and low priority inputs can slow a speed of transaction confirmation and retranslations.
An attacker can use it!
Conditions:
1) A sum of transaction should be small (about 0.01BTC)
2) After invoice the attacker should make & send a transaction with small fee (<0.00001 BTC/kb,
https://en.bitcoin.it/wiki/Transaction_fee#Including_in_Blocks) and low prioroty inputs (it can be achieved by sending bitcoins before to other address and to do new transaction immediately after first confirmation from outputs of previous transaction)
3) A shop (which allows 0-confirmed transaction) sees transaction and release service or goods.
4) After through some time (it can be through 1-4 hours even! I did it after 4 hours) an attacker should send in network other transaction with normal fee (>=0.0001BTC).
Because second transaction has fee more than recommened 0.0001BTC, it has a huge chance to get into the near block (
https://en.bitcoin.it/wiki/Transaction_fee#Including_in_Blocks)
5) The attack can be done by using common clients: Bitcoin Core & and some Bitcoin wallets where fee can be changed (Wallet32 @ Android)
As solution i see here two ways:
1) A shop should release service or goods after as minimum 1 confirmation
OR
2) If a shop wants make a quickly payments and continues to work with 0-confirmed transaction it should analyze a probability of success fast transaction:
a) a fee of transaction should be >= 0.0001 BTC (for quickly retranslate it to miners through Bitcoin network)
b) Transaction inputs should refer to age outputs of previous transaction.
c) Transaction should not be big size ("priority = sum(input_value_in_base_units * input_age)/size_in_bytes")
If it does not satisfy the requirements of these conitions a shop should wait 1 confirmation.
a & b & c points are described here:
https://en.bitcoin.it/wiki/Transaction_fee#Reference_ImplementationBut these rules can be changed with new versions of Bitcoin Core.
I saw many shops where 0-confirmed is ok. These shops use Bitpay.com, Alfacoins.com and other billings. They sell mobile recharging, domains and bank account recharging (Yes!)
I love the Bitcoin and i love quickly micropayments!
UPDATED: I found similar topic from 2012:
https://bitcointalksearch.org/topic/m.1405516