Attack vector:
Scammer detects incoming buy and immediately sends another buy transaction with a higher fee. The scammer’s tx gets priority and the legit buyer loses his bitcoins.
Possible solutions:
1. Pre-payment before full payment
This requires a protocol change. The logic is simple. If less than a full dispense is detected, allow up to 12 blocks for the second tx. Perfectly safe as the protocol keeps the token on escrow. The buyer, if not trusting the seller, can thus make a tiny pre-payment first, wait for it to confirm, and then make the full payment. If trust is not an issue, pre-payment is not necessary. The buyer can always make the full payment at once.
2. Trusted middleman
This will not require a protocol change. Someone trustworthy publishes a list of new addresses. Anyone can set up their dispenser on one of these addresses. After a successful dispense, the middleman forwards BTC to the seller. In case of an unsuccessful dispense, the buyer is reimbursed. A small fee can be charged, so this is even a potential business model. A multisig address can be used, where the middleman can exist of several parties.
3. Verified dispensers
This will not require a protocol change. Someone publishes a list of dispensers with good track records, or dispensers announced by, for example, twitter accounts. The problem with this solution is that for new users it will take time to build reputation, and that you can never be absolutely certain that someone “trustworthy” won’t pull an exit scam.
Thoughts? Other solutions?